M1 Bio-informatique - TP 1 : Manipulation de tableaux

publicité
M1 Bio-informatique - TP 1 : Manipulation de tableaux, tests statistiques
Jean-Baptiste Lamy /
Le module Python pandas permet de manipuler des tableaux de données (appelé t ci-dessous) :
Charger un fichier CSV
Enregistrer un fichier CSV
Dimensions du tableau
Transposer le tableau
Tableau
Obtenir les noms des colonnes
Obtenir les noms des lignes
Extraire une colonne
Colonnes
Extraire de la colonne x à la
colonne y
Extraire les colonnes x, y, z...
Calculer la moyenne de chaque
colonne
Moyenne d’une colonne
Médiane d’une colonne
Écart-type d’une colonne
Ajouter une colonne
Supprimer une colonne
Appliquer un logarithme sur
une colonne
Extraire une ligne
Lignes
Cases
Extraire de la ligne x à la ligne y
Extraire les lignes avec une
valeur x dans une colonne
Calculer la moyenne de chaque
ligne
Obtenir la valeur d’une case
Changer la valeur d’une case
t = pandas.read_table("fichier.csv ", sep = ",")
t.to_csv("fichier.csv ", sep = ",")
t.shape
t.T
Transposer = échanger les lignes et les colonnes.
t.axes[1]
t.axes[0]
t.nom_de_colonne
t["nom_de_colonne "]
t.icol(numéro_de_colonne )
t.iloc[ : , x : y ]
=> crée un nouveau tableau
t.iloc[ : , (x , y , z ,...)]
t.mean()
t.nom_de_colonne .mean()
t.nom_de_colonne .median()
t.nom_de_colonne .std()
t["nouveau_nom_de_colonne "] = valeurs
del t["nom_de_colonne "]
t["nom_de_colonne "] = numpy.log(valeurs )
t.irow("nom_de_ligne ")
t.irow(numéro_de_ligne )
t[x : y ]
t[tableau.nom_de_colonne == x ]
t[tableau.nom_de_colonne > x ]
t.T.mean()
t.nom_de_colonne ["nom_de_ligne "]
t.nom_de_colonne [numéro_de_ligne ]
t.nom_de_colonne ["nom_de_ligne "] = nouvelle_valeur
t.nom_de_colonne [numéro_de_ligne ] = nouvelle_valeur
Exercice 1 : Manipulation de tableaux
Afin de tester la toxicité du maı̈s OGM MON863, 3 groupes de 10 rats ont été nourri avec ce maı̈s. Le maı̈s OGM
représentait 11% de la ration alimentaire dans le premier groupe, 22% dans le second, et 33% dans le troisième. Un quatrième
groupe témoin de 60 rats a été nourri avec du maı̈s non-OGM. Après 90 jours, on mesure le poids du foie et des reins de
chaque rat.
[données simulées d’après de Vendômois JS, Roullier F, Cellier D, Séralini GE. A Comparison of the Effects of Three GM
Corn Varieties on Mammalian Health. Int J Biol Sci 2009 ; 5 :706-726. http ://www.biolsci.org/v05p0706.htm]
1. Lancer l’interpréteur Python et importer les modules Numpy, Pandas, Matplotlib.Pylab et Scipy.Stats :
import numpy, pandas, matplotlib.pylab as pylab, scipy.stats
2. Le fichier ”ogm.csv” (disponible sur le campus virtuel) contient le tableau de données. Charger ce tableau en Python.
3. Combien y a-t-il de lignes dans le tableau ? de colonnes ?
4. Afficher les 10 premières lignes du tableau.
5. Calculer la moyenne et l’écart type du poids du rein sur l’ensemble des rats.
1
6. Extraire dans un nouveau tableau appelée “g0” les lignes du tableau correspondant au groupe témoin (c’est-à-dire les
rats nourris avec 0% d’OGM).
7. Calculer la moyenne et l’écart type du poids du rein sur le groupe témoin.
8. Refaire les deux questions précédentes avec le groupe nourri avec 33% d’OGM.
9. Combien y a-t-il de rats dans le groupe témoin ? dans le groupe à 33% ?
10. Calculer dans une nouvelle colonne appelée “rapport” le rapport poids du foie / poids du rein pour chaque rat.
Exercice 2 : Graphiques
Le module Python matplotlib.pylab permet de tracer des graphiques :
Histogramme
Courbe
Nuage de points
Boı̂te à moustaches
Camembert
Affichage
pylab.hist(x)
pylab.plot(x, y)
pylab.plot(x, y, "ro")
Dans ”ro”, r est la couleur (r : rouge, b : bleu, g : vert, y : jaune,...) et o la forme (o : petit
rond, + : croix).
pylab.boxplot([x, y, z,...])
pylab.pie(x.value_counts(), labels = x.value_counts().axes[0])
pylab.show()
Une fois le graphique terminé, il faut exécuter cette commande pour l’afficher (plusieurs
graphiques peuvent être superposés en les traçant puis en demandant l’affichage à la fin).
x, y et z sont des listes de valeurs (par exemple les colonnes d’un tableau de données).
1. Tracer un camembert représentant les quantités d’OGM.
2. Tracer une courbe représentant le poids du foie pour chaque rat (poids du foie = f(rats)).
3. Tracer un histogramme du poids du foie des rats.
4. Tracer un nuage de point avec le poids du rein des rats en X et le poids du foie en Y.
5. Extraire les groupes à 11 et 22% d’OGM.
6. Tracer un nuage de point avec le poids du rein des rats en X et le poids du foie en Y, avec des couleurs différentes
pour chaque groupe (0% : bleu, 11% : vert, 22% : jaune, 33% : rouge ; astuce : on superposera plusieurs graphiques).
7. Tracer des boı̂tes à moustaches représentant le poids du foie en fonction de la quantité d’OGM consommés.
8. Tracer deux courbes (sur le même graphique) représentant le poids du rein chez les rats mâles et chez les rats femelles
(une courbe par sexe).
Exercice 3 : Tests statistiques
Le module Python scipy.stats permet d’effectuer des tests statistiques pour comparer les moyennes de deux groupes :
Gros échantillons (≥30)
Petits échantillons (<30)
Valeurs appariées
Test T de Student
scipy.stats.ttest_rel(g1, g2)
Test de Wilcoxon
scipy.stats.wilcoxon(g1, g2)
Valeurs indépendantes
Test T de Student
scipy.stats.ttest_ind(g1, g2)
Test U de Mann–Whitney
scipy.stats.mannwhitneyu(g1, g2)
g1 et g2 sont les deux groupes de valeurs (par exemple des listes ou des colonnes extraites d’un tableau de données).
1. Comparer le poids moyen des reins des rats du groupe sans OGM, avec celui des rats du groupe à 33%.
2. Comparer le poids moyen du foie des rats du groupe sans OGM, avec celui des rats du groupe à 33%.
3. Le poids du foie augmente-il avec la consommation de 33% d’OGM ou diminue-t-il ?
4. Le poids moyen des reins est-il significativement différents entre les rats mâles et femelles ?
2
Téléchargement