Skip to content

Tutorial de pandas read_csv(): Importa archivos CSV como un profesional

Updated on

La función pandas.read_csv() es una de las herramientas más usadas en el análisis de datos. Tanto si estás importando conjuntos de datos pequeños como archivos de varios GB, entender cómo funciona read_csv() —y cómo optimizarlo— te ahorrará tiempo, memoria y esfuerzo de depuración.

Esta guía actualizada para 2025 cubre todo lo que necesitas para cargar archivos CSV de forma limpia, rápida y correcta, incluyendo buenas prácticas para Pandas 2.0, el motor PyArrow, manejo de codificaciones, parseo de fechas y corrección de errores comunes.


⚡ ¿Quieres gráficos instantáneos desde tu DataFrame?

PyGWalker convierte tu DataFrame de Pandas/Polars en una interfaz visual interactiva, directamente dentro de Jupyter Notebook.

Arrastra y suelta columnas → genera gráficos al instante → explora tus datos visualmente.

Pruébalo con una sola línea:

pip install pygwalker
import pygwalker as pyg
gwalker = pyg.walk(df)
Run in Kaggle (opens in a new tab)Run in Google Colab (opens in a new tab)⭐️ Star PyGWalker (opens in a new tab)

¿Qué es pandas.read_csv()?

read_csv() es el método principal para importar archivos CSV a un DataFrame, la estructura de datos central en pandas. Soporta:

  • delimitadores personalizados
  • manejo de valores perdidos
  • inferencia de tipos o control manual de tipos
  • parseo de fechas
  • lectura en flujo de archivos grandes
  • múltiples motores (python, c, pyarrow)
  • indexado sobre la marcha
  • selección eficiente de columnas

Pandas 2.0 introdujo PyArrow como backend más rápido y eficiente en memoria, haciendo que la carga de CSV sea aún más potente.


Uso básico

import pandas as pd
 
df = pd.read_csv("your_file.csv")
df.head()

Sencillo, pero en proyectos reales los CSV rara vez están limpios. A continuación veremos los parámetros más útiles.


Parámetros comunes de read_csv() (Referencia rápida)

ParámetroDescripción
sepDelimitador de columnas (por defecto ,)
usecolsCargar solo columnas seleccionadas
index_colEstablecer una columna como índice
dtypeAplicar tipos de datos manualmente
parse_datesParsear columnas de fecha automáticamente
na_valuesPersonalizar marcadores de valores perdidos
on_bad_linesOmitir o avisar sobre filas mal formadas
engineElegir parser: "python", "c", "pyarrow"
chunksizeLeer archivos grandes en bloques (streaming)
encodingManejar codificaciones (utf-8, latin-1, etc.)

1. Establecer una columna como índice

Opción A — después de cargar:

df = df.set_index("id")

Opción B — durante la carga:

df = pd.read_csv("file.csv", index_col="id")

2. Leer solo columnas específicas

Acelera la carga y reduce el uso de memoria:

df = pd.read_csv("file.csv", usecols=["name", "age", "score"])

3. Manejar valores perdidos

df = pd.read_csv("file.csv", na_values=["NA", "-", ""])

4. Parsear fechas automáticamente

df = pd.read_csv("sales.csv", parse_dates=["date"])

Pandas inferirá el formato de fecha y hora correcto.


5. Corregir errores de codificación (muy comunes)

df = pd.read_csv("file.csv", encoding="utf-8", errors="ignore")

Si falla UTF-8:

df = pd.read_csv("file.csv", encoding="latin-1")

6. Usar el motor PyArrow (Pandas 2.0+)

Para un parseo más rápido y mejor eficiencia de memoria:

df = pd.read_csv("file.csv", engine="pyarrow")

Combínalo con los nuevos dtypes basados en Arrow:

df = pd.read_csv(
    "file.csv",
    engine="pyarrow",
    dtype_backend="pyarrow"
)

7. Leer CSV grandes (1GB–100GB)

Usa lectura por bloques (chunking):

reader = pd.read_csv("big.csv", chunksize=100_000)
 
for chunk in reader:
    process(chunk)

O carga solo columnas y tipos necesarios:

df = pd.read_csv(
    "big.csv",
    usecols=["user_id", "timestamp"],
    dtype={"user_id": "int32"},
)

8. Errores comunes y cómo solucionarlos

❌ UnicodeDecodeError

Usa:

encoding="latin-1"

❌ ParserError: Error tokenizing data

El archivo contiene filas mal formadas:

pd.read_csv("file.csv", on_bad_lines="skip")

❌ MemoryError con archivos grandes

Usa:

  • chunksize
  • usecols
  • backend Arrow (dtype_backend="pyarrow")

❌ Delimitador incorrecto

pd.read_csv("file.csv", sep=";")

Ejemplo práctico: importación limpia

df = pd.read_csv(
    "sales.csv",
    sep=",",
    parse_dates=["date"],
    dtype={"amount": "float64"},
    na_values=["NA", ""],
    engine="pyarrow"
)

Cuándo usar CSV — y cuándo evitarlo

CSV es ideal para:

  • portabilidad
  • pipelines sencillos
  • conjuntos de datos pequeños/medianos

Pero evita CSV cuando necesitas:

  • velocidad
  • compresión
  • consistencia de esquema
  • tipos complejos

Para analítica a gran escala, prefiere Parquet.


Preguntas frecuentes (FAQs)

¿Cómo detecto delimitadores automáticamente?

pd.read_csv("file.csv", sep=None, engine="python")

¿Cómo salto filas de encabezado?

pd.read_csv("file.csv", skiprows=3)

¿Cómo cargo un CSV comprimido en zip?

pd.read_csv("file.csv.zip")

Conclusión

pandas.read_csv() es una herramienta potente y flexible que puede manejar prácticamente cualquier escenario de importación de CSV, desde archivos simples hasta conjuntos de datos de varios GB.

Al entender los parámetros más útiles, usar PyArrow en Pandas 2.0+ y aplicar buenas prácticas (selección de columnas, parseo de fechas, manejo de errores), mejorarás drásticamente tu flujo de trabajo de carga de datos.


Más tutoriales de Pandas