LoginSignup
1
1

More than 3 years have passed since last update.

【Python】データサイエンス100本ノック(構造化データ加工編) 030 解説

Last updated at Posted at 2020-08-17
  • データサイエンス100本ノックをやりきる会を作りました🎉
  • こちらのSlack招待URLからご参加ください!!
  • ぜひ一緒に励まし合いながら、データサイエンス100本ノックをやり切りたいと思っています!

Youtube

動画解説もしています。

問題

P-030: レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)の標本分散を計算し、降順でTOP5を表示せよ。

解答

コード
df_receipt.groupby('store_cd').amount.var(ddof=0).reset_index().sort_values('amount', ascending=False).head(5)

出力

store_cd amount
28 S13052 440088.7013
31 S14011 306314.5582
42 S14034 296920.081
5 S13001 295431.9933
12 S13015 295294.3611

解説

・PandasのDataFrame/Seriesです。
・同じ値を持つデータをまとめて処理し、同じ値を持つデータの合計や平均などを確認したい時に使用します。
・'groupby'は、同じ値や文字列を持つデータをまとめて、それぞれの同じ値や文字列に対して、共通の操作(合計や平均など)を行いたい時に使います。
'.var'は、標本分散を算出するコードです
'<列名>.var(ddof=0)'は、標本分散を算出する際に'N-ddof(=0)'で割ることを指します
'ddof'は、'delta degrees of freedom'の略称です。詳細はWikipediaをご覧ください。
・'.reset_index()'は、'groupby'によってバラバラになったインデックス番号を0始まりの連番に振り直す操作を行いたい時に使います。
・'.sort_values('amount', ascending=False)'で'amount'を降順に表示しています。

※こちらのコードでも同じ結果を出力します。ddofはデフォルトで0なので、今回の場合は省略しても問題ありません。

コード
df_receipt.groupby('store_cd').agg({'amount':'var'}).reset_index().sort_values('amount', ascending=False).head(5)
1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1