Función df.to_csv() de Pandas
to_csv()Es un método de DataFrame que se utiliza para exportar datos a un archivo en formato CSV (valores separados por comas).
CSV es uno de los formatos de exportación de datos más utilizados. Almacena datos tabulares en texto plano, tiene una alta compatibilidad y casi todas las herramientas de análisis de datos pueden leerlo.to_csv()Ofrece una amplia funcionalidad; admite opciones como separadores personalizados, codificación, manejo de índices, etc., y puede satisfacer diversas necesidades de exportación.
Sintaxis básica y parámetros
Formato de sintaxis
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, ...)
Descripción de parámetros
| Parámetro | Tipo | Descripción | Valor por defecto |
|---|---|---|---|
| path_or_buf | str, path object, file-like object | Ruta del archivo; si es None, devuelve una cadena | None |
| sep | str | Separador de campos | ',' |
| na_rep | str | Representación de valores faltantes | '' |
| float_format | str | Formato de números de punto flotante | None |
| columns | list | Especificar las columnas a exportar | None |
| header | bool, list | Si exportar los nombres de columna | True |
| index | bool | Si exportar el índice | True |
| index_label | str | Nombre de la columna de índice | None |
| mode | str | Modo de escritura: 'w' sobrescribe, 'a' añade | 'w' |
| encoding | str | Codificación de archivo | None |
Valor de retorno
- Tipo de retorno:
Noneostr - Cuando se especifica una ruta de archivo, escribe en el archivo y devuelve None.
- Cuando
path_or_buf=NoneCuando es None, devuelve una cadena en formato CSV.
Ejemplos
A través de los siguientes ejemplos, domina por completoto_csv()los diversos usos de df.to_csv().
Ejemplo 1: Uso básico - Exportar a archivo CSV
Primero crea un DataFrame y luego usato_csv()para exportarlo a un archivo CSV.
Ejemplo
# Crear un DataFrame de ejemplo
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)
# Ejemplo 1a: La exportación más básica
# path_or_buf: ruta del archivo (el parámetro obligatorio es la ruta del archivo; aquí se establece como None y devuelve una cadena)
csv_string = df.to_csv() # Si no se especifica la ruta, devuelve una cadena
print("Cadena CSV devuelta:")
print(csv_string)
print()
# Exportar a archivo
# Por defecto se incluyen el índice y los nombres de columna
df.to_csv('output_basic.csv', index=False) # index=False no exporta el índice
print("Exportado a output_basic.csv")
# Verificación de lectura
df_check = pd.read_csv('output_basic.csv')
print("nVerificación de lectura:")
print(df_check)
Resultado esperado de la ejecución:
返回的 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
Análisis del código:
to_csv()Por defecto se exportan el índice (la primera columna sin nombre) y los nombres de columna.- Configurando
index=Falsese puede no exportar el índice, lo que facilita la importación. - Cuando no se especifica una ruta, devuelve una cadena en formato CSV.
Ejemplo 2: Personalizar separador y formato
Los archivos CSV pueden usar diferentes separadores, y también se pueden personalizar los formatos de los números y los valores faltantes.
Ejemplo
# Crear un DataFrame con valores faltantes y números de punto flotante
data = {
'name': ['Tom', 'Jerry', 'Mike', 'Lucy'],
'age': [28, 35, 42, None], # valores faltantes
'score': [85.5, 92.3, 78.9, 95.0],
'city': ['Beijing', 'Shanghai', None, 'Shenzhen']
}
df = pd.DataFrame(data)
# Ejemplo 2a: Usar separador de punto y coma
df.to_csv('output_semicolon.csv', sep=';', index=False)
print("Exportar usando separador de punto y coma:")
with open('output_semicolon.csv', 'r') as f:
print(f.read())
print()
# Ejemplo 2b: Personalizar la representación de valores faltantes
df.to_csv('output_na.csv', index=False, na_rep='N/A')
print("Representación personalizada de valores faltantes:")
with open('output_na.csv', 'r') as f:
print(f.read())
print()
# Ejemplo 2c: Formatear números de punto flotante
# float_format usa cadenas de formato de Python
df.to_csv('output_float.csv', index=False, float_format='%.2f')
print("Formatear números de punto flotante:")
with open('output_float.csv', 'r') as f:
print(f.read())
print()
# Ejemplo 2d: Exportar algunas columnas
df.to_csv('output_columns.csv', index=False, columns=['name', 'score'])
print("Exportar columnas especificadas:")
with open('output_columns.csv', 'r') as f:
print(f.read())
Resultado esperado de la ejecución:
使用分号分隔符导出:
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
Análisis del código:
sepEl parámetro puede especificar cualquier separador, como punto y coma, tabulador, etc.na_repEl parámetro personaliza la representación en cadena de los valores faltantes; el valor por defecto es una cadena vacía.float_formatEl parámetro utiliza la sintaxis de cadenas de formato de Python.columnsEl parámetro solo exporta las columnas especificadas.
Ejemplo 3: Manejo de índice y codificación
El manejo del índice y la codificación de archivos son necesidades comunes al exportar.
Ejemplo
# Crear un DataFrame con índice
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'] # Configurar el índice
# Ejemplo 3a: Exportar el índice y especificar el nombre de la columna de índice
df.to_csv('output_index.csv', index=True, index_label='user_id')
print("Con índice y nombre de columna de índice:")
with open('output_index.csv', 'r') as f:
print(f.read())
print()
# Ejemplo 3b: No exportar nombres de columna
df.to_csv('output_no_header.csv', header=False, index=False)
print("No exportar nombres de columna:")
with open('output_no_header.csv', 'r') as f:
print(f.read())
print()
# Ejemplo 3c: Usar codificación UTF-8 (compatible con chino)
df_cn = pd.DataFrame({
'Nombre': ['Zhang San', 'Li Si', 'Wang Wu'],
'Edad': [28, 35, 42],
'Ciudad': ['Beijing', 'Shanghai', 'Guangzhou']
})
df_cn.to_csv('output_utf8.csv', index=False, encoding='utf-8-sig') # utf-8-sig admite la apertura en Excel
print("Codificación UTF-8 (con chino):")
with open('output_utf8.csv', 'r', encoding='utf-8-sig') as f:
print(f.read())
print()
# Ejemplo 3d: Modo adición
# Primero crear el archivo, luego añadir datos
df.to_csv('output_append.csv', index=False)
# Añadir más datos
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("Modo adición:")
with open('output_append.csv', 'r') as f:
print(f.read())
Resultado esperado de la ejecución:
带索引和索引列名: 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, 格式
Análisis del código:
index_labelEl parámetro asigna un nombre a la columna de índice.header=FalseNo exportar nombres de columna es adecuado para añadir y combinar múltiples archivos.encoding='utf-8-sig'Añade BOM antes de la codificación UTF-8, lo que permite abrir el archivo directamente en Excel.mode='a'El modo adición añade nuevos datos al final del archivo existente.
Notas
- Por defecto se exporta el índice; si no es necesario, se puede configurar
index=False。 - Al procesar datos en chino, recuerda especificar la codificación correcta (se recomienda
utf-8-sig)。 mode='a'Evitar nombres de columna duplicados.header=FalseAl exportar un DataFrame grande, se puede usar- el parámetro para escribir en bloques.
chunksizeUsar la sintaxis de formato de Python, como float_formatpara conservar dos decimales.'%.2f'Resumen
Resumen
to_csv()En el trabajo práctico, CSV es un formato universal para el intercambio de datos,
su frecuencia de uso es muy alta. Se recomienda que los lectores dominen el uso de los diversos parámetros, especialmente el manejo de codificación y el control del índice.to_csv()Funciones comunes de Pandas
IA pensando...
Funciones comunes de Pandas