Fonction pd.ead_csv() de Pandas
read_csv()est la fonction de lecture de données la plus couramment utilisée dans la bibliothèque pandas, utilisée pour lire des données à partir de fichiers CSV (valeurs séparées par des virgules) et créer un DataFrame.
Les fichiers CSV sont un format d'échange de données simple et largement utilisé qui stocke des données tabulaires en texte brut, où chaque ligne représente un enregistrement et les champs sont séparés par des virgules.read_csv()Il peut analyser intelligemment les fichiers CSV, reconnaître automatiquement les noms de colonnes et les types de données, et gérer divers problèmes de délimiteur et d'encodage.
Syntaxe de base et paramètres
Format de syntaxe
pandas.read_csv(filepath_or_buffer, sep=',', delimiter=None, header='infer',
names=None, index_col=None, usecols=None, dtype=None,
skiprows=None, nrows=None, na_values=None, ...)
Description du paramètre
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
| filepath_or_buffer | str, objet de type chemin, ou objet de type fichier | Le chemin, l'URL ou l'objet fichier du fichier CSV | Requis |
| sep | str | Délimiteur de champ, virgule par défaut pour CSV | ',' |
| header | int, liste d'int, 'infer' | Numéro de ligne utilisé comme noms de colonnes, 0 signifie la première ligne | 'infer' |
| names | de type liste | Liste personnalisée de noms de colonnes | Aucune |
| index_col | int, str, liste d'int, liste de str, False | Colonne utilisée comme index des lignes | Aucune |
| usecols | de type liste, appelable | Lire uniquement les colonnes spécifiées | Aucune |
| dtype | dict | Types de données pour les colonnes spécifiées, par ex., {'a': np.float64} | Aucune |
| skiprows | de type liste, int | Ignorer les lignes spécifiées | Aucune |
| nrows | int | Lire uniquement les n premières lignes | Aucune |
| na_values | scalaire, str, de type liste, dict | Valeurs reconnues comme NA/NaN | Aucune |
| encoding | str | Encodage du fichier, par ex. 'utf-8' | Aucune |
Valeur de retour
- Type de retour:
pd.DataFrame - Renvoie une structure de données étiquetée bidimensionnelle, c'est-à-dire un DataFrame pandas, sur laquelle diverses opérations d'analyse et de traitement de données peuvent être effectuées.
Exemples
Grâce aux exemples suivants, maîtrisez pleinementread_csv()les différentes utilisations.
Exemple 1 : Lecture d'un fichier CSV local
Tout d'abord, créez un simple fichier CSV, puis utilisezread_csv()pour le lire.
Exemple
# Créer un fichier CSV d'exemple
# Écrire d'abord quelques données de test
data = """name,age,city,salary
Tom,28,Beijing,8000
Jerry,35,Shanghai,12000
Mike,42,Guangzhou,15000
Lucy,26,Shenzhen,7000
"""
# Écrire les données dans un fichier (en utilisation réelle, vous pouvez directement lire un fichier existant)
with open('employees.csv', 'w', encoding='utf-8') as f:
f.write(data)
# Utiliser read_csv pour lire le fichier CSV
# filepath_or_buffer : chemin du fichier (requis)
df = pd.read_csv('employees.csv')
# Afficher le résultat de la lecture
print("Le DataFrame lu :")
print(df)
print("\nTypes de données :")
print(df.dtypes)
print("\nNoms des colonnes :", df.columns.tolist())
Sortie attendue :
读取的 DataFrame:
name age city salary
0 Tom 28 Beijing 8000
1 Jerry 35 Shanghai 12000
2 Mike 42 Guangzhou 15000
3 Lucy 26 Shenzhen 7000
数据类型:
name object
age int64
city object
salary int64
列名: ['name', 'age', 'city', 'salary']
Explication du code :
pd.read_csv('employees.csv')est l'utilisation la plus basique ; il suffit de passer directement le chemin du fichier.- Par défaut, la première ligne est automatiquement reconnue comme les noms de colonnes (header='infer').
- pandas déduit automatiquement le type de données de chaque colonne : les chaînes deviennent object, et les entiers deviennent int64.
- Le DataFrame renvoyé peut être directement utilisé avec
print()pour l'afficher, et des analyses de données ultérieures peuvent également être effectuées.
Exemple 2 : Noms de colonnes personnalisés et sélection de colonnes spécifiques
Dans le travail réel, nous pouvons avoir besoin de personnaliser les noms de colonnes, ou de ne lire que certaines colonnes pour améliorer les performances.
Exemple
# Créer des données de test
data = """name,age,city,salary,department
Tom,28,Beijing,8000,IT
Jerry,35,Shanghai,12000,HR
Mike,42,Guangzhou,15000,Sales
Lucy,26,Shenzhen,7000,IT
"""
with open('employees2.csv', 'w', encoding='utf-8') as f:
f.write(data)
# Exemple 2a : Noms de colonnes personnalisés
# Le paramètre names est utilisé pour spécifier de nouveaux noms de colonnes, qui remplaceront les noms de colonnes dans le fichier d'origine
df_custom = pd.read_csv('employees2.csv', names=['Name', 'Age', 'City', 'Salary', 'Department'], header=0)
print("DataFrame après noms de colonnes personnalisés :")
print(df_custom)
print()
# Exemple 2b : lire uniquement les colonnes spécifiées
# Le paramètre usecols peut spécifier quelles colonnes lire, améliorant les performances
df_partial = pd.read_csv('employees2.csv', usecols=['name', 'salary'])
print("Lecture de certaines colonnes :")
print(df_partial)
print()
# Exemple 2c : utiliser index_col pour spécifier la colonne d'index
df_indexed = pd.read_csv('employees2.csv', index_col='name')
print("Définir le nom comme index :")
print(df_indexed)
Sortie attendue :
自定义列名后的 DataFrame:
姓名 年龄 城市 薪资 部门
0 Tom 28 Beijing 8000 IT
1 Jerry 35 Shanghai 12000 HR
2 Mike 42 Guangzhou 15000 Sales
3 Lucy 26 Shenzhen 7000 IT
只读取部分列:
name salary
0 Tom 8000
1 Jerry 12000
2 Mike 15000
3 Lucy 7000
设置 name 为索引:
age city salary department
name
Tom 28 Beijing 8000 IT
Jerry 35 Shanghai 12000 HR
Mike 42 Guangzhou 15000 Sales
Lucy 26 Shenzhen 7000 IT
Explication du code :
namesLe paramètre doit correspondre au nombre de colonnes dans les données. Si le fichier a une ligne d'en-tête, vous pouvez définirheader=0pour utiliser l'en-tête d'origine.usecolsVous pouvez passer une liste de noms de colonnes (recommandé) ou une liste d'indices de colonnes ; l'ordre des colonnes retournées correspond à l'ordre spécifié.index_colDéfinir une colonne comme index de ligne permet d'interroger rapidement les données par index plus tard.
Exemple 3 : Gestion des données spéciales et amélioration de la gestion des valeurs manquantes
Les fichiers CSV peuvent contenir des valeurs manquantes, des délimiteurs spéciaux ou des situations où certaines lignes doivent être ignorées.
Exemple
# Créer un fichier CSV contenant des données spéciales
# Utiliser le point-virgule comme délimiteur, contenant des valeurs manquantes et des valeurs NA
data = """name;age;city;salary
Tom;28;Beijing;8000
Jerry;;Shanghai;12000
Mike;42;Guangzhou;
Lucy;26;NA;7000
"""
with open('employees3.csv', 'w', encoding='utf-8') as f:
f.write(data)
# Exemple 3a : Lire un fichier délimité par des points-virgules
df_semicolon = pd.read_csv('employees3.csv', sep=';')
print("Utilisation du délimiteur point-virgule :")
print(df_semicolon)
print("Statistiques des valeurs manquantes :")
print(df_semicolon.isnull())
print()
# Exemple 3b : Spécifier quelles valeurs sont traitées comme valeurs manquantes
df_na = pd.read_csv('employees3.csv', sep=';', na_values=['NA', 'missing'])
print("Après les valeurs NA personnalisées :")
print(df_na)
print()
# Exemple 3c : ignorer des lignes et limiter le nombre de lignes lues
# Supposons que les premières lignes du fichier soient des commentaires et puissent être ignorées
data_with_comment = """# Ceci est un fichier de données d'employés
# Date de création : 2024-01-01
nom;âge;ville;salaire
Tom;28;Beijing;8000
Jerry;35;Shanghai;12000
Mike;42;Guangzhou;15000
Lucy;26;Shenzhen;7000
"""
with open('employees4.csv', 'w', encoding='utf-8') as f:
f.write(data_with_comment)
# skiprows ignore les deux premières lignes (lignes de commentaire)
df_skip = pd.read_csv('employees4.csv', sep=';', skiprows=2)
print("Après avoir sauté les lignes de commentaire :")
print(df_skip)
print()
# nrows ne lit que les 3 premières lignes
df_nrows = pd.read_csv('employees4.csv', sep=';', skiprows=2, nrows=3)
print("Lecture des 3 premières lignes uniquement :")
print(df_nrows)
Sortie attendue :
使用分号分隔符:
name age city salary
0 Tom 28.0 Beijing 8000.0
1 Jerry NaN Shanghai 12000.0
2 NaN 42.0 Guangzhou NaN
3 Lucy 26.0 NA 7000.0
缺失值统计:
name age city salary
0 False False False False
1 False True False False
2 True False False True
3 False False False False
自定义 NA 值后:
name age city salary
0 Tom 28.0 Beijing 8000.0
1 Jerry NaN Shanghai 12000.0
2 NaN 42.0 Guangzhou NaN
3 Lucy 26.0 NaN 7000.0
跳过注释行后:
name age city salary
0 Tom 28 Beijing 8000
1 Jerry 35 Shanghai 12000
42 Guangzhou 15000
2 Mike
3 Lucy 26 Shenzhen 7000
只读取前3行:
name age city salary
0 Tom 28 Beijing 800本地
1 Jerry 35 Shanghai 12000
2 Mike 42 Guangzhou 15000
Explication du code :
sepLe paramètre peut spécifier n'importe quel délimiteur, tel que le point-virgule, la tabulation, etc.- Par défaut, les chaînes vides, les espaces, etc. sont reconnus comme des valeurs manquantes. Vous pouvez utiliser le
na_valuesparamètre pour personnaliser les valeurs traitées comme NA. skiprowsVous pouvez sauter le nombre spécifié de lignes au début du fichier, ce qui est pratique pour traiter des fichiers avec des commentaires.nrowsLimite le nombre de lignes lues, adapté à la lecture par blocs de fichiers volumineux.
Notes
- Lors de la lecture de fichiers volumineux, vous pouvez envisager d'utiliser le
chunksizeparamètre de lecture par blocs pour éviter un manque de mémoire. - Lors du traitement de fichiers chinois, vous devez spécifier correctement le
encodingparamètre. Les encodages courants incluent 'utf-8', 'gbk', 'gb2312', etc. - Si le fichier CSV n'a pas de ligne d'en-tête, vous devez définir
header=None, puis utiliser lenamesparamètre pour spécifier les noms de colonnes. - Pour les fichiers CSV non standard, vous devrez peut-être ajuster
sep、quotecharet d'autres paramètres pour les analyser correctement.
Résumé
read_csv()est la fonction de lecture de données la plus élémentaire et la plus importante de pandas. Elle est puissante et prend en charge des fonctionnalités avancées telles que plusieurs délimiteurs, des noms de colonnes personnalisés, des paramètres d'index et la gestion des valeurs manquantes.
Dans le travail pratique d'analyse de données, maîtriserread_csv()les diverses utilisations des paramètres vous permet de traiter efficacement des fichiers CSV de divers formats, jetant ainsi une base solide pour le nettoyage et l'analyse ultérieurs des données. Il est conseillé aux lecteurs de s'exercer davantage et de maîtriser ces paramètres courants.
Fonctions courantes de Pandas