
- はじめに
- 問54 顧客データフレーム(df_customer)の住所(address)は、埼玉県、千葉県、東京都、神奈川県のいずれかとなっている。都道府県毎にコード値を作成し、顧客ID、住所とともに抽出せよ。値は埼玉県を11、千葉県を12、東京都を13、神奈川県を14とすること。結果は10件表示させれば良い。
- 問55 レシート明細データフレーム(df_receipt)の売上金額(amount)を顧客ID(customer_id)ごとに合計し、その合計金額の四分位点を求めよ。その上で、顧客ごとの売上金額合計に対して以下の基準でカテゴリ値を作成し、顧客ID、売上金額合計とともに表示せよ。カテゴリ値は上から順に1〜4とする。結果は10件表示させれば良い。
- Pythonのコードやライブラリーについて知りたい場合
- 独学でデータ分析をしている方へ
はじめに
問54~問55のコードの説明を初心者や初学者でもわかるような方法でまとめました。
データサイエンス100本ノックのはじめ方は、以下のブログ記事を参考にしてください。
>>【Google Colabはじめ方】データサイエンス100本ノックーデータサイエンティスト協会
問54 顧客データフレーム(df_customer)の住所(address)は、埼玉県、千葉県、東京都、神奈川県のいずれかとなっている。都道府県毎にコード値を作成し、顧客ID、住所とともに抽出せよ。値は埼玉県を11、千葉県を12、東京都を13、神奈川県を14とすること。結果は10件表示させれば良い。
「都道府県毎にコード値を作成し、顧客ID、住所とともに抽出」し、そのコード「値は埼玉県を11、千葉県を12、東京都を13、神奈川県を14とする」必要があります。
つまり、df_customerにある顧客ID(customer_id)、住所(address)と新しく作成したコード値を結合すれば答えがでます。
結合には、pd.concat()を使用します。
コード値の作成ですが、addressの先頭の3文字をstr[0:3]で抽出し、抽出した文字列にmap()を使用します。
map()の引数に({key: value})を指定すると、keyと一致する要素がvalueに置き換えられます。
なお、文字の抽出は3文字なので、神奈川県といれるのでなく、神奈川にすること。
pd.concat([df_customer[['customer_id','address']],df_customer['address'].str[0:3].map({'埼玉県':'11','千葉県':'12','東京都':'13','神奈川':'14'})],axis=1).head(10)
問55 レシート明細データフレーム(df_receipt)の売上金額(amount)を顧客ID(customer_id)ごとに合計し、その合計金額の四分位点を求めよ。その上で、顧客ごとの売上金額合計に対して以下の基準でカテゴリ値を作成し、顧客ID、売上金額合計とともに表示せよ。カテゴリ値は上から順に1〜4とする。結果は10件表示させれば良い。
(df_receipt)の売上金額(amount)を顧客ID(customer_id)ごとの合計を出すには、groupby()とsum()の利用でしたね。詳細は問34、問35、問38、問39を参照してください。
df_sales_amount = df_receipt.groupby('customer_id').amount.sum().reset_index()
このデータフレームに1〜4カテゴリ値を作成します。
そのカテゴリー値は以下の基準で作成します。
最小値以上第一四分位未満 1
第一四分位以上第二四分位未満 2
第二四分位以上第三四分位未満 3
第三四分位以上 4
第一四分位とは、データの25%の値、第二四分位とは、データの50%の値、第三四分位とはデータの75%の値を指します。
pct25 = np.quantile(df_sales_amount['amount'],0.25)
pct50 = np.quantile(df_sales_amount['amount'],0.50)
pct75 = np.quantile(df_sales_amount['amount'],0.75)
これを前提にpct_groupを作成し、上記基準にカテゴリー値を割り振る関数を作成します。
def pct_group(x):
if x < pct25:
return 1
elif pct25 <= x < pct50:
return 2
elif pct50 <= x < pct75:
return 3
elif pct75 <= x:
return 4
最後に、df_sales_amountに上記カテゴリー値を入れていきましょう。
df_sales_amount['pct_group'] = df_sales_amount['amount'].apply(lambda x:pct_group(x))
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
独学でデータ分析をしている方へ
機械学習やデータサイエンス・データ分析を独学で学ぶには、どうしたらよいかをまとめてみましたので、興味がある方はこちらのブログ記事をご覧ください。
