2017-06-22 3 views
2

df = df.groupby(df.index).sum()パンダ:df.groupby()は大きなデータセットでは遅すぎます。任意の代替方法?

私は380万行(単一列)のデータフレームを持っており、インデックスごとにグループ化しようとしています。しかし、計算を終わらせることは永遠に必要です。非常に大きなデータセットを扱う代替手段はありますか?前もって感謝します!!!!

私はPythonで書いています。

データは以下のようになります。 インデックスは顧客IDです。私はqty_literIndexでグループ化したいと思います。

df = df.groupby(df.index).sum()

しかし、このコード行はtoooo多くの時間がかかっている.....

enter image description here

このDFに関する情報は以下の通りです:

df.info()

<class 'pandas.core.frame.DataFrame'> Index: 3842595 entries, -2147153165 to \N Data columns (total 1 columns): qty_liter object dtypes: object(1) memory usage: 58.6+ MB

+2

'df.info()'を表示できますか? – chrisb

+0

インデックスを最初の列として保存しておけば、端末のこの1つのライナーは 'awk 'BEGIN {FS = OFS ="、 "} {a [$ 1] + = $ 2} END {for(i a)print i、a [i]} '' –

+2

あなたはいくつの固有のグループを持っていますか? 380万のユニークなインデックスがあっても、1秒未満で合計を計算します(私は浮動小数点数で試しました)。 – ayhan

答えて

0

問題は、データが数値ではないことです。処理文字列は、処理数よりもはるかに時間がかかります。最初に試してください:

df.index = df.index.astype(int) 
df.qty_liter = df.qty_liter.astype(float) 

次に、groupby()をもう一度実行してください。はるかに速くなければなりません。そうであれば、最初から適切なdtypeを持つようにデータ読み込みステップを変更できるかどうかを確認してください。

関連する問題