import pandas as pd
from sklearn.linear_model import LinearRegression

# 读取数据
data = pd.read_csv('test.csv')

# 筛选出2023年6月24-30日的数据
start_date = '2020-06-24'
end_date = '2023-06-30'
selected_data = data[(data['销售日期'] >= start_date) & (data['销售日期'] <= end_date)]

# 统计每个单品的销售量
sales_data = selected_data.groupby('单品编码')['销量(千克)'].sum().reset_index()

# 筛选出销售量大于等于2.5千克的单品
sales_data = sales_data[sales_data['销量(千克)'] >= 2.5]

# 计算每个单品的平均销售量
average_sales = sales_data['销量(千克)'].mean()

# 筛选出可售品种数控制在27-33个的单品
# 由于你的数据集可能小于33个样本,需要调整采样数量或使用replace=True进行重复采样
sales_data = sales_data.sample(n=min(33, len(sales_data)), random_state=0, replace=True)

# 计算每个单品的补货量
sales_data['补货量'] = 2.5 - sales_data['销量(千克)']
sales_data['补货量'] = sales_data['补货量'].apply(lambda x: max(0, x))

# 使用线性回归模型预测每个单品的定价
X = selected_data[['销量(千克)']]
y = selected_data['销售单价(元/千克)']
model = LinearRegression()
model.fit(X, y)
sales_data['定价'] = model.predict(sales_data[['销量(千克)']])

# 输出结果
print(sales_data[['单品编码', '补货量', '定价']])

解决方法:

由于你要求的样本数量(33)大于你的数据集中的样本数量,因此出现了 ValueError: Cannot take a larger sample than population when 'replace=False' 错误。

为了解决这个问题,你可以:

  1. 检查你的数据集中的样本数量,如果小于33,则可以减少要求的样本数量,例如使用 n=min(33, len(sales_data)) 来确保样本数量不超过数据集大小。

  2. 使用 replace=True 来允许重复抽样,这样可以从数据集中的样本中重复抽取,从而满足你要求的样本数量。

代码中已经使用了 n=min(33, len(sales_data))replace=True 来解决这个问题。

其他建议:

  • 可以添加一些注释,解释每个代码片段的功能,方便阅读理解。
  • 可以使用更加具体的描述性变量名,例如 sales_quantity 代替 销量(千克)
  • 可以使用更简洁的代码,例如使用 sales_data['补货量'] = (2.5 - sales_data['销量(千克)']).clip(lower=0) 来计算补货量。
  • 可以根据实际需求对代码进行调整,例如添加更多特征进行预测。
使用Python进行销售数据分析和定价预测

原文地址: https://www.cveoy.top/t/topic/ehHW 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录