はじめに
今回は小ネタです。記事にするほどでもないのですが、せっかくなのでメモを残しておきます。query()メソッドの中で変数を使う方法です。query()メソッドの中では、普通に変数を参照しようとするとエラーになります。簡単な内容ですが、紹介しておきますね。
サンプルデータの作成
今回も、どうぶつえんの日別の来場者数のデータ、という想定にしましょう。以下のコードでサンプルデータを作成してください。
# ライブラリのインポート
import pandas as pd
# サンプルデータの作成
date_list=pd.date_range('2020-08-11','2020-09-30')
visitors_list=np.random.randint(40,200,51)
df_date=pd.DataFrame({'日付':date_list,'来場者数':visitors_list})
df_date.head()
query()メソッドの中で変数を使う
今回は、全期間での来場者数の平均を求めて、平均来場者数以上のデータを抽出してみましょう。まずは、平均来場者数「visitors_mean」を求めてます。
visitors_mean=df_date['来場者数'].mean()
print('%.1f'%visitors_mean)
平均来場者数が求まりました。平均来場者以上のデータを抽出してみましょう。
df_date.query('来場者数>visitors_mean')
しかし、これを実行すると以下のようにエラーになってしまいます。
実は、query()メソッドの中では、そのまま変数を使うことができません。query()メソッドの中での条件文字列の中で変数を使用するには、変数名の前に@をつける必要があります。
やってみましょう。
df_date.query('来場者数>@visitors_mean').head()
今度はうまくいきました。私はこれを知らなかったので、なんでエラーなんだろ?ってなりました。ということでメモを残しておきます。
まとめ
いかがでしょうか?知っている人にとっては、「当たり前」だったかもしれませんね。query()メソッドはよく使うので、条件文字列の中で変数が使えないと困ってしまいますよね。覚えておきましょう。
コメント