LoginSignup
0
1

More than 3 years have passed since last update.

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

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

Youtube

動画解説もしています。

問題

P-024: レシート明細データフレーム(df_receipt)に対し、顧客ID(customer_id)ごとに最も新しい売上日(sales_ymd)を求め、10件表示せよ。

解答

コード
df_receipt.groupby('customer_id').sales_ymd.max().reset_index().head(10)

出力

customer_id sales_ymd
0 CS001113000004 20190308
1 CS001114000005 20190731
2 CS001115000010 20190405
3 CS001205000004 20190625
4 CS001205000006 20190224
5 CS001211000025 20190322
6 CS001212000027 20170127
7 CS001212000031 20180906
8 CS001212000046 20170811
9 CS001212000070 20191018

解説

・PandasのDataFrame/Seriesにて、同じ値を持つデータをまとめて処理し、同じ値を持つデータの合計や平均を確認したい時に使用します。
'groupby'は、同じ値や文字列を持つデータをまとめて、それぞれの同じ値や文字列に対して、共通の操作を(合計や平均)行いたい時に使います。
'.sales_ymd.max()'は、'.sales_ymd'の最大値(=最も新しい売上日)を表示させます。
'.reset_index()'は、'groupby'によってバラバラになったインデックス番号を0始まりの連番に振り直す操作を行いたい時に使います。

※以下のコードでも、同じ結果を出力します('.agg'を用いた場合)

コード
df_receipt.groupby('customer_id').agg({'sales_ymd':'max'}).reset_index().head(10)
0
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
0
1