每月显示的唯一ID的滚动12个月计数-Python

问题描述 投票:0回答:1

我是python编码的新手。我正在使用交易数据,并希望在过去12个月内滚动活跃客户群,但按月进行。

以下是我拥有的交易数据的示例-Transaction Data

客户编号购买日期数量客户标签

N01847 01-04-18 10 B2C

N01847 15-04-18 20 B2C

N01847 25-06-19 20 B2C

N01847 12-02-20 100 B2C

N01847 25-03-20 150 B2C

N02341 01-12-19 20 B2B

N02341 02-02-20 150 B2B

N02011 25-01-19 10 B2B

N01033 02-06-18 30 B2C

N01033 02-04-19 40 B2C

N01033 15-04-19 50 B2C

N01033 15-02-20 20 B2C

N01010 16-01-18 100 B2C

N01010 25-02-18 250 B2C

N01010 03-09-18 10 B2C

N01010 04-04-19 250 B2C

N01010 15-06-19 100 B2C

N01010 26-07-19 40 B2C

N01010 17-09-19 10 B2C

N01010 17-09-19 10 B2C

N01010 20-03-20 20 B2C

N09100 20-01-18 20 B2B

N09100 20-01-18 20 B2B

N09100 25-01-20 20 B2B

N09100 25-01-20 20 B2B

N09100 25-01-20 20 B2B

N09100 25-01-20 20 B2B

下面是我期望使用python-desired output

B2C过去12个月的月度活跃客户月度活跃客户月度活跃度月费

201801 100230 25058 25.0%

201802 100524 25634 25.5%

201803 100810 25213 25.0%

201804 101253 25495 25.2%

201805 101351 25525 25.2%

201806 103210 25998 25.2%

201807 103678 26122 25.2%

201808 103977 26202 25.2%

201809 104512 26342 25.2%

201810 104624 26376 25.2%

201811 105479 26597 25.2%

201812 111256 28059 26.2%

201901 112247 28314 25.2%

201902 112947 28497 25.2%

201903 113508 28644 25.2%

201904 113857 28737 25.2%

201905 114572 28924 25.2%

201906 115443 29149 25.3%

201907 116056 29310 25.3%

201908 116528 29435 25.3%

201909 116971 29553 25.3%

201910 117647 2972​​9 25.3%

201911 118492 29949 25.3%

201912 124095 31371 26.3%

202001 124895 31580 25.3%

202002 125653 31778 25.3%

202003 126320 31953 25.3%

我将非常感谢有关python(spyder)代码的任何帮助,这些帮助将有助于获得所需的结果。提前非常感谢。

关于,卡斯

python anaconda spyder rolling-computation transactional-database
1个回答
0
投票

您可能想使用熊猫,然后做类似的事情:

df["Date-of-Purchase"] = pd.to_datetime(df["Date-of-Purchase"], dayfirst=True)
df["Month"] = df["Date-of-Purchase"].dt.month
df["Year"] = df["Date-of-Purchase"].dt.year
res = df.groupby(["Year", "Month"])["Cust-ID"].nunique()

这将为您提供每月唯一身份客户的数量。假设您拥有所有月份的数据,则现在可以使用rolling获取12个月的总和:

res1.reset_index().rolling(12).sum()

如果您没有所有月份的数据,则需要填写缺少的月份。

© www.soinside.com 2019 - 2024. All rights reserved.