PandasのDataFrameで空かどうか判定するためにパフォーマンスの最も良い方法

2021年9月11日

今回はPandasのDataFrameで空かどうか判定するためにパフォーマンスの最も良い方法についてご紹介いたします。



PandasのDataFrameで空かどうか判定するためにパフォーマンスの最も良い方法

PandasのDaraFrameで中身が空かどうか判定するためには、次の三つがあります。
dfをDataFrame型の変数として、
df.empty
len(df)
len(df.index)

で空かどうか判定することができるようです。

この中では、
len(df.index)
len(df)
df.empty

の順でパフォーマンスが良い(=速度が早い)そうです。
直観的には信じ難いので、それが本当かどうか調べてみました。

パフォーマンスの速度チェック

パフォーマンスの調査に当たって、次のソースコードを用意しました。

それぞれの関数は、

emptyTestNoExist…df.emptyでチェック。データなし
lenTestNoExist…len(df)でチェック。データなし
lenIndexTestNoExist…len(df.index)でチェック。データなし

emptyTestExist…df.emptyでチェック。データあり
lenTestExist…len(df)でチェック。データあり
lenIndexTestExist…len(df.index)でチェック。データあり

です。

これらを3回ずつ実行してみると、結果はそれぞれ次のようになりました。

一回目

関数 1回目 2回目 3回目
emptyTestNoExist 2.0883066654205322 2.0779144763946533 2.037778615951538
lenTestNoExist 0.6067044734954834 0.5910563468933105 0.6345944404602051
lenTestNoExist 0.42269444465637207 0.41591596603393555 0.43253040313720703
emptyTestExist 3.1654932498931885 3.1807096004486084 3.211366653442383
lenTestExist 0.5770201683044434 0.6047067642211914 0.5991582870483398
lenIndexTestExist 0.4429199695587158 0.43631410598754883 0.4301869869232178

確かに
len(df.index)
len(df)
df.empty

の順でパフォーマンスが良かったです。

少し可読性が落ちる気がしますが、
len(df.index)
を使った方がパフォーマンス的には最も良さそうです。

終わりに

今回はPandasのDataFrameで空かどうか判定するためにパフォーマンスの最も良い方法についてご紹介いたしました。

PythonやPythonを使ったライブラリやフレームワークのパフォーマンスの調査に興味があり、様々なコーディング方法の違いによる最適化の調査を行っております。
リストにまとめてあるので、よろしければ覗いてみてください。
Pythonとそのライブラリやフレームワークのパフォーマンス調査結果リスト

最後までお読みいただきありがとうございます。
よろしければブログやTwitterでのシェアをお願いしております。
コメントもお待ちしております。
誤植や勘違いなどございましたらコメント欄にて教えていただけると幸いです。

直接契約ができるフリーランスエージェント「エンハンス」を立ち上げました。
詳しくは下記LPをご参照ください。
https://enhance.decryption.co.jp/

Youtubeチャンネル開設いたしました。
チャンネル登録者10,000人を目指しているので、良いと思った方はチャンネル登録をお願いしたいです。
https://www.youtube.com/channel/UC219XhmSRxmXltTy6COxSMw






データ分析

Posted by ちこ