Saltar al contenido

Evitar problemas de memoria para GroupBy en grandes marcos de datos de pandas

Solución:

Si tiene columnas categóricas en sus datos (en lugar de categorías almacenadas como columnas o cadenas de objetos), asegúrese de usar la opción observado = True en su comando groupby. Esto asegura que solo crea líneas donde hay una entrada, por ejemplo, solo una línea por combinación de customer_id, order_id, en lugar de crear n_custs * n_orders lines.

Acabo de hacer una suma de grupo en un conjunto de datos de 26 millones de filas, sin superar los 7 GB de RAM. Antes de agregar la opción observado = True, subía a 62 GB y luego se agotaba.

podría usar dask.dataframe para esta tarea

import dask.dataframe as dd
df = dd.from_pandas(df)
result = df.groupby('id').max().reset_index().compute()

Todo lo que necesita hacer es convertir su pandas.DataFrame en un dask.dataframe. Dask es un marco de trabajo de paralelización fuera del núcleo de Python que ofrece varios tipos de contenedores paralelizados, uno de los cuales es el marco de datos. Le permite realizar las operaciones pandas.DataFrame más comunes en paralelo y / o distribuidas con datos que son demasiado grandes para caber en la memoria. El núcleo de dask es un conjunto de programadores y una API para construir gráficos de cálculo, por lo tanto, tenemos que llamar a .compute () al final para que cualquier cálculo se lleve a cabo. La biblioteca es fácil de instalar porque está escrita en Python puro en su mayor parte.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *