要按客户ID计算3个月平均值和客户的年累计销售额,首先需要有一个包含客户ID和销售额的数据集。假设数据集已经存在,可以按照以下步骤进行计算:
import pandas as pd
df = pd.read_csv('sales_data.csv')
这里假设数据集的文件名为'sales_data.csv',可以根据实际情况进行修改。
df['销售日期'] = pd.to_datetime(df['销售日期'])
这一步是为了后续按日期进行筛选和计算。
df['年份'] = df['销售日期'].dt.year
df['月份'] = df['销售日期'].dt.month
monthly_sales = df.groupby(['客户ID', '年份', '月份'])['销售额'].sum().reset_index()
这样可以得到一个新的DataFrame,包含客户ID、年份、月份和对应的销售额。
monthly_sales['3个月平均值'] = monthly_sales.groupby(['客户ID'])['销售额'].rolling(window=3).mean().reset_index(0, drop=True)
这里使用了rolling
函数,以每个客户ID进行滚动计算,窗口大小为3个月。
yearly_sales = monthly_sales.groupby('客户ID')['销售额'].sum().reset_index()
这样可以得到一个新的DataFrame,包含客户ID和对应的年累计销售额。
完整的代码示例如下:
import pandas as pd
# 读取数据集
df = pd.read_csv('sales_data.csv')
# 将销售日期列转换为日期类型
df['销售日期'] = pd.to_datetime(df['销售日期'])
# 添加年份列
df['年份'] = df['销售日期'].dt.year
# 添加月份列
df['月份'] = df['销售日期'].dt.month
# 按客户ID和月份进行分组,并计算每个客户每个月的销售额
monthly_sales = df.groupby(['客户ID', '年份', '月份'])['销售额'].sum().reset_index()
# 计算3个月平均值
monthly_sales['3个月平均值'] = monthly_sales.groupby(['客户ID'])['销售额'].rolling(window=3).mean().reset_index(0, drop=True)
# 计算客户的年累计销售额
yearly_sales = monthly_sales.groupby('客户ID')['销售额'].sum().reset_index()
# 打印结果
print(monthly_sales)
print(yearly_sales)
请注意,上述代码中的数据集文件名、列名和日期格式等部分可能需要根据实际情况进行修改。