Pandas & NumPy Academy · Lección

Escritura de DataFrames en archivos

Exporte un DataFrame limpio a CSV y Excel con to_csv y to_excel, controlando el índice y el formato de los valores de tipo float.

Lección 3 de 413 pasos

Escritura de DataFrames en archivos es una lección gratuita de Pandas & NumPy Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de Pandas & NumPy Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de Pandas & NumPy Academy incluye 4 lecciones en total.

Por qué es importante exportar

El análisis de datos rara vez termina dentro de Python. Necesita compartir conjuntos de datos depurados con las partes interesadas, introducir los resultados en otras herramientas o archivar los datos procesados para poder reproducirlos. Pandas proporciona to_csv(), to_excel(), to_json() y to_parquet(), que reflejan las funciones de lectura y aceptan la mayoría de los mismos parámetros de configuración.

import pandas as pd

df = pd.DataFrame({'name': ['A', 'B'], 'score': [90, 75]})
df.to_csv('results.csv')
df.to_excel('results.xlsx')
df.to_json('results.json', orient='records')

to_csv(): el problema del índice

De forma predeterminada, to_csv() escribe el índice de las filas como la primera columna, lo que crea una columna unnamed: 0 al volver a leer el archivo. Pase index=False para omitir el índice; casi siempre es la opción correcta, salvo que el índice contenga datos significativos, como fechas. Especifique siempre index=False, a menos que tenga un motivo concreto para incluir el índice.

import pandas as pd

df = pd.DataFrame({'a': [1, 2], 'b': [3, 4]})

# Include index (default -- creates 'Unnamed: 0' when re-read)
df.to_csv('with_index.csv')

# Exclude index (recommended)
df.to_csv('clean.csv', index=False)

Control del delimitador y la codificación

Pase sep= para escribir un archivo separado por tabuladores o por punto y coma. Use encoding= para especificar UTF-8 u otro juego de caracteres, algo esencial cuando los valores de las columnas contienen caracteres no ASCII, como tildes o caracteres chinos. encoding='utf-8-sig' añade una BOM (marca de orden de bytes) para garantizar la compatibilidad con Excel en Windows.

import pandas as pd

df = pd.DataFrame({'name': ['Müller', 'Tanaka'], 'val': [1, 2]})
# Tab-separated, UTF-8
df.to_csv('output.tsv', sep='\t', encoding='utf-8', index=False)

# Excel-compatible UTF-8 with BOM
df.to_csv('for_excel.csv', encoding='utf-8-sig', index=False)

Control del formato de los valores flotantes

De forma predeterminada, Pandas escribe los valores flotantes con toda su precisión. Use float_format='%.2f' para limitar los valores a 2 decimales, algo importante en datos financieros, donde los decimales adicionales pueden resultar incorrectos para los lectores. Pase na_rep='NULL' o na_rep='' para controlar cómo se escriben los valores NaN en el archivo de salida.

import pandas as pd
import numpy as np

df = pd.DataFrame({'price': [9.99, np.nan, 14.123456],
                   'qty': [1, 2, 3]})
df.to_csv('prices.csv',
          index=False,
          float_format='%.2f',
          na_rep='N/A')

to_excel(): escritura de una hoja

df.to_excel('file.xlsx', sheet_name='Data', index=False) escribe el DataFrame en un libro de Excel. Al igual que con to_csv(), establezca index=False salvo que el índice sea significativo. Los parámetros startrow= y startcol= permiten colocar la tabla dentro de la hoja, lo que resulta útil para añadir una fila de título encima de los datos.

import pandas as pd

df = pd.DataFrame({'product': ['A', 'B'], 'sales': [100, 200]})
df.to_excel('report.xlsx',
            sheet_name='Sales',
            index=False,
            startrow=1)  # leave row 0 for a title

Escritura de varias hojas con ExcelWriter

Para escribir varios DataFrames en distintas hojas del mismo libro, use pd.ExcelWriter como gestor de contexto. Llame a df.to_excel(writer, sheet_name='Name') para cada DataFrame dentro del bloque with. El libro se finaliza y se guarda al salir del contexto. Así evita crear varios archivos independientes para tablas relacionadas.

import pandas as pd

df1 = pd.DataFrame({'a': [1, 2]})
df2 = pd.DataFrame({'b': [3, 4]})

with pd.ExcelWriter('multi_sheet.xlsx', engine='openpyxl') as writer:
    df1.to_excel(writer, sheet_name='Sheet1', index=False)
    df2.to_excel(writer, sheet_name='Sheet2', index=False)

to_json(): exportación a JSON

df.to_json() serializa un DataFrame en JSON. El parámetro orient= refleja el de read_json: use 'records' para una lista de diccionarios de filas (la opción más interoperable), 'columns' para un diccionario de arrays de columnas o 'index' para un diccionario cuyas claves sean las etiquetas de las filas. Pase indent=2 para aplicar un formato legible.

