
- はじめに
- 問26 レシート明細データフレーム(df_receipt)に対し、顧客ID(customer_id)ごとに最も新しい売上日(sales_ymd)と古い売上日を求め、両者が異なるデータを10件表示せよ。
- 問27 レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)の平均を計算し、降順でTOP5を表示せよ。
- 問28 レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)の中央値を計算し、降順でTOP5を表示せよ。
- Pythonのコードやライブラリーについて知りたい場合
- 独学でデータ分析をしている方へ
はじめに
問26~問28のコードの説明を初心者や初学者でもわかるような方法でまとめました。
データサイエンス100本ノックのはじめ方は、以下のブログ記事を参考にしてください。
>>【Google Colabはじめ方】データサイエンス100本ノックーデータサイエンティスト協会
問26 レシート明細データフレーム(df_receipt)に対し、顧客ID(customer_id)ごとに最も新しい売上日(sales_ymd)と古い売上日を求め、両者が異なるデータを10件表示せよ。
まず、「(df_receipt)に対し、顧客ID(customer_id)ごとに」表示する必要があるので、groupby()を使用します。
今回は、最も新しい売上日(sales_ymd)と古い売上日の両方を求める必要があるので、max()、min()の両方を使用します。
また、インデックスが消えないように、最後に.reset_index()を使用し、これを10件
表示なので、.head(10)と打ちます。
df_tmp = df_receipt.groupby('customer_id').agg({'sales_ymd':['max','min']}).reset_index()
df_tmp
次に、sales_ymd_maxとsales_ymd_minという2つのカラム名に変更します。
df_tmp.columns = ['customer_id','sales_ymd_max','sales_ymd_min']
最後に、「両者が異なるデータを表示」する必要があります。これには、.query()を使用します。
そして、「異なる」というのは、!=を使用します。!=の意味は、ノットイコールです。
そして、10件表示なので、.head(10)ですね。
df_tmp.query('sales_ymd_max != sales_ymd_min').head(10)
問27 レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)の平均を計算し、降順でTOP5を表示せよ。
まず、「(df_receipt)に対し、店舗コード(store_cd)ごとに」表示する必要があるので、groupby()を使用します。
売上金額(amount)の平均を計算するので、agg({‘カラム名’: ‘mean’})を使用します。
そして、降順で表示なので、問18で使用したように、.sort_values(‘カラム名’, ascending=False)とします。
これを5件表示なので、.head()と打ちます。なお、.head()は何も数字を入れない場合には5がデフォルト値になります。
df_receipt.groupby('store_cd').agg({'amount':'mean'}).reset_index().sort_values('amount',ascending=False).head(5)
問28 レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)の中央値を計算し、降順でTOP5を表示せよ。
問27とほぼ同じ処理です。違うのは、中央値を計算するところですが、これは、medianを使用します。なお、中央値とは、分布の中央にくる値のことです
df_receipt.groupby('store_cd').agg({'amount':'median'}).reset_index().sort_values('amount',ascending=False).head()
Pythonのコードやライブラリーについて知りたい場合
Pythonはデータ分析でよく使われている言語です。
この機会にPythonのコードの打ち方・ライブラリーについてもっと知りたいと思った方は、以下のブログ記事をご覧ください。
データ分析入門・データサイエンス初心者・初学者向けにデータ分析でよく使うPythonをまとめました。
>>【データ分析初心者】Python構文~if文、format記法とf文字列~
>>【データ分析初心者】Python構文~for文、range関数、zip関数、enumerate関数~
>>【データ分析初心者】Python構文~無名関数lambda式、内包表記、map関数~
>>【データ分析初心者】Pandas~loc[]、iloc[]、スライス、drop()、isin()~
>>【データ分析初心者】Matplotlib、Seabornーscatter、hist、countplot 、barplot
独学でデータ分析をしている方へ
機械学習やデータサイエンス・データ分析を独学で学ぶには、どうしたらよいかをまとめてみましたので、興味がある方はこちらのブログ記事をご覧ください。
