Document ELEVE
Pour traiter des données, nous allons utiliser la bibliothèque Python Pandas contenant de nouveaux outils par rapport au langage de base. La bibliothèque Pandas est donc très utilisée pour tout ce qui touche au traitement des données en Sciences, économie, ....
Nous allons utiliser des données très simples au format CSV déja vues auparavant: ces données sont contenues dans le fichier ident_virgule.csv.
Après avoir importé le fichier ident_virgule.csv dans les Fichiers de JupiterNotebook
Vous pouvez directement visualiser dans la fenètre de droite le contenu en cliquant sur le fichier
import pandas
iden=pandas.read_csv("ident_virgule.csv")
print(iden)
Le code ci-dessus est très simple :
Les nombres présents dans la 1ère colonne sont appelés des index. Chaque ligne du tableau a un index (première ligne : index 0, deuxième ligne index 1...) . Les index commencent par O et non 1.
Complète le programme et Vérifie que la variable "info" contient bien le prénom "christophe"
import pandas
iden=pandas.read_csv("ident_virgule.csv")
info=iden.loc[1,'prenom']
--------------------------------------------------------------------------- FileNotFoundError Traceback (most recent call last) <ipython-input-1-5ccb1d67f522> in <module>() 1 import pandas ----> 2 iden=pandas.read_csv("ident_virgule.csv") 3 info=iden.loc[1,'prenom'] /usr/local/lib/python3.6/dist-packages/pandas/io/parsers.py in parser_f(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, skipfooter, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, cache_dates, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, doublequote, escapechar, comment, encoding, dialect, error_bad_lines, warn_bad_lines, delim_whitespace, low_memory, memory_map, float_precision) 683 ) 684 --> 685 return _read(filepath_or_buffer, kwds) 686 687 parser_f.__name__ = name /usr/local/lib/python3.6/dist-packages/pandas/io/parsers.py in _read(filepath_or_buffer, kwds) 455 456 # Create the parser. --> 457 parser = TextFileReader(fp_or_buf, **kwds) 458 459 if chunksize or iterator: /usr/local/lib/python3.6/dist-packages/pandas/io/parsers.py in __init__(self, f, engine, **kwds) 893 self.options["has_index_names"] = kwds["has_index_names"] 894 --> 895 self._make_engine(self.engine) 896 897 def close(self): /usr/local/lib/python3.6/dist-packages/pandas/io/parsers.py in _make_engine(self, engine) 1133 def _make_engine(self, engine="c"): 1134 if engine == "c": -> 1135 self._engine = CParserWrapper(self.f, **self.options) 1136 else: 1137 if engine == "python": /usr/local/lib/python3.6/dist-packages/pandas/io/parsers.py in __init__(self, src, **kwds) 1915 kwds["usecols"] = self.usecols 1916 -> 1917 self._reader = parsers.TextReader(src, **kwds) 1918 self.unnamed_cols = self._reader.unnamed_cols 1919 pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader.__cinit__() pandas/_libs/parsers.pyx in pandas._libs.parsers.TextReader._setup_parser_source() FileNotFoundError: [Errno 2] File b'ident_virgule.csv' does not exist: b'ident_virgule.csv'
EX 1 Modifiez le programme pour que la variable info contienne "12/06/1978"
import pandas
iden=pandas.read_csv("ident_virgule.csv")
info=iden.loc[.................]
................................
Testez le programme suivant :
import pandas
iden=pandas.read_csv("ident_virgule.csv")
info=iden.loc[:,'nom']
print(info)
Vérifiez que la variable "info" contient bien toutes les données de la dernière ligne (index 2)
Il est aussi possible de récupérer seulement certaines lignes et certaines colonnes en utilisant la notation suivante : loc[[index_ligne_1,index_ligne_2,...],[index_colonne_1,index_colonne_2,...]]
Testez le programme suivant :
import pandas
iden=pandas.read_csv("ident_virgule.csv")
info=iden.loc[[0,1],['nom','date_naissance']]
print(info)
Vérifiez que la variable "info" contient bien un tableau avec uniquement les colonnes "nom" et "date_naissance" de la première ligne (index 0) et de la deuxième ligne (index 1).
A vous de jouer en affichant uniquement le prénom du 2ème nom
import pandas
Par la suite, nous allons travailler sur les données contenues dans le fichier ville_virgule.csv.
import pandas
info_villes=pandas.read_csv("villes_virgule.csv")
print(info_villes)
import pandas
info_villes=pandas.read_csv("villes_virgule.csv")
nom_alt=info_villes.loc[info_villes["alt_min"]>1500,["nom","alt_min"]]
print(nom_alt)
Dans le "loc", l'expression "info_villes["alt_min"]>1500" est bien avant la virgule, elle concerne donc les index des lignes du tableau. On sélectionnera uniquement les lignes qui auront la valeur du descripteur "alt_min" supérieure à 1500. Nous allons donc bien sélectionner les villes qui ont une altitude minimum supérieure à 1500 m
import pandas
info_villes=pandas.read_csv("villes_virgule.csv")
nom_alt=..................................................
print(nom_alt)
import pandas
info_villes=pandas.read_csv("villes_virgule.csv")
nom_alt=..................................................
print(nom_alt)
Il est possible de combiner plusieurs facteurs de sélection en utilisant un "et"("&") ou un "ou"("|"
import pandas
info_villes=pandas.read_csv("villes_virgule.csv")
nom_alt=info_villes.loc[(info_villes[................) & (...........................),["nom","dens","alt_min"]]
print(nom_alt)
Nous pouvons calculer des moyennes...
# Ce programme ..................
import pandas
info_villes=pandas.read_csv("villes_virgule.csv")
moyenne_alt_min=info_villes.loc[:,"alt_min"].mean()
print(moyenne_alt_min,"m")
287.1613545816733 m
Exécute et analyse le programme
import pandas
info_villes=pandas.read_csv("villes_virgule.csv")
tri_alt_min=info_villes.sort_values(by=["alt_min"])
print(tri_alt_min)
Vous devriez obtenir un nouveau tableau de données "tri_alt_min" trié dans l'ordre croissant des altitudes minimums. Quelle est la ville ayant l'altitude minimum la plus faible de France ? Il est aussi possible de trier par ordre décroissant en ajoutant "ascending=False" :
import pandas
info_villes=pandas.read_csv("villes_virgule.csv")
tri_alt_min=info_villes.sort_values(by=["alt_min"], ascending=False)
print(tri_alt_min)
Voous pouvez écrire toutes les fonctions utisées pour traiter, filtrer les données sous Python
Idée originale de David Roche.