Import d'un fichier csv
dans une liste de listes
On considère le fichier temperatures_2020.csv. Ce fichier regroupe les températures minimales, maximales et moyennes dans différentes régions françaises pour certains jours de l'année 2020. Il est dans le dossier de travail et est encodé en utf-8
.
Les premières lignes du fichier sont données ci-dessous :
mois,jour,région,tmin,tmax,tmoy
août,13,Pays de la Loire,19.25,25.35,22.3
août,13,Occitanie,17.51,26.55,22.03
Activité 1 - Repérer les bonnes informations
Observez l'extrait proposé et répondez aux questions suivantes :
- Quel est le séparateur utilisé ?
- Combien y-a-t-il de descripteurs ?
- Quels sont les types des descripteurs ? (entier, nombre décimal, chaîne de caractères...)
Solution
- Le séparateur est la virgule
- Il y a six descripteurs
mois
etrégion
sont des chaînes de caractères,jour
est un entier, les trois autres sont des flottants.
Un fichier csv
est un fichier contenant des données textuelles : son importation avec Python peut se faire facilement avec open
.
On propose dans un premier temps d'importer les données dans une liste de listes. Voici un code fonctionnel :
Important
Prenez le temps de lire les commentaires !
Cliquez sur les +
temperatures = []
with open(file="temperatures_2020.csv", mode="r", encoding="utf-8") as fichier:
fichier.readline() # (1)
for ligne in fichier: # (2)
ligne_propre = ligne.strip() # (3)
valeurs = ligne_propre.split(",") # (4)
temperatures.append(valeurs)
- Les descripteurs ne sont pas utilisés : on lit la première ligne sans l'ajouter au résultat
- Parcours et lecture de toutes les lignes restantes
- on Ă´te le
\n
en fin de ligne - on découpe la ligne à chaque caractère
","
en une liste de valeurs
On obtient le résultat suivant :
temperatures = [
["août", "13", "Pays de la Loire", "19.25", "25.35", "22.3"],
["août", "13", "Occitanie", "17.51", "26.55", "22.03"],
["août", "14", "Pays de la Loire", "17.7", "25.7", "21.7"],
...
]
Les données ont bien été importées mais elles sont mal typées : les températures sont par exemple stockées sous forme des chaînes de caractères. Sous cette forme la somme "19.25" + "26.55"
renvoie "19.2526.55"
!
Il reste donc à typer les données. Par défaut celles-ci sont toutes au format str
. Seuls les nombres entiers et les décimaux sont à typer.
On rappelle les indices ci-dessous :
Descripteur | mois |
jour |
région |
tmin |
tmax |
tmoy |
---|---|---|---|---|---|---|
Indice | 0 |
1 |
2 |
3 |
4 |
5 |
Type Python | str |
int |
str |
float |
float |
float |
Il est possible de typer toutes les valeurs Ă l'indice 1
en faisant :
for entree in temperatures:
entree[1] = int(entree[1]) # int convertit une chaîne de caractère en un entier
Activité 2 - Import et typage complets
Compléter le script ci-dessous permettant d'importer et de typer convenablement les données du fichier temperatures_2020.csv
.
On rappelle que float
permet de convertir une chaîne de caractère en un flottant.
# Tests
(insensible Ă la casse)(Ctrl+I)