nsi:premiere:csv:modules_csv_et_pandas
Différences
Ci-dessous, les différences entre deux révisions de la page.
| Les deux révisions précédentesRévision précédenteProchaine révision | Révision précédente | ||
| nsi:premiere:csv:modules_csv_et_pandas [2022/08/29 20:12] – supprimée - modification externe (Unknown date) 127.0.0.1 | nsi:premiere:csv:modules_csv_et_pandas [2023/02/03 12:28] (Version actuelle) – goupillwiki | ||
|---|---|---|---|
| Ligne 1: | Ligne 1: | ||
| + | ====== Modules csv et pandas ====== | ||
| + | ===== Fichier csv ===== | ||
| + | |||
| + | Vous disposez d'un fichier {{ nsi: | ||
| + | contenant les données sur un ensemble de villes. | ||
| + | |||
| + | <WRAP tip> | ||
| + | **csv** signifie //comma separated values//, c'est un fichier où les données sont séparées par des virgules ou des points-virgules. | ||
| + | </ | ||
| + | |||
| + | Le fichier est un simple fichier texte qui ressemble à cela : | ||
| + | |||
| + | <code lang-none> | ||
| + | city; | ||
| + | Tokyo; | ||
| + | New York;New York; | ||
| + | Mexico City;Mexico City; | ||
| + | ... | ||
| + | </ | ||
| + | |||
| + | Si on l' | ||
| + | |||
| + | <csv delim=;> | ||
| + | city; | ||
| + | Tokyo; | ||
| + | New York;New York; | ||
| + | Mexico City;Mexico City; | ||
| + | </ | ||
| + | |||
| + | La première ligne est une entête qui sert à préciser le contenu des colonnes. | ||
| + | |||
| + | <WRAP box> | ||
| + | Nous aimerions ouvrir le fichier et en extraire le contenu sous une forme exploitable. | ||
| + | </ | ||
| + | |||
| + | <WRAP important> | ||
| + | |||
| + | ===== Sans module ===== | ||
| + | |||
| + | <code language=python linenums: | ||
| + | # Fichier city0.py | ||
| + | # Exemple de chargement de fichier csv | ||
| + | # sans module | ||
| + | |||
| + | file = open(' | ||
| + | contenu = file.read() | ||
| + | file.close() | ||
| + | lines = contenu.split(' | ||
| + | items = [line.split(';' | ||
| + | |||
| + | # à titre d' | ||
| + | for i in range(5): | ||
| + | print(items[i]) | ||
| + | </ | ||
| + | |||
| + | ===== Avec l' | ||
| + | |||
| + | <code language=python linenums> | ||
| + | # Fichier city1.py | ||
| + | # Exemple de chargement de fichier csv avec | ||
| + | # l' | ||
| + | |||
| + | import csv | ||
| + | file = open(' | ||
| + | |||
| + | # csv fourni un objet de type reader | ||
| + | # qui est comme un tête de lecture placée | ||
| + | # sur le fichier | ||
| + | |||
| + | reader = csv.reader(file, | ||
| + | |||
| + | villes = [] | ||
| + | for row in reader: | ||
| + | villes.append(row) | ||
| + | |||
| + | file.close() | ||
| + | |||
| + | |||
| + | # à titre d' | ||
| + | for i in range(5): | ||
| + | print(villes[i]) | ||
| + | </ | ||
| + | |||
| + | <WRAP tip> | ||
| + | * On n'a plus besoin de faire la découpe, '' | ||
| + | * le résultat '' | ||
| + | * la ligne d' | ||
| + | * si on veut accéder au nom de pays de Tokyo, il faut déjà savoir que Tokyo est à la ligne 1 puis que le nom de pays est à la colonne 4 et demander '' | ||
| + | </ | ||
| + | |||
| + | ===== Avec l' | ||
| + | |||
| + | <code language=python linenums> | ||
| + | # Fichier city2.py | ||
| + | # Exemple de chargement de fichier csv avec | ||
| + | # l' | ||
| + | |||
| + | import csv | ||
| + | file = open(' | ||
| + | |||
| + | # csv fourni un objet de type DictReader | ||
| + | # Il fournit presque des dictionnaires | ||
| + | |||
| + | reader = csv.DictReader(file, | ||
| + | |||
| + | villes = [] | ||
| + | for row in reader: | ||
| + | villes.append(row) | ||
| + | |||
| + | file.close() | ||
| + | |||
| + | # à titre d' | ||
| + | print(villes[0][" | ||
| + | </ | ||
| + | |||
| + | <WRAP tip> | ||
| + | * Cette fois le résultat est un tableau de dictionnaires (ou presque), | ||
| + | * la première ligne d' | ||
| + | * si on veut connaître le pays de Tokyo, il suffit de savoir que Tokyo est à la ligne d' | ||
| + | * si vous affichez le contenu de '' | ||
| + | </ | ||
| + | |||
| + | ===== Utiliser une fonction de formatage ===== | ||
| + | |||
| + | La version '' | ||
| + | |||
| + | On pourrait ajouter une fonction chargée de modifier les types. | ||
| + | |||
| + | <code language=python linenums> | ||
| + | # Fichier city2_bis.py | ||
| + | # Utilisation d'une fonction de formatage | ||
| + | # pour que les données numériques soient bien reconnues | ||
| + | |||
| + | import csv | ||
| + | |||
| + | def format(item): | ||
| + | return { | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | ' | ||
| + | } | ||
| + | |||
| + | file = open(' | ||
| + | reader = csv.DictReader(file, | ||
| + | villes = [] | ||
| + | for row in reader: | ||
| + | villes.append(format(row)) | ||
| + | file.close() | ||
| + | |||
| + | # à titre d' | ||
| + | print(villes[: | ||
| + | </ | ||
| + | |||
| + | <WRAP tip> | ||
| + | * Les données obtenues ont la bonne forme. On peut utiliser les nombres en tant que nombres. | ||
| + | * On est libre de filtrer certaines colonnes. Dans cet exemple, la fonction '' | ||
| + | * Certains cas nécessiteront des fonctions plus souples : ici par exemple, la colonne *population* n'est pas toujours convenablement renseignée. On ne peut donc pas se contenter de '' | ||
| + | </ | ||
| + | |||
| + | ===== Avec le module pandas ===== | ||
| + | |||
| + | Il s'agit d'un gros module qui sait faire beaucoup de choses. Ce module est très utilisé par ceux qui font de l' | ||
| + | |||
| + | <code language=python linenums> | ||
| + | # Fichier city3.py | ||
| + | # Exemple de chargement de fichier csv avec | ||
| + | # le module pandas | ||
| + | |||
| + | import pandas | ||
| + | villes = pandas.read_csv(" | ||
| + | </ | ||
| + | |||
| + | **C' | ||
| + | |||
| + | <code python> | ||
| + | >>> | ||
| + | >>> | ||
| + | </ | ||
| + | |||
| + | Notez que '' | ||
| + | |||
| + | <code python> | ||
| + | >>> | ||
| + | >>> | ||
| + | >>> | ||
| + | </ | ||
| + | |||
| + | Ceci n'est qu'un aperçu, pandas a beaucoup de fonctionnalités. | ||
