Ошибка памяти сводной таблицы Pandas, доступно много памяти - PullRequest
0 голосов
/ 25 мая 2018

Информация о моем df:

RangeIndex: 14151145 entries, 0 to 14151144
Data columns (total 4 columns):
id    object
idf   object
ch    object
hr    uint8
dtypes: object(3), uint8(1)
memory usage: 337.4+ MB

В моей системе 120 ГБ памяти, и при запуске:

dfp = df.pivot_table(index='id', columns=['idf','ch'],aggfunc='count')

Моя результирующая сводная таблица будет иметь 10800 столбцов.

Потребление моей памяти составляет около 35 ГБ, а затем я получаю ошибку памяти.Я не могу понять эту проблему, так как у меня много свободной памяти.

Я запускаю код в JupyterNotebook.

1 Ответ

0 голосов
/ 28 мая 2018

Я не смог найти ничего, что помогло бы мне обработать все мои данные за один раз.

Итак, я нарезал свою df на n частей по сравнению с идентификаторами каждый идентификатор может иметь несколько образцов.

def partition(lst, n):
    division = len(lst) / float(n)
    return [ lst[int(round(division * i)): int(round(division * (i + 
    1)))] for i in range(n) ]

chunks_df = pd.DataFrame()

ids = dt_m['id'].unique()
part_ids=partition(ids,5)

i=0
gc.collect()
for lst in part_ids:
     chunks_df=chunks_df.append(dt_m[dt_m['id'].isin(lst)].PIVOT_OPERATION())

     print("{} batch done".format(i))
     i=i+1 
...