pd.date_range(start='1/1/2016',end='1/08/2019',freq='Min')的freq参数

由于未提供博客具体内容,无法生成包含关键信息的摘要。

import pandas as pd from prophet import Prophet import numpy as np from datetime import datetime, timedelta # 1. 读取Excel数据 df = pd.read_excel('data/HUAWEI_bciweek.xlsx', usecols=['date', 'total_qty']) # 2. 数据预处理 df['date'] = pd.to_datetime(df['date']) df = df.sort_values('date').reset_index(drop=True) # 3. 设置关键日期 first_pred_date = pd.to_datetime('2025-01-06') last_real_date = pd.to_datetime('2025-12-1') final_forecast_end = pd.to_datetime('2026-12-28') # 2026年最后一个周一 # 4. 生成滚动预测日期列表 pred_dates = pd.date_range(start=first_pred_date, end=last_real_date, freq='W-MON') # 5. 创建结果容器 results = [] # 6. 滚动预测循环 for current_pred_date in pred_dates: # a. 准备训练数据(截止到当前预测日期的前一周) train_end = current_pred_date - timedelta(days=7) train_df = df[df['date'] <= train_end].copy() train_df = train_df.rename(columns={'date': 'ds', 'total_qty': 'y'}) # b. 训练Prophet模型(添加中国节假日) model = Prophet( yearly_seasonality=8, weekly_seasonality=5, daily_seasonality=False, seasonality_mode='multiplicative', changepoint_prior_scale=5, interval_width=0.8 ) model.add_country_holidays(country_name='CN') model.fit(train_df) # c. 生成预测日期(从当前预测日期到2026年底) forecast_period = (final_forecast_end - current_pred_date).days // 7 + 1 future = pd.date_range(start=current_pred_date, periods=forecast_period, freq='W-MON') future_df = pd.DataFrame({'ds': future}) # d. 进行预测 forecast = model.predict(future_df) forecast = forecast[['ds', 'yhat']].rename(columns={'yhat': 'forecast'}) forecast['forecast'] = forecast['forecast'].clip(lower=0).round().astype(int) # 确保预测值非负and没有小数 # e. 添加预测时间标记 forecast.insert(0, 'forecast_time', current_pred_date) # f. 合并真实数据 result_df = pd.merge( forecast, df.rename(columns={'date': 'ds', 'total_qty': 'actual'}), on='ds', how='left' ) # g. 计算准确率ACC result_df['ACC'] = result_df.apply( lambda x: min(x['actual'], x['forecast']) / max(x['actual'], x['forecast']) if not pd.isna(x['actual']) else np.nan, axis=1 ) results.append(result_df) # 7. 合并所有预测结果 final_results = pd.concat(results, ignore_index=True) # 8. 保存到Excel final_results.to_excel('result/品牌by周预测Prophet5.xlsx', index=False) 这段代码需要修改,需要做进一步的预测,现在原始数据不止有total_qty一条qty数据,还有0~1k 1~2k 2~3k 3~4k 4~5k 5~6k 6~8k 8~10k 10K+这些价格档位的qty数据,所以这些也要分开预测,有一点限制,各个价格档位的数据合起来需要等于总的数据,总的数据就用我之前预测的,可以读取使用
最新发布
12-17
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值