Lire des fichiers CSV
Chargez des fichiers CSV avec pd.read_csv, contrôlez les séparateurs, les lignes d’en-tête et les colonnes d’index, puis prévisualisez le résultat.
Lire des fichiers CSV est une leçon Pandas & NumPy Academy gratuite sur CoddyKit. Ceci est la leçon 1 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage Pandas & NumPy Academy, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours Pandas & NumPy Academy comprend 4 leçons au total.
Pourquoi CSV est le format universel
CSV (valeurs séparées par des virgules) est le format le plus utilisé pour échanger des données tabulaires. Il est lisible par l’être humain, pris en charge par toutes les bases de données, feuilles de calcul et outils d’analyse, et ne nécessite aucune définition de schéma. pd.read_csv() est la fonction Pandas la plus souvent appelée en analyse de données, car pratiquement tous les jeux de données publics, exports d’API ou vidages de bases de données sont disponibles au format CSV.
import pandas as pd
# Read a CSV file from disk
df = pd.read_csv('data/sales.csv')
print(df.shape)
print(df.head())Appel de base à read_csv()
Le seul argument obligatoire est le chemin du fichier (chaîne ou objet Path). Par défaut, Pandas suppose que la première ligne est l’en-tête (noms des colonnes), que le séparateur est une virgule et que les valeurs permettent de déduire les dtypes appropriés. Le DataFrame obtenu possède un RangeIndex entier par défaut. Appelez toujours df.info() immédiatement après le chargement afin de repérer les problèmes d’inférence des types.
import pandas as pd
df = pd.read_csv('products.csv')
# Equivalent with explicit defaults:
df = pd.read_csv('products.csv',
sep=',',
header=0,
index_col=None)Contrôler le séparateur
Utilisez le paramètre sep= pour spécifier un séparateur autre qu’une virgule. Les fichiers séparés par des tabulations (TSV) utilisent sep='\t'. Certains exports européens utilisent des points-virgules comme séparateurs (sep=';'), car les virgules servent de séparateurs décimaux. Transmettez sep=None, engine='python' pour laisser Pandas détecter automatiquement le séparateur à partir du contenu du fichier.
import pandas as pd
# Tab-separated file
df_tsv = pd.read_csv('data.tsv', sep='\t')
# Semicolon-separated (common in Europe)
df_semi = pd.read_csv('data.csv', sep=';')
# Auto-detect separator
df_auto = pd.read_csv('data.txt', sep=None, engine='python')En-tête et skiprows
Si un CSV ne comporte pas de ligne d’en-tête, définissez header=None et Pandas attribuera des noms de colonnes entiers (0, 1, 2, ...). Fournissez des noms personnalisés avec names=['a', 'b', 'c']. Utilisez skiprows=n pour ignorer les n premières lignes (contenant des métadonnées ou des commentaires en haut du fichier). skiprows accepte également une liste de numéros de lignes précis à ignorer.
import pandas as pd
# CSV with no header
df = pd.read_csv('noheader.csv', header=None,
names=['id', 'value', 'category'])
# Skip first 3 rows (e.g., metadata or comments)
df = pd.read_csv('report.csv', skiprows=3)Définir la colonne d’index
index_col= indique la colonne à utiliser comme index des lignes. Transmettez un nom de colonne ou une position entière. La définition d’un index pertinent (par exemple une colonne de dates ou un ID unique) permet un accès rapide par étiquette avec .loc et est nécessaire avant les opérations sur les séries temporelles. Transmettez une liste pour créer un MultiIndex.
import pandas as pd
# Use 'date' column as row index
df = pd.read_csv('timeseries.csv', index_col='date', parse_dates=True)
print(df.index.dtype) # datetime64[ns]
# Equivalent with column position
df2 = pd.read_csv('timeseries.csv', index_col=0, parse_dates=True)Analyser les dates lors du chargement
parse_dates=True indique à Pandas d’essayer de convertir l’index en date et heure. Transmettez une liste de noms de colonnes à parse_dates=['col1', 'col2'] pour analyser des colonnes qui ne sont pas l’index comme des dates. Pandas essaie automatiquement les formats courants ; pour les formats inhabituels, utilisez date_format=. L’analyse des dates lors du chargement évite de répéter les appels à pd.to_datetime() ultérieurement.
import pandas as pd
# Parse 'order_date' column as datetime
df = pd.read_csv('orders.csv',
parse_dates=['order_date'])
print(df['order_date'].dtype) # datetime64[ns]Sélectionner des colonnes avec usecols
usecols=['col1', 'col2'] charge uniquement les colonnes spécifiées et ignore toutes les autres. C’est essentiel pour les fichiers CSV volumineux : inutile de lire un fichier de 200 colonnes si vous n’en avez besoin que de 5. Cela réduit considérablement le temps d’entrée-sortie et l’utilisation de la mémoire. Transmettez une fonction pour sélectionner les colonnes selon un modèle de nom.
import pandas as pd
# Load only 3 of potentially many columns
df = pd.read_csv('big_file.csv',
usecols=['user_id', 'event', 'timestamp'])
print(df.columns.tolist()) # ['user_id', 'event', 'timestamp']Contrôler les types de données lors du chargement
Pandas déduit les types de données, mais cette déduction peut être incorrecte : une colonne d’identifiants composée uniquement de chaînes numériques devient int64, ou une colonne de prix contenant des valeurs manquantes devient float64 de manière inattendue. Utilisez dtype={'col': str} pour imposer les types. Cette méthode est également plus efficace : la spécification préalable des types évite l’étape de déduction et peut accélérer de 20 à 30 % le chargement des fichiers volumineux.
import pandas as pd
df = pd.read_csv('orders.csv', dtype={
'order_id': str, # keep as string (not int)
'price': float,
'quantity': 'int32' # use smaller int
})Gérer les valeurs manquantes lors du chargement
Par défaut, Pandas reconnaît de nombreuses représentations des valeurs manquantes : cellules vides, 'NA', 'NaN', 'N/A', 'null', etc. Utilisez na_values=['?', '-', 'missing'] pour ajouter des marqueurs personnalisés. Utilisez keep_default_na=False pour désactiver la liste intégrée et ne traiter comme manquantes que les valeurs que vous spécifiez. Vous éviterez ainsi de considérer par erreur des chaînes légitimes comme 'NA' (un acronyme) comme des valeurs NaN.
import pandas as pd
df = pd.read_csv('survey.csv',
na_values=['?', '', 'N/A', 'none'])
print(df.isnull().sum())nrows et chunksize pour les fichiers volumineux
nrows=100 charge uniquement les 100 premières lignes, ce qui est idéal pour vérifier rapidement le schéma d’un fichier immense. chunksize=10000 renvoie un itérateur TextFileReader qui fournit des DataFrames de 10 000 lignes chacun, ce qui permet de traiter par blocs les fichiers qui ne tiennent pas dans la RAM. La lecture par blocs est étudiée en détail dans la leçon avancée sur les performances.
import pandas as pd
# Quick peek at a large file
header_df = pd.read_csv('huge.csv', nrows=5)
print(header_df.dtypes)
# Chunked reading
for chunk in pd.read_csv('huge.csv', chunksize=50000):
print(chunk.shape) # process each chunkPièges courants avec read_csv
Surveillez ces problèmes fréquents : erreurs d’encodage (utilisez encoding='utf-8' ou 'latin-1'), espaces en début de nom de colonne (utilisez skipinitialspace=True), séparateurs de milliers dans les nombres (utilisez thousands=',') et virgules décimales dans les nombres européens (utilisez decimal=',' et sep=';'). Si vous les ignorez, chacun de ces problèmes transforme silencieusement les colonnes numériques en objets.
import pandas as pd
# European format: semicolon sep, comma decimal, UTF-8
df = pd.read_csv('euro_data.csv',
sep=';',
decimal=',',
thousands='.',
encoding='utf-8',
skipinitialspace=True)Vérification rapide
Vérifiez votre compréhension de la lecture des fichiers CSV avec Pandas à partir du contenu de cette leçon.
Récapitulatif de la leçon
Dans cette leçon, vous avez appris que pd.read_csv() est la fonction principale pour charger des données tabulaires et propose de nombreux paramètres de configuration, que sep, header, index_col et parse_dates contrôlent l’interprétation du fichier, et que usecols et dtype améliorent les performances et la fiabilité des types pour les fichiers volumineux. Nous allons maintenant lire des fichiers Excel et JSON, qui possèdent leurs propres paramètres spécifiques au format.
Questions Fréquemment Posées
La leçon « Lire des fichiers CSV » est-elle gratuite ?
Oui — le texte complet de « Lire des fichiers CSV » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours Pandas & NumPy Academy, passe à CoddyKit PRO. Le cours Pandas & NumPy Academy comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Lire des fichiers CSV » ?
Chargez des fichiers CSV avec pd.read_csv, contrôlez les séparateurs, les lignes d’en-tête et les colonnes d’index, puis prévisualisez le résultat. Tu pratiques Pandas & NumPy Academy avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer Pandas & NumPy Academy ?
Aucune expérience préalable n'est requise. Pandas & NumPy Academy sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 1 sur 4.
Combien de temps prend la leçon « Lire des fichiers CSV » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon Pandas & NumPy Academy ?
Oui. Chaque leçon Pandas & NumPy Academy inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Lire des fichiers CSV
- Lire des fichiers Excel et JSON
- Écrire des DataFrames dans des fichiers
- Lire depuis des URL et StringIO