Q&A
実現したいこと
pythonで下記のようなpandas DataFrameがあり、月ごとにどれくらいの顧客が購入したか、新規人数&新規率をまとめたいです。
例えば、2021/1/1は ID:90,80,70の人が新規で購入したため、
3/5で60%、以降、1年間その人たちはリピーター。
1年間買い物がないと次の買い物時に新規とカウントする。なので、ID90の人は 2022/5/1で新規とカウント
ID month value
90 2021/1/1 930
90 2022/2/1 590
90 2022/5/1 240
80 2021/1/1 930
80 2022/4/1 980
80 2022/6/1 980
70 2021/1/1 980
70 2021/7/1 970
70 2021/8/1 950
40 2021/9/1 1020
40 2021/10/1 1140
30 2021/11/1 550
30 2021/12/1 890
30 2022/3/1 1110
該当のソースコード
python
1df = pd.DataFrame( 2 data={"ID":[90,90,90,80,80,80,70,70,70,40,40,30,30,30], 3 "month":["2021-01-01","2022-02-01","2022-05-01","2021-01-01","2022-04-01","2022-06-01","2021-01-01","2021-07-01","2021-08-01", 4"2021-09-01","2021-10-01","2021-11-01","2021-12-01","2022-03-01"], 5"value":[930,590,240,930,980,980,980,970,950,1020,1140,550,890,1110,]} 6) 7 8df
試したこと
なかなか実現するコードが思いつかず、ご教示いただけますと幸いです。
最終的にやりたいことは下記のようなイメージです。
month 新規人数 新規率 リピート人数 リピート率
2021/1/1 2 50% 1 10%
2021/7/1 1 40% 2 20%
2021/8/1 1 60% 2 30%
2021/9/1 2 100%3 30%
2021/10/1 1 10% 3 10%
2021/11/1 1 50% 1 20%
補足情報(FW/ツールのバージョンなど)
jupyter notebook
回答1件
下記のような回答は推奨されていません。
このような回答には修正を依頼しましょう。
2023/02/03 00:09