HOWTO · Pandas
Leer archivo Parquet en Pandas DataFrame
Este tutorial demuestra cómo leer archivos Parquet en un DataFrame de pandas en Python.
En esta página
Para cargar un archivo Parquet en un DataFrame de pandas, instala pandas y un motor Parquet compatible, y luego llama a pandas.read_parquet(). El ejemplo siguiente usa PyArrow, escribe un pequeño DataFrame en un archivo temporal y lo vuelve a leer.
Archivos Parquet
Parquet es un formato de archivo columnar para datos tabulares. Almacena los valores por columna y puede incluir información de esquema y compresión, por lo que se usa con frecuencia para conjuntos de datos analíticos. CSV es un formato de filas basado en texto. Los formatos tienen diferentes ventajas y desventajas; ninguno es universalmente más rápido o más eficiente. La cantidad de datos leídos y el motor seleccionado pueden afectar el trabajo realizado al cargar un conjunto de datos.
Parquet está pensado para datos estructurados como tablas, y no como un contenedor general para archivos de video, audio o imagen. Un archivo Parquet puede contener columnas cuyos valores hacen referencia a medios almacenados en otro lugar, pero los medios en sí no son el propósito del formato tabular.
Leer archivo Parquet en Pandas DataFrame
Instala pandas y PyArrow en el entorno de Python que ejecuta tu programa con python -m pip install pandas pyarrow. Pandas necesita un motor Parquet compatible para manejar el archivo. Este ejemplo selecciona PyArrow de forma explícita; el motor debe estar instalado, y las opciones disponibles pueden depender de tu entorno de pandas. El motor alternativo que se usa comúnmente con pandas es fastparquet; instálalo y selecciónalo solo cuando se adapte a tu entorno.
Usa pd.read_parquet(path, engine="pyarrow") cuando ya tienes un archivo. path puede identificar un archivo local o una fuente remota compatible. La función devuelve un DataFrame de pandas. Para un conjunto de datos existente, establece columns=[...] para solicitar columnas concretas cuando el motor y la fuente elegidos admitan esa operación. La firma completa de la función y las opciones aceptadas pueden variar según la versión de pandas y el motor, así que consulta la documentación de las versiones instaladas en tu proyecto antes de confiar en argumentos adicionales.
Para un archivo local, una ruta relativa se resuelve desde el directorio de trabajo actual del programa; usa una ruta absoluta si el script puede ejecutarse desde directorios diferentes. Al leer desde un almacén remoto, la fuente debe ser compatible con el motor seleccionado, y cualquier credencial o configuración de almacenamiento necesaria debe estar disponible para el proceso. El DataFrame devuelto contiene las columnas y filas decodificadas del archivo, con tipos de datos determinados a partir del esquema almacenado y las asignaciones de tipos compatibles del lector. Si un valor necesita un tipo de pandas diferente para un análisis posterior, convierte esa columna después de cargar.
El ejemplo siguiente comprueba si PyArrow está disponible antes de intentar el viaje de ida y vuelta local con Parquet. Siempre imprime el DataFrame de ejemplo; cuando PyArrow está instalado, también escribe y lee un archivo Parquet temporal. Instala pandas y PyArrow en el entorno activo para ejecutar el viaje de ida y vuelta completo.
from importlib.util import find_spec
from pathlib import Path
from tempfile import TemporaryDirectory
import pandas as pd
students = pd.DataFrame(
{
"student": ["Alia", "Zoya", "Ali"],
"marks": [20, 10, 22],
}
)
if find_spec("pyarrow") is None:
print("PyArrow is not installed; displaying the sample DataFrame only.")
print(students.to_string(index=False))
else:
with TemporaryDirectory() as directory:
parquet_path = Path(directory) / "students.parquet"
students.to_parquet(parquet_path, engine="pyarrow", index=False)
loaded = pd.read_parquet(parquet_path, engine="pyarrow")
print(loaded.to_string(index=False))
En el entorno utilizado para comprobar este ejemplo, PyArrow no está disponible, por lo que el código informa de esa limitación y muestra el ejemplo en memoria en lugar de afirmar que se leyó un archivo Parquet. Una vez instalado PyArrow, el mismo código realiza el viaje de ida y vuelta y muestra las filas cargadas.
PyArrow is not installed; displaying the sample DataFrame only.
student marks
Alia 20
Zoya 10
Ali 22
Para un archivo de tu proyecto, reemplaza parquet_path por su ruta y mantén el motor coherente con los paquetes instalados en tu entorno. Si tu motor instalado es diferente, selecciona ese motor en read_parquet() y confirma sus opciones admitidas. Después de cargar, inspecciona loaded.head() para una vista previa rápida o loaded.dtypes para comprobar los tipos de columna inferidos antes de continuar con el análisis.