以下のようなデータフレームが100万レコードほどあったとします。
(実際のデータフレームはカラム25個、レコード数92万レコード)
id | value1 | value2 |
---|---|---|
1 | 234 | 23 |
1 | 235 | 24 |
2 | 345 | 34 |
2 | 346 | 35 |
2 | 347 | 36 |
2 | 234 | 23 |
3 | 235 | 24 |
3 | 345 | 34 |
3 | 346 | 35 |
4 | 456 | 45 |
... | ... | ... |
上記のようなデータフレームがあり、各idごとに抜き出してforで処理をしていましたが、
流石に遅くなりました。
df[df.id == 1]
df[df.id == 2]
...
高速処理をしたいのですが、
どのようなコードで高速処理可能がご教授いただけると幸いです。
サンプルコードなどありましたら、いただきたいです。
よろしくお願い致します。
id ごとに抜き出したあとにどのような処理をしたいのでしょうか?
とりあえず groupby() を使ってグループ化すればよさそうですが
https://qiita.com/propella/items/a9a32b878c77222630ae
ご回答ありがとうございます。
各idごとにgroup byして計算処理をしたいのではなく、
ある条件で配列を作成したり、値を取得したりして、
それをidごとにjsonに変換する処理をしていきたいです。
データフレームには値もありますが、ほとんどが文字列です。
その配列を作成したり、値を取得したりする箇所ではmap関数、apply関数を用いてそこそこ高速化できたのですが、
そもそものidごとに回す箇所がforを使っており、そのforをもっと高速化したいというのが狙いです。
処理に時間がかかっているのは `df[df.id == 1]` のように指定 ID を抽出する部分なのは、処理時間を計測するなどして確定しているのでしょうか?他の部分の処理に時間がかかっている可能性はないのでしょうか?
あなたの回答
tips
プレビュー