pandasqlがものすごく遅かった件について

こんばんは sohnishi です。

 

先日、とても遅いのpandasqlを修正する機会がありました。

AWS lambdaで動かしていたので、処理時間は15分が最大です。

余裕でタイムアウト食らってました。

データ形式はcsvでデータ量は30万件です。

10万件をpandasqlでselectallするだけで動きません。。

 

pandasqlでも頑張れば動くんでしょうけど、

たかが10万件のselectallが動かない時点で使う気にもならないので、

pandasqlを使わずになんとかならないかと思いました。

そもそもsqlを使わずとも簡単にデータ分析が行えるのがpandasの特徴です。

 

仕様は下記のようなものでした。

・30万件.csvのデータから削除リスト.csvに載っているデータを削除する

 

処理は下記のようなものでした。

・30万件.csvと削除リスト.csvをdataFrame型に変換し、

pandasqlで削除リスト.csvのデータを30万件.csvのデータから省いてselectし、csvに再出力する

上記処理のpandasql実行部分がうんともすんとも言いません。

 

pandasqlを全撤廃し、

下記のようにdataFrame型から直接dropメソッドで該当データを削除するように変更することで、

30万件 * 20ファイルでも問題なく動作するようになりました。

pandasが慣れないうちはpandasqlも良いかもしれませんが、

pandasにはとても便利なメソッドがたくさん用意されています。

パフォーマンスに苦しまないように、みなさんメソッドを有効活用しましょう〜

それでは。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です