使用Python进行销售数据分析和定价预测
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' 错误。
为了解决这个问题,你可以:
-
检查你的数据集中的样本数量,如果小于33,则可以减少要求的样本数量,例如使用
n=min(33, len(sales_data))来确保样本数量不超过数据集大小。 -
使用
replace=True来允许重复抽样,这样可以从数据集中的样本中重复抽取,从而满足你要求的样本数量。
代码中已经使用了 n=min(33, len(sales_data)) 和 replace=True 来解决这个问题。
其他建议:
- 可以添加一些注释,解释每个代码片段的功能,方便阅读理解。
- 可以使用更加具体的描述性变量名,例如
sales_quantity代替销量(千克)。 - 可以使用更简洁的代码,例如使用
sales_data['补货量'] = (2.5 - sales_data['销量(千克)']).clip(lower=0)来计算补货量。 - 可以根据实际需求对代码进行调整,例如添加更多特征进行预测。
原文地址: https://www.cveoy.top/t/topic/ehHW 著作权归作者所有。请勿转载和采集!