
はじめに
問84のコードの説明を初心者や初学者でもわかるような方法でまとめました。
データサイエンス100本ノックのはじめ方は、以下のブログ記事を参考にしてください。
>>【Google Colabはじめ方】データサイエンス100本ノックーデータサイエンティスト協会
問84 顧客データフレーム(df_customer)の全顧客に対し、全期間の売上金額に占める2019年売上金額の割合を計算せよ。ただし、売上実績がない場合は0として扱うこと。そして計算した割合が0超のものを抽出せよ。 結果は10件表示させれば良い。また、作成したデータにNAやNANが存在しないことを確認せよ。
(df_customer)の全顧客に対し、全期間の売上金額に占める2019年売上金額の割合を計算するためには、以下の作業必要です。
① 2019年のデータフレームを作成
② 全期間の売上金額のデータフレーム
③ 2019年のデータフレーム÷全期間の売上金額のデータフレームを計算
①まず、df_receiptから2019年のデータを.query()で抽出します。
df_tmp_1 = df_receipt.query('20190101 <= sales_ymd <= 20191231')
次に、(df_customer)の全顧客の2019年の売上金額のデータフレームを作成するために、df_customerに上記df_tmp_1を左外部結合を行います。
df_tmp_1 = pd.merge(df_customer['customer_id'],df_tmp_1[['customer_id','amount']],how='left',on='customer_id')
そして、上記df_tmp_1の2019年売上金額の合計を算出します。
df_tmp_1 = df_tmp_1.groupby('customer_id').sum().reset_index()
amountのカラム名をamount_2019に変更します。
df_tmp_1 = df_tmp_1.rename(columns={'amount':'amount_2019'})
②次に、顧客データフレーム(df_customer)の全顧客の全期間の売上金額のデータフレームを作成します。
それには、df_customerにdf_receiptを左外部結合を行います。
df_tmp_2 = pd.merge(df_customer['customer_id'],df_receipt[['customer_id','amount']],how='left',on='customer_id')
そして、df_tmp_2の売上金額の合計を算出します。
df_tmp_2 = df_tmp_2.groupby('customer_id').sum().reset_index()
③2019年のデータフレームと全期間の売上金額のデータフレームを内部結合します。
df_tmp = pd.merge(df_tmp_1, df_tmp_2, how='inner', on='customer_id')
df_tmpにamount_rateのカラムを作成し、そこに、2019年のデータフレーム÷全期間の売上金額のデータフレームを計算したものを入れます。
df_tmp['amount_rate'] = df_tmp['amount_2019']/df_tmp['amount']
作成したデータにNAやNANが存在しない必要があるので、fillna()で欠損値を補完します。
売上実績がない場合は0として扱うため、ここでは0をいれます。
df_tmp['amount_rate'] = df_tmp['amount_rate'].fillna(0)
最後に、計算した割合が0超のものを10件表示させます。
df_tmp.query('amount_rate > 0').head(10)
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
独学でデータ分析をしている方へ
機械学習やデータサイエンス・データ分析を独学で学ぶには、どうしたらよいかをまとめてみましたので、興味がある方はこちらのブログ記事をご覧ください。
