python pandasでのデータ集計方法について

実現したいこと

・pythonのpandasで、データ分析をしています。
・顧客の購買データ(1行は、1人の顧客の1回の購入)を顧客・月単位で集計した表を作りたく、データフレームオブジェクトに対して、groupbyメソッドを使ったのですが、例えば、顧客Aが7月の購入履歴が0回の場合、groupbyメソッドでは、顧客Aの7月の行が生成されません。
・上記に対して、顧客Aの7月の行も生成されるようにしたいのですが、良い方法はありますでしょうか。(集計値は0もしくはNanとする。)

前提

・pythonのpandasモジュールを使ってデータ分析をしています。

詳細

・例えば、以下のようなデータフレームになります。

顧客 購入日 購入月 購入金額
A   6/8  6月  2000円
A   6/10  6月  3000円
A   8/8  8月  4000円
A   9/10  9月  5000円
B--------(以下省略)-----------
B
C

・このデータフレーム(df_sample)に対して、

 df_sample.groupby([”顧客”,"購入月"]).count()

で集計すると、顧客Aの7月の行は生成されませんが、顧客Aの7月の行を生成したいです。

・自分が思いつくのは、df_sampleの顧客列と購入月のユニーク値のリストを生成し、そのリストを二重でループさせて、顧客×購入月のユニークな組み合わせを順々に取得し、その組み合わせを新しいデータフレームに格納。その後、そのデータフレームに対して、df_sample.groupby([”顧客”,"購入月"]).count()を、left_joinで結合、という方法ですが、コードが冗長的かつ二重ループがあり時間がかかりそうです。

・何か、スマートなやり方はないでしょうか。

備考

・初学者のため、おかしなことを言っているかもしれませんが、前提や知識がおかしければ、そのあたりもご教授いただければ幸いです。

コメントを投稿

0 コメント