%matplotlib nbagg
import matplotlib
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
En Python, il y a deux fonctions hist pour tracer des histogrammes :
la fonction hist de pandas qui s'applique aux dataframe
la fonction hist de matplotlib qui s'applique aux array ou aux séquences d'array
Les deux fonctions se distinguent légèrement par leurs options.
Voyons quelques exemples :
data = pd.DataFrame(np.random.randn(1000,1),columns=['X'])
data.head()
data.hist(normed=True)
L'option normed=True est obligatoire pour obtenir un histogramme comme défini dans le cours. Vérifiez ce qui se passe si vous enlevez cette option.
La fonction hist de pandas a des nombreuses options. Regardez :
help(data.hist)
Voici les options les plus utiles pour nous :
normed=True pour obtenir un vrai histogramme
bins le nombre de sous-intervalles
grid (de type booléan) pour tracer/enlever la grille
Dans l'exemple ci-dessus, essayez plusieurs valeurs pour bins. Quelle est la meilleure valeur de bins ?
Pour des dataframe à plusieurs colonnes :
column le(s) numéro(s) des colonnes pour lesquelles on veut tracer l'histogramme
sharex, sharey (de type booléan) pour indiquer si tous les histogrammes doivent être représentés sur la même échelle ou pas
by pour sélectionner une partie du tableau (voir exemple ci-desssous)
data['Y'] = np.random.binomial(3,.5,1000)
data.head(10)
data.hist(normed=True,sharex=True,sharey=True)
data.hist(column='X',by='Y',normed=True,sharex=True)
Et maintenant pour comparer, voyons la fonction hist de matplotlib :
data2 = pd.DataFrame(np.random.randn(500,1),columns=['Normal'])
data2['Uniform'] = np.random.rand(500,1)
data2['Exponentiel'] = np.random.exponential(2,500)
data2['Poisson'] = np.random.poisson(2,500)
data2.head()
Les paramètres de plt.hist sont :
normed=True pour obtenir un vrai histogramme
bins le nombre de sous-intervalles de l'histogramme
range l'intervalle des abscisses
et pour d'autres options, regardez l'aide :
help(plt.hist)
plt.figure()
plt.subplot(221)
plt.hist(data2['Normal'], normed=True,bins=25)
plt.subplot(222)
plt.hist(data2['Uniform'], normed=True,bins=25)
plt.subplot(223)
plt.hist(data2['Exponentiel'], normed=True,bins=25)
plt.subplot(224)
plt.hist(data2['Poisson'], normed=True,bins=25)
plt.figure()
plt.hist((data2['Normal'],data2['Exponentiel'],data2['Uniform'],data2['Poisson']), normed=True,bins=15)
plt.legend(['Normal','Exponentiel','Uniform','Poisson'])
Pour tracer des boxplots (ou boîtes à moustaches) on utilise la fonction boxplot de pandas ou la fonction boxplot dans matplotlib.
plt.figure()
bp = data2.boxplot()
Les options de boxplot dans pandas sont :
column liste de colonnes pour lesquelles on veut tracer un boxplot
by colonne pour faire des groupes
figsize taille de la figure
grid (de type booléan) pour tracer/enlever la grille
etc.
data.boxplot(column='X',by='Y')
plt.xlabel(' ')
plt.title(' ')
Pour tracer des QQ-plots, nous utiliserons la fonction suivante :
def qqplot(x, y, alpha=np.arange(0.05,0.95,.01)):
qx = x.quantile(alpha)
qy = y.quantile(alpha)
plt.scatter(qx, qy, marker='o',s=60, facecolors='none', linewidths=1);
plt.plot([min(x)]+qx+[max(x)], [min(x)]+qx+[max(x)], '--')
plt.figure()
qqplot(data2['Normal'],data2['Uniform'])
plt.figure()
qqplot(data2.ix[0:250,'Normal'],data2.ix[250:500,'Normal'])
Comment interpréter la forme des QQ-plots ci-dessus ?
Pour cet exercice, il vous est demandé de créer un nouveau notebook, qui contiendra tous les codes pour produire les figures et les réponses aux questions suivantes.
L'exercice est à rendre dans votre boîte de dépôt sur Sakai ou par email à l'adresse tabea.rebafka@upmc.fr si vous rencontrez des problèmes avec Sakai.
Vous pouvez rendre cet exercice en binôme. Dans ce cas, chacun doit en déposer une copie dans sa boîte de dépôt Sakai ET il faut indiquer vos deux noms sur le notebook.
L'exercice porte sur les jeux de données des précédents notebooks.
Toutes les figures doivent être facile à comprendre (pensez à mettre des légendes, annoter les axes, mettre des titres etc.)
Choissisez trois poussins de chaque régime et tracer leurs courbes de poids dans un même graphique. Utiliser des couleurs différentes pour les différents régimes.
Tracer les quatre boxplots du poids des poussins au jour 0 par groupe de régime. Commentez le graphique.
Tracer les quatre boxplots du poids des poussins au jour 21 par groupe de régime. Commentez le graphique.
Tracer les trois histogrammes des neurones dans une même figure. Commentez la figure.
Tracer les QQ-plots des neurones pour toutes les combinaisons de deux jeux de donnée possibles. Interprétez les figures.