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

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

ファイル

はじめに

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

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

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

問40 全ての店舗と全ての商品を組み合わせると何件のデータとなるか調査したい。店舗(df_store)と商品(df_product)を直積した件数を計算せよ。

df_storedf_productなら、pd.concat()行方向に連結すればよいですが、今回は直積なので、すべての組み合わせの結合、つまり、行の積となります。

今回、df_store52件df_product10030件のデータがあるので、直積した件数は、53 ×100030 = 531590です。これをコードで求めていきます。

その方法としては、df_storedf_productのデータフレームを外部結合します。

まず、2つのデータフレームの共通カラムがあるか探します。探し方は問37でやりました、setを用います。

df_store_columns = df_store.columns
df_product_columns = df_product.columns
df_and = set(df_store_columns) & set(df_product_columns)
df_and

しかし、共通カラムがありませんでした。

そこで、共通カラムを作ってしまいましょう。

df_store_tmp = df_store.copy()
df_product_tmp = df_product.copy()
df_store_tmp['key'] = 0
df_product_tmp['key'] = 0

これで、keyという共通カラムを作りましたので、これを外部結合し、lenで件数をはかります。

len(pd.merge(df_store_tmp,df_product_tmp,how='outer',on='key'))

なお、単純に両者の件数をかけるという方法もあります。

len(df_store) * len(df_product)

問41 レシート明細データフレーム(df_receipt)の売上金額(amount)を日付(sales_ymd)ごとに集計し、前日からの売上金額増減を計算せよ。なお、計算結果は10件表示すればよい。

まず、「(df_receipt)の売上金額(amount)を日付(sales_ymdごとに集計」します。

df_sales_amount_by_date = df_receipt[['sales_ymd','amount']].groupby('sales_ymd').sum().reset_index()

次に、「前日からの売上金額増減」を計算するには、当日の売上金額 前日の売上金額をする必要があります。

これは、df_sales_amount_by_dateと同じデータフレームを1行下にずらしたデータフレームを列方向に結合し、両者のデータフレームの差分を取ることで、求めていきます。

列方向の結合は、pd.concat()で引数にaxis=1を使用します。

データフレームの行をずらすにはshift()を使用します。引数に数値を指定しなかった場合は、方向に1行ずれるのがデフォルトです。なお、最後の行のデータは削除されます。

df_sales_amount_by_date = pd.concat([df_sales_amount_by_date,df_sales_amount_by_date.shift()],axis=1)

カラム名を以下のように変えましょう

df_sales_amount_by_date.columns =  ['sales_ymd','amount','lag_ymd','lag_amount']

最後に、diff_amountというカラム名をいれて、そこに差分の計算結果を表示しましょう。

df_sales_amount_by_date['diff_amount'] = df_sales_amount_by_date['amount'] - df_sales_amount_by_date['lag_amount']

これを10件表示します。

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

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

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

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

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