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ámetro | Descripción |
|---|---|
sep | Delimitador de columnas (por defecto ,) |
usecols | Cargar solo columnas seleccionadas |
index_col | Establecer una columna como índice |
dtype | Aplicar tipos de datos manualmente |
parse_dates | Parsear columnas de fecha automáticamente |
na_values | Personalizar marcadores de valores perdidos |
on_bad_lines | Omitir o avisar sobre filas mal formadas |
engine | Elegir parser: "python", "c", "pyarrow" |
chunksize | Leer archivos grandes en bloques (streaming) |
encoding | Manejar 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:
chunksizeusecols- 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