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

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

ファイル

はじめに

問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コードの打ち方・ライブラリーについてもっと知りたいと思った方は、以下のブログ記事をご覧ください。

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

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