Fonction Pandas df.to_csv()
to_csv()C'est une méthode DataFrame utilisée pour exporter des données vers un fichier CSV (valeurs séparées par des virgules).
CSV est l'un des formats d'export de données les plus couramment utilisés. Il stocke des données tabulaires en texte brut, possède une forte compatibilité et peut être lu par presque tous les outils d'analyse de données.to_csv()Il est riche en fonctionnalités, prend en charge des options telles que des délimiteurs personnalisés, des méthodes d'encodage et la gestion de l'index, et peut répondre à divers besoins d'export.
Syntaxe de base et paramètres
Format de syntaxe
DataFrame.to_csv(path_or_buf=None, sep=',', na_rep='', float_format=None,
columns=None, header=True, index=True, index_label=None,
mode='w', encoding=None, quoting=None, quotechar='"',
line_terminator=None, chunksize=None, date_format=None,
doublequote=True, escapechar=None, ...)
Description du paramètre
| Paramètre | Type | Description | Valeur par défaut |
|---|---|---|---|
| path_or_buf | str, objet chemin, objet de type fichier | Chemin de fichier ; renvoie une chaîne si None | Aucune |
| sep | str | Délimiteur de champ | ',' |
| na_rep | str | Représentation des valeurs manquantes | '' |
| float_format | str | Format des nombres à virgule flottante | Aucune |
| columns | liste | Spécifier les colonnes à exporter | Aucune |
| header | bool, list | Indique s'il faut exporter les noms de colonnes | True |
| index | bool | Indique s'il faut exporter l'index | True |
| index_label | str | Nom de la colonne d'index | Aucune |
| mode | str | Mode d'écriture : 'w' écrase, 'a' ajoute | 'w' |
| encoding | str | Encodage du fichier | Aucune |
Valeur de retour
- Type de retour:
Noneoustr - Lorsqu'un chemin de fichier est spécifié, il écrit dans le fichier et renvoie None.
- Quand
path_or_buf=NoneLorsque ..., renvoie une chaîne au format CSV.
Exemples
Grâce aux exemples suivants, maîtrisez pleinementto_csv()Diverses utilisations.
Exemple 1 : Utilisation de base - Export vers un fichier CSV
Créez d'abord un DataFrame, puis utilisezto_csv()pour l'exporter sous forme de fichier CSV.
Exemple
# Créer un DataFrame d'exemple
data = {
'name': ['Tom', 'Jerry', 'Mike', 'Lucy'],
'age': [28, 35, 42, 26],
'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen'],
'salary': [8000, 12000, 15000, 7000]
}
df = pd.DataFrame(data)
# Exemple 1a : l'export le plus basique
# path_or_buf : chemin du fichier (le paramètre requis est le chemin du fichier ; le définir sur None ici renvoie une chaîne)
csv_string = df.to_csv() # Aucun chemin spécifié, renvoie une chaîne
print("Chaîne CSV renvoyée :")
print(csv_string)
print()
# Exporter vers un fichier
# Par défaut, l'index et les noms de colonnes sont inclus
df.to_csv('output_basic.csv', index=False) # index=False n'exporte pas l'index
print("Exporté vers output_basic.csv")
# Lire pour vérifier
df_check = pd.read_csv('output_basic.csv')
print("nVérifier la lecture :")
print(df_check)
Sortie attendue :
返回的 CSV 字符串:
,name,age,city,salary
0,Tom,28,Beijing,8000
1,Jerry,35,Shanghai,12000
2,Mike,42,Guangzhou,15000
3,Lucy,26,Shenzhen,7000
已导出到 output_basic.csv
验证读取:
name age city salary
0 Tom 28 Beijing 8000
1 Jerry 35 Shanghai 12000
2 保存 Mike 42 Guangzhou 15000
3 Lucy 26 Shenzhen 7000
Analyse du code :
to_csv()Par défaut, l'index (première colonne sans nom de colonne) et les noms de colonnes sont exportés.- Paramètre
index=Falsevous pouvez omettre d'exporter l'index, ce qui rend l'importation plus pratique. - Lorsqu'aucun chemin n'est spécifié, une chaîne au format CSV est renvoyée.
Exemple 2 : Délimiteurs et formats personnalisés
Les fichiers CSV peuvent utiliser différents délimiteurs, et vous pouvez également personnaliser le format des valeurs numériques et des valeurs manquantes.
Exemple
# Créer un DataFrame contenant des valeurs manquantes et des nombres à virgule flottante
data = {
'name': ['Tom', 'Jerry', 'Mike', 'Lucy'],
'age': [28, 35, 42, None], # Valeur manquante
'score': [85.5, 92.3, 78.9, 95.0],
'city': ['Beijing', 'Shanghai', None, 'Shenzhen']
}
df = pd.DataFrame(data)
# Exemple 2a : Utilisation d'un délimiteur point-virgule
df.to_csv('output_semicolon.csv', sep=';', index=False)
print("Export avec délimiteur point-virgule :")
with open('output_semicolon.csv', 'r') as f:
print(f.read())
print()
# Exemple 2b : Personnaliser la représentation des valeurs manquantes
df.to_csv('output_na.csv', index=False, na_rep='N/A')
print("Représentation personnalisée des valeurs manquantes :")
with open('output_na.csv', 'r') as f:
print(f.read())
print()
# Exemple 2c : Formater les nombres à virgule flottante
# float_format utilise les chaînes de format Python
df.to_csv('output_float.csv', index=False, float_format='%.2f')
print("Nombres à virgule flottante formatés :")
with open('output_float.csv', 'r') as f:
print(f.read())
print()
# Exemple 2d : Exporter les colonnes sélectionnées
df.to_csv('output_columns.csv', index=False, columns=['name', 'score'])
print("Exporter les colonnes spécifiées :")
with open('output_columns.csv', 'r') as f:
print(f.read())
Sortie attendue :
使用分号分隔符导出:
name;age;score;city
Tom;28;85.5;Beijing
Jerry;35;92.3;Shanghai
Mike;42;78.9;Guangzhou
Lucy;;95;Shenzhen
自定义缺失值表示:
name,age,score,city
Tom,28,85.5,Beijing
Jerry,35,92.3,Shanghai
Mike,42,78.9,Guangzhou
Lucy,N/A,95.0,N/A
格式化浮点数:
name,age,score,c列
Tom,28,85.50,Beijing
Jerry,35,92.30,Shanghai
Mike,42,78.90,encoding
Lucy,,95.00,Shenzhen
导出指定列:
name,score
Tom,85.5
Jerry,92.3
自定义分隔符 78.9
Lucy,95.0
Analyse du code :
sepLe paramètre peut spécifier n'importe quel délimiteur, tel que le point-virgule, la tabulation, etc.na_repLe paramètre personnalise la représentation sous forme de chaîne des valeurs manquantes ; la valeur par défaut est une chaîne vide.float_formatLe paramètre utilise la syntaxe des chaînes de format Python.columnsLe paramètre n'exporte que les colonnes spécifiées.
Exemple 3 : Gestion de l'index et de l'encodage
La gestion de l'index et l'encodage des fichiers sont des exigences courantes lors de l'exportation.
Exemple
# Créer un DataFrame avec un index
data = {
'name': ['Tom', 'Jerry', 'Mike', 'Lucy'],
'age': [28, 35, 42, 26],
'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen']
}
df = pd.DataFrame(data)
df.index = ['A001', 'A002', 'A003', 'A004'] # Définir l'index
# Exemple 3a : Exporter l'index et spécifier le nom de la colonne d'index
df.to_csv('output_index.csv', index=True, index_label='user_id')
print("Avec l'index et le nom de la colonne d'index :")
with open('output_index.csv', 'r') as f:
print(f.read())
print()
# Exemple 3b : Ne pas exporter les noms de colonnes
df.to_csv('output_no_header.csv', header=False, index=False)
print("Sans noms de colonnes :")
with open('output_no_header.csv', 'r') as f:
print(f.read())
print()
# Exemple 3c : Utiliser l'encodage UTF-8 (prend en charge le chinois)
df_cn = pd.DataFrame({
'Name': ['Zhang San', 'Li Si', 'Wang Wu'],
'Age': [28, 35, 42],
'Ville': ['Pékin', 'Shanghai', 'Canton']
})
df_cn.to_csv('output_utf8.csv', index=False, encoding='utf-8-sig') # utf-8-sig prend en charge l'ouverture dans Excel
print("Encodage UTF-8 (avec le chinois) :")
with open('output_utf8.csv', 'r', encoding='utf-8-sig') as f:
print(f.read())
print()
# Exemple 3d : mode ajout
# Créer d'abord le fichier, puis ajouter les données
df.to_csv('output_append.csv', index=False)
# Ajouter plus de données
df_append = pd.DataFrame({
'name': ['John', 'Mary'],
'age': [30, 27],
'city': ['Hangzhou', 'Nanjing']
})
df_append.to_csv('output_append.csv', index=False, mode='a', header=False)
print("Mode d'ajout :")
with open('output_append.csv', 'r') as f:
print(f.read())
Sortie attendue :
带索引和索引列名: user_id,name,age,city A001,Tom,28,直接在 A002,Jerry,35,Shanghai A003,Mike,42,Guangzhou A004,Lucy,26,Shenzhen 不导出列名: Tom,28,Beijing Jerry,35,Shanghai Mike,42,Guangzhou Lucy,26,Shenzhen UTF-8 编码(含中文): 姓名,年龄,出现 张三,28,北京 李四,35,上海 王五,42,广州 追加模式: Tom,28,Beijing Jerry,35,CSV Mike,42,Guangzhou Lucy,26,Shenzhen John,30,Hangzhou Mary,27,Nanjing 追加模式 27, 格式
Analyse du code :
index_labelLe paramètre attribue un nom à la colonne d'index.header=FalseNe pas exporter les noms de colonnes est adapté à l'ajout et à la fusion de plusieurs fichiers.encoding='utf-8-sig'Ajoute un BOM avant l'encodage UTF-8, ce qui facilite son ouverture directe dans Excel.mode='a'Le mode d'ajout ajoute de nouvelles données à la fin d'un fichier existant.
Notes
- Par défaut, l'index est exporté. Si ce n'est pas nécessaire, vous pouvez définir
index=False。 - Lors du traitement de données chinoises, pensez à spécifier l'encodage correct (recommandé :
utf-8-sig)。 mode='a'En mode ajout, faites attention à si vous devez également définirheader=Falsepour éviter les noms de colonnes en double.- Lors de l'exportation d'un grand DataFrame, vous pouvez utiliser le
chunksizeparamètre pour écrire par blocs. float_formatUtilisez la syntaxe de formatage de Python, telle que'%.2f'pour conserver deux décimales.
Résumé
to_csv()C'est l'une des méthodes d'exportation les plus couramment utilisées du DataFrame, avec des fonctionnalités très complètes. Elle peut exporter des données vers des fichiers CSV dans divers formats, en prenant en charge des délimiteurs personnalisés, l'encodage, la gestion de l'index, etc.
Dans le travail pratique, CSV est un format courant d'échange de données,to_csv()et sa fréquence d'utilisation est très élevée. Il est recommandé que les lecteurs maîtrisent l'utilisation des différents paramètres, en particulier la gestion de l'encodage et le contrôle de l'index.
Autres extensions
Fonctions courantes de Pandas