ConsigneCrée un fichier CSV avec les données (nom, age, ville) pour Alice, Bob et Charlie, écris-le avec csv.writer, relis-le avec csv.DictReader, puis relis-le aussi avec pandas.
Le module csv (standard) gère les fichiers .csv. Pour des analyses, pandas est encore plus pratique.
import csvdata = [ ['nom', 'age', 'ville'], # en-tête ['Alice', 25, 'Paris'], ['Bob', 30, 'Lyon'],]with open('/tmp/test.csv', 'w', newline='') as f: writer = csv.writer(f) writer.writerows(data)newline='' à l'ouverture en écriture : indispensable sur Windows pour éviter les doubles \n.
with open('/tmp/test.csv', 'r') as f: reader = csv.reader(f) for row in reader: print(row) # ['nom', 'age', 'ville'], puis ['Alice', '25', 'Paris']...csv.reader renvoie tout en str, même les nombres : '25' (pas 25). À convertir manuellement.
with open('/tmp/test.csv', 'r') as f: reader = csv.DictReader(f) for row in reader: print(f"{row['nom']} a {row['age']} ans")Plus lisible que de jongler avec les index. Recommandé.
with open('/tmp/out.csv', 'w', newline='') as f: writer = csv.DictWriter(f, fieldnames=['nom', 'age']) writer.writeheader() writer.writerow({'nom': 'Alice', 'age': 25})import pandas as pddf = pd.read_csv('/tmp/test.csv')df['age'] = df['age'].astype(int) # parsing automatique des types souvent okdf.to_csv('/tmp/out.csv', index=False)Options utiles de read_csv :
sep=';' séparateur autre que ,header=None pas d'en-têtenames=['a', 'b'] forcer les noms de colonnesencoding='latin-1' si UTF-8 ne marche pasna_values=['', 'NA'] valeurs à traiter comme NaNparse_dates=['date'] parser une colonne en datetimeimport osos.remove('/tmp/test.csv')Règle : pour scripter une transformation rapide, csv est suffisant. Dès que tu analyses (filtrer, agréger, joindre), pandas.
Envie d'aller plus loin ? Découvrez nos formations certifiées Bac+2 à Bac+5 →