import pickle

# Chargement des données.
fid = open('C:/Users/claire.loupias/Desktop/wooldridge23.pkl', 'rb')
alldatasets = pickle.load(fid)
fid.close()

# Ouverture de la base de données.
dataset = alldatasets['meap01']
#
# Question 1.
#

math4= dataset.math4 # Pourcentage d'élèves avec un niveau satisfaisant en maths (4th grade)

maxmath4 = math4.max()
minmath4 = math4.min()

print("Pourcentage maximal d'élèves avec un niveau satisfaisant en maths : "+str(maxmath4))
print("Pourcentage minimal d'élèves avec un niveau satisfaisant en maths : "+str(minmath4))


#
# Question 2.
#

nbest = sum(math4==maxmath4) # Nb. d'école où le % de réussite atteint le maximum.
pbest = 100*nbest/math4.size        # Pourcentage

print("Le nombre d'écoles obtenant le taux de réussite maximal en maths est "+str(nbest)+","
      " soit "+f'{pbest:.2f}'+" % des écoles.")


#
# Question 3.
#

n50 = sum(math4==50)

print("Le nombre d'écoles obtenant un taux de réussite en maths exactement égal à "
      "50 % est "+str(n50)+'.')


#
# Question 4.
#

read4= dataset.read4 # Pourcentage d'élèves avec un niveau satisfaisant en lecture (4th grade)

mmath = math4.mean()
mread = read4.mean()

print('Le taux de réussite moyen en maths est '+f'{mmath:.2f}'+' %.')
print('Le taux de réussite moyen en lecture est '+f'{mread:.2f}'+' %.')


#
# Question 5.
#

import math # Pour calculer la racine carrée (utilisée dans l'expression de la corrélation)
from statistics import variance, mean, stdev

vmath = variance(math4)
vread = variance(read4)
covariance = sum((math4-mean(math4))*(read4-mean(read4)))/(math4.size-1) # covariance
correlation = covariance/math.sqrt(vmath*vread)                          # corrélation

print("La corrélation entre les taux de réussite en maths et en lecture"
      " est "+f'{correlation:.2f}')


#
# Question 6.
#

exppp = dataset.exppp

mexppp = mean(exppp)
sexppp = stdev(exppp)

print('La dépense moyenne par élève est '+f'{mexppp:.2f}'+'.')
print("L'écart type de la dépense par élève est "+f'{sexppp:.2f}'+'.')


#
# Question 7.
#

print(100*math.log(6000/5500))  # Avec l'approximation log
print(100*(6000/5500-1))        # Avec la formule exacte.


#
# Question 8.
#

vexppp = variance(exppp)
covariance = sum((math4-mean(math4))*(exppp-mean(exppp)))/(math4.size-1)
correlation = covariance/math.sqrt(vmath*vexppp)

print("La corrélation entre le taux de réussite en maths et la dépense par élève"
      " est "+f'{correlation:.2f}'+'.')
