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

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

ファイル

はじめに

問21~問25のコードの説明を初心者や初学者でもわかるような方法でまとめました。

データサイエンス100本ノックのはじめ方は、以下のブログ記事を参考にしてください。

>>【Google Colabはじめ方】データサイエンス100本ノックーデータサイエンティスト協会

問21 レシート明細データフレーム(df_receipt)に対し、件数をカウントせよ。

件数のカウントには、len()を使用します。

問22 レシート明細データフレーム(df_receipt)の顧客ID(customer_id)に対し、ユニーク件数をカウントせよ。

件数のカウントには、len()を使用します。

しかし、今回の件数は「ユニーク件数」です。つまり、重複を除いた件数を求める問題となっています。

ユニーク件数を求めるには、len(df_receipt[‘カラム名’].unique())というコードになります。

問23 レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)と売上数量(quantity)を合計せよ。

「(df_receipt)に対し、店舗コード(store_cd)ごとに」表示する必要があるので、groupby()を使用します。groupby()は、特定の列をグルーピングしてくれます。

そのグルーピングは、店舗コード(store_cd)ごとに売上金額(amount)と売上数量(quantity)合計したものである必要があるので、agg()を使用します。

売上金額(amount)と売上数量(quantity)合計なので、sumを使用し、.agg({‘amount’:’sum’,’quantity’:’sum’})となります。

また、インデックスが消えないように、最後に.reset_index()を使用します。

df_receipt.groupby('store_cd').agg({'amount':'sum','quantity':'sum'}).reset_index()

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

「(df_receipt)に対し、顧客ID(customer_id)ごとに表示する必要があるので、groupby()を使用します。

最も新しい売上日(sales_ymd)を求める必要があるので、max()を使用します。

max()は、最大値(今回は最も新しい売上日)を求めることができます。

また、インデックスが消えないように、最後に.reset_index()を使用し、これを10件

表示なので、.head(10)と打ちます。

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

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

問24とほぼ同じ処理で、違いは、最も古い売上日(sales_ymd)を求めることです。これには、min()を使用します。

min()は、最小値(今回は最も古い売上日)を求めることができます。

df_receipt.groupby('customer_id').sales_ymd.min().reset_index().head(10)

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

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

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

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

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