
📊 CSV vs. Parquet vs. Arrow: ¿Cuál usar para tus datos?
Si trabajás con datos tabulares en Python, tarde o temprano te vas a cruzar con estos tres formatos. ¿Sabés cuándo usar cada uno?
CSV — Simple y universal
- Texto plano, una fila por línea
- Compatible con Excel, pandas, bases de datos, cualquier herramienta
- ❌ Sin esquema explícito: los tipos se infieren cada vez
- ❌ Lento con datasets grandes: parsear texto es CPU-intensivo
Parquet — Para analytics a gran escala
- Formato binario columnar: almacena todos los valores de cada columna juntas
- ✅ Compresión excelente (Snappy, Gzip): archivos 5-10x más pequeños que CSV
- ✅ Lee solo las columnas que necesitás (column pruning)
- ✅ Esquema guardado: tipos preservados sin inferencia
- Ideal para batch processing y millones/miles de millones de filas
Arrow — El formato en memoria
- Columnar en RAM: diseñado para operaciones ultrarrápidas
- ✅ Zero-copy reads: accedé a datos en disco sin cargarlos en memoria
- ✅ Operaciones vectorizadas sobre columnas
- ✅ Interoperable con pandas, Polars, Spark, PyArrow
- En Hugging Face Datasets, todo dataset internamente es Arrow
🔍 Explicación en pocas palabras
“Columnar” significa que en lugar de guardar fila a fila (nombre1, edad1, ciudad1 / nombre2, edad2, ciudad2), se guardan todos los nombres juntos, todas las edades juntas. Esto acelera enormemente las consultas que solo necesitan algunas columnas y permite comprimir mejor los datos similares.
📌 Regla práctica: CSV para experimentos rápidos → Parquet para guardar tablas grandes → Arrow para entrenamiento rápido en memoria.
Más información en el link 👇

