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

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

ファイル

はじめに

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

データサイエンス100本ノックのはじめ方は、ブログ記事を参考にしてください。
>>【Google Colabはじめ方】データサイエンス100本ノックーデータサイエンティスト協会

問29 レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに商品コード(product_cd)の最頻値を求めよ。

まず、「(df_receipt)に対し、店舗コード(store_cdごとに」表示する必要があるので、groupby()を使用します。

今回は、product_cd最頻値を求める必要があります。

最頻値とは、最も多い度数(頻度)を示す値です。グラフで見た場合には、分布図上の一番高い値が最頻値です。

さて、最頻値を求めるには、lambda式を用いてmode()を適用することになります。

lambda式について、詳しく知りたい方は以下のブログ記事をご覧ください。
>>【データ分析初心者】Python構文~無名関数lambda式、内包表記、map関数~

式の構造はlambda 引数:返り値となります。

今回は最頻値のlambda式を書くlambda x:x.mode()となります。

product_cd)という列に対して、同じ操作をしたいので、apply()を使用します。

よって、product_cd.apply(lambda 引数: 返り値)となります。

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

df_receipt.groupby('store_cd').product_cd.apply(lambda x:x.mode()).reset_index()

*コード結果は下部省略

問30 レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)の標本分散を計算し、降順でTOP5を表示せよ。

まず、「(df_receipt)に対し、店舗コード(store_cdごとに」表示する必要があるので、.groupby( )を使用します。

今回は、「売上金額(amount)の標本分散を計算」する必要があります。

まず、標本分散とは、標本から計算した分散であり、var(ddof=0)で求めることができます。

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

これを「降順」で表示なので、問18で使用したように、.sort_values(‘カラム名’, ascending=False)とします。

さらに、5件表示なので、.head()と打ちます。なお、.head()は何も数字を入れない場合にはデフォルト値になります。

df_receipt.groupby('store_cd').amount.var(ddof=0).reset_index().sort_values('amount',ascending=False).head()

問31 レシート明細データフレーム(df_receipt)に対し、店舗コード(store_cd)ごとに売上金額(amount)の標本標準偏差を計算し、降順でTOP5を表示せよ。

問30処理は同じで、違う点は標本標準偏差を計算することです。

標本標準偏差とは、標本分散(標本から計算した分散)の平方根で、std(ddof=0)で求めることができます。

df_receipt.groupby('store_cd').amount.std(ddof=0).reset_index().sort_values('amount',ascending=False).head()

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

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

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

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

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