【問84】データサイエンス100本ノック 解説

※アフィリエイト広告を利用しています。

ファイル

はじめに

問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_12019年売上金額合計を算出します。

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_customerdf_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_tmpamount_rateのカラムを作成し、そこに、2019年データフレーム÷全期間売上金額データフレームを計算したものを入れます。

df_tmp['amount_rate'] = df_tmp['amount_2019']/df_tmp['amount']

作成したデータにNANANが存在しない必要があるので、fillna()欠損値を補完します。

売上実績がない場合0として扱うため、ここではをいれます。

df_tmp['amount_rate'] = df_tmp['amount_rate'].fillna(0)

最後に、計算した割合が0超のものを10件表示させます。

df_tmp.query('amount_rate > 0').head(10)

Pythonのコードやライブラリーについて知りたい場合

Pythonデータ分析よく使われている言語です。

この機会にPythonコードの打ち方・ライブラリーについてもっと知りたいと思った方は、以下のブログ記事をご覧ください。

独学でデータ分析をしている方へ

機械学習データサイエンスデータ分析独学で学ぶには、どうしたらよいかをまとめてみましたので、興味がある方はこちらのブログ記事をご覧ください。