Función df.to_csv() de Pandas

Python 常用函数Funciones comunes 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ámetroTipoDescripciónValor por defecto
path_or_bufstr, path object, file-like objectRuta del archivo; si es None, devuelve una cadenaNone
sepstrSeparador de campos','
na_repstrRepresentación de valores faltantes''
float_formatstrFormato de números de punto flotanteNone
columnslistEspecificar las columnas a exportarNone
headerbool, listSi exportar los nombres de columnaTrue
indexboolSi exportar el índiceTrue
index_labelstrNombre de la columna de índiceNone
modestrModo de escritura: 'w' sobrescribe, 'a' añade'w'
encodingstrCodificación de archivoNone

Valor de retorno

  • Tipo de retorno:Noneostr
  • Cuando se especifica una ruta de archivo, escribe en el archivo y devuelve None.
  • Cuandopath_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

import pandas as pd

# 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.
  • Configurandoindex=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

import pandas as pd

# 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

import pandas as pd

# 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 configurarindex=False。
  • Al procesar datos en chino, recuerda especificar la codificación correcta (se recomiendautf-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


Python 常用函数Otras extensiones

IA pensando...