In [1]:
import numpy as np
import pandas as pd
from matplotlib import pyplot as plt
from scipy.stats import pearsonr
%matplotlib inline
In [2]:
lycee2015 = pd.read_csv(
filepath_or_buffer='../../DATA/MEN-DEPP-indicateurs-de-resultats-des-LEGT-2015.csv',
encoding='latin-1',
sep=';')
In [3]:
lycee2015.head(2).transpose()
Out[3]:
In [4]:
plt.figure(figsize=(10, 6))
lycee2015.groupby('Département')['Taux Brut de Réussite Total séries'].mean().order(ascending=False).head(20).plot(kind='barh')
plt.gca().invert_yaxis()
In [5]:
plt.figure(figsize=(10, 6))
lycee2015.groupby('Académie')['Taux Brut de Réussite Total séries'].mean().order(ascending=False).head(20).plot(kind='barh')
plt.gca().invert_yaxis()
In [6]:
effectifs_cols = [
'Effectif de seconde',
'Effectif de première',
'Effectif de terminale']
lycee2015.ix[:, effectifs_cols + ['Taux Brut de Réussite Total séries']].head(2)
Out[6]:
In [7]:
variations_cols = [
'variation_seconde_premiere',
'variation_seconde_terminale',
'variation_premiere_terminale']
lycee2015['variation_seconde_premiere'] = (lycee2015['Effectif de première'] / lycee2015['Effectif de seconde'] - 1) * 100
lycee2015['variation_premiere_terminale'] = (lycee2015['Effectif de terminale'] / lycee2015['Effectif de première'] - 1) * 100
lycee2015['variation_seconde_terminale'] = (lycee2015['Effectif de terminale'] / lycee2015['Effectif de seconde'] - 1) * 100
lycee2015.ix[:, effectifs_cols + variations_cols + ['Taux Brut de Réussite Total séries']].head(4)
Out[7]:
In [8]:
lycee2015.ix[:, variations_cols].describe()
Out[8]:
Wow, il y a des variations d'effectifs gigantesques pour certains lycées.
In [9]:
lycee2015.loc[~np.isfinite(lycee2015.variation_seconde_terminale), effectifs_cols]
Out[9]:
In [10]:
# Nombre de lycées français de l'échantillon (2015)
len(lycee2015)
Out[10]:
In [11]:
no_outliers = (lycee2015.variation_premiere_terminale > -40) & (lycee2015.variation_premiere_terminale <= 20) & (lycee2015['Taux Brut de Réussite Total séries'] > 70)
plt.figure(figsize=(10, 8))
plt.scatter(
data=lycee2015.loc[no_outliers],
x='Taux Brut de Réussite Total séries',
y='variation_premiere_terminale',
alpha=0.1)
plt.xlabel('Taux Brut de Réussite Total séries')
plt.ylabel('variation effectif première terminale')
Out[11]:
On ne voit pas grand chose, regardons la corrélation de Pearson.
In [12]:
lycee2015.loc[:, variations_cols + ['Taux Brut de Réussite Total séries']].corr(method='pearson')
Out[12]:
Une corrélation de -0.24 entre le taux de réussite au BAC toutes séries confondues et variation d'effectif entre la première et la terminale. Not bad !
Vérifions avec le package scipy.stats si la corrélation est significative (p-value < 1%).
In [13]:
pearsonr(lycee2015.variation_premiere_terminale, lycee2015['Taux Brut de Réussite Total séries'])
Out[13]: