データサイエンス100本ノックで勉強(26)

データサイエンス100本ノックでSQLPythonを勉強していきます。

github.com

S-028: レシート明細テーブル(receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)の中央値を計算し、降順でTOP5を表示せよ。

SQLでは以下のようになります。

%%sql
select store_cd, PERCENTILE_CONT(0.5) WITHIN GROUP(ORDER BY amount) as amount 
from receipt
group by store_cd
order by amount desc
limit 5;

f:id:JunpeiNakasone:20220216062012p:plain

PERCENTILE_CONT関数は知らなかったのですが、中央値を求める時に使うようです。

www.postgresql.jp

qiita.com

普段の業務で中央値を求めることはあんまりないのですが、何かあればググってこの関数に辿り着けるようにしたいと思います。

Pythonだと以下のようになります。

df_receipt.groupby('store_cd').agg({'amount':'median'}).reset_index(). \
            sort_values('amount', ascending=False).head(5)

f:id:JunpeiNakasone:20220216062430p:plain