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

今回は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で空かどうか判定するためにパフォーマンスの最も良い方法についてご紹介いたしました。

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