import pandas as pd

df = pd.DataFrame({'name': ['A', 'B'], 'score': [90, 75]})
print(df.to_json(orient='records', indent=2))
# [
#   {"name": "A", "score": 90},
#   {"name": "B", "score": 75}
# ]

Añadir contenido a un archivo existente

Para añadir filas a un CSV existente sin sobrescribirlo, abra el archivo en modo de adición mediante mode='a' y establezca header=False para evitar duplicar la fila de encabezados. Para Excel, use ExcelWriter con mode='a'. En procesos de streaming grandes, añada los datos por fragmentos y escriba los encabezados únicamente en el primer fragmento.

import pandas as pd

df_new = pd.DataFrame({'a': [5, 6], 'b': [7, 8]})
# Append to existing file, skip writing header
df_new.to_csv('existing.csv',
              mode='a',
              header=False,
              index=False)

Selección de columnas antes de exportar

Una buena práctica antes de exportar consiste en seleccionar únicamente las columnas que necesita el destinatario y ordenar las filas de forma lógica. Esto hace que el archivo de salida sea más limpio y evita filtrar accidentalmente columnas internas, como identificadores internos, características codificadas o indicadores de depuración. Use la selección mediante corchetes y sort_values() en la misma expresión de pipeline antes de escribir.

import pandas as pd

df = pd.DataFrame({'id': [3,1,2],
                   'name': ['C','A','B'],
                   '_internal': [9,7,8]})

(df[['id', 'name']]
   .sort_values('id')
   .to_csv('export.csv', index=False))

Verificación del archivo escrito

Después de escribir el archivo, vuelva a leerlo y verifique siempre lo siguiente: compruebe shape, los nombres de las columnas y algunos valores seleccionados. En procesos de CI, compare las sumas de comprobación. En exportaciones financieras críticas, asegúrese de que los totales agregados coincidan. Esto permite detectar problemas de codificación, pérdida de precisión de los valores flotantes y problemas con el índice antes de que el archivo llegue a un consumidor posterior.

import pandas as pd

df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
df.to_csv('/tmp/check.csv', index=False)

df_check = pd.read_csv('/tmp/check.csv')
assert df_check.shape == df.shape, 'Row/column count mismatch'
assert list(df_check.columns) == list(df.columns)
print('Export verified OK')

Parquet: una alternativa mejor para los datos

Para conjuntos de datos analíticos grandes, considere el formato Parquet en lugar de CSV. Parquet almacena los datos en formato columnar, admite compresión, conserva los dtypes exactamente y puede leer entre 10 y 100 veces más rápido en consultas analíticas. Escriba con df.to_parquet('data.parquet') y lea con pd.read_parquet('data.parquet'). Es necesario tener instalado pyarrow o fastparquet.

import pandas as pd

df = pd.DataFrame({'a': range(1000000), 'b': range(1000000)})
df.to_parquet('data.parquet', index=False)

df2 = pd.read_parquet('data.parquet')
print(df2.dtypes)  # dtypes preserved exactly

Comprobación rápida

Ponga a prueba su comprensión de la escritura de DataFrames en archivos en esta lección.

Resumen de la lección

En esta lección ha aprendido: to_csv() y to_excel() exportan DataFrames y ambos incluyen el índice de forma predeterminada; establezca siempre index=False para obtener una salida limpia, ExcelWriter permite escribir varios DataFrames en hojas separadas dentro de un mismo libro y Parquet es una alternativa más rápida y eficiente en cuanto al espacio que CSV para grandes conjuntos de datos analíticos. A continuación, cargaremos archivos CSV remotos desde URL y analizaremos cadenas CSV en memoria con io.StringIO.

Gratis para empezar

Aprende Python con un tutor de IA — gratis

Escribe y ejecuta código real en tu navegador, obtén ayuda instantánea de un tutor de IA disponible 24/7 y continúa donde lo dejaste en la web o en la aplicación.

Cursos
30
Lecciones
120

Preguntas frecuentes

¿La lección «Escritura de DataFrames en archivos» es gratis?

Sí — el texto completo de «Escritura de DataFrames en archivos» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de Pandas & NumPy Academy, actualiza a CoddyKit PRO. El curso de Pandas & NumPy Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Escritura de DataFrames en archivos»?

Exporte un DataFrame limpio a CSV y Excel con to_csv y to_excel, controlando el índice y el formato de los valores de tipo float. Practicas Pandas & NumPy Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar Pandas & NumPy Academy?

No se requiere experiencia previa. Pandas & NumPy Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Escritura de DataFrames en archivos»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de Pandas & NumPy Academy?

Sí. Cada lección de Pandas & NumPy Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. Lectura de archivos CSV
  2. Lectura de archivos Excel y JSON
  3. Escritura de DataFrames en archivos
  4. Lectura desde URL y StringIO
← Volver a Pandas & NumPy Academy