bugfix> pandas > 投稿

私の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

私のシステムには120GBのメモリがあり、実行すると:

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

結果のピボットテーブルには10800列あります。

私のメモリ消費量は約35 GBになり、その後メモリエラーが発生します。 空きメモリが多いため、この問題を理解できません。

JupyterNotebookでコードを実行しています。

回答 1 件
  • すべてのデータを一度に処理するのに役立つものは見つかりませんでした。

    だから、私のdfをにスライスn ピースw.r.t toID、各IDには複数のサンプルを含めることができます。

    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
    
    

あなたの答え