Fonction pd.ead_csv() de Pandas

Python math 模块Fonctions courantes 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ètreTypeDescriptionValeur par défaut
filepath_or_bufferstr, objet de type chemin, ou objet de type fichierLe chemin, l'URL ou l'objet fichier du fichier CSVRequis
sepstrDélimiteur de champ, virgule par défaut pour CSV','
headerint, liste d'int, 'infer'Numéro de ligne utilisé comme noms de colonnes, 0 signifie la première ligne'infer'
namesde type listeListe personnalisée de noms de colonnesAucune
index_colint, str, liste d'int, liste de str, FalseColonne utilisée comme index des lignesAucune
usecolsde type liste, appelableLire uniquement les colonnes spécifiéesAucune
dtypedictTypes de données pour les colonnes spécifiées, par ex., {'a': np.float64}Aucune
skiprowsde type liste, intIgnorer les lignes spécifiéesAucune
nrowsintLire uniquement les n premières lignesAucune
na_valuesscalaire, str, de type liste, dictValeurs reconnues comme NA/NaNAucune
encodingstrEncodage 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

import pandas as pd

# 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é avecprint()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

import pandas as pd

# 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

import pandas as pd

# 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 lena_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 lechunksizeparamètre de lecture par blocs pour éviter un manque de mémoire.
  • Lors du traitement de fichiers chinois, vous devez spécifier correctement leencodingparamè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éfinirheader=None, puis utiliser lenamesparamètre pour spécifier les noms de colonnes.
  • Pour les fichiers CSV non standard, vous devrez peut-être ajustersep、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.

Python math 模块Fonctions courantes de Pandas

Autres extensions