销售趋势预测实例“灰色预测”方法!

第一部分:折线图(实例,华为手机和小米手机2023年销售量走势(数据自拟))

代码:

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
from pylab import mpl

# 设置中文显示字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False
# 生成2023年1月至12月的销量数据(示例数据,实际销量需要根据实际情况)
np.random.seed(0)  # 设置随机种子,以便结果可重复
months = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']

# 假设华为手机销量在500000到1000000之间,小米手机销量在300000到700000之间
huawei_sales = np.random.randint(500000, 1000000, size=12)
xiaomi_sales = np.random.randint(300000, 700000, size=12)

# 创建DataFrame
df = pd.DataFrame({
    '月份': months,
    '华为手机销量': huawei_sales,
    '小米手机销量': xiaomi_sales
})

# 保存为Excel文件
df.to_excel('华为与小米2023年销量.xlsx', index=False)

# 绘制销售走向图
plt.figure(figsize=(10, 5))  # 设置图表大小
plt.plot(df['月份'], df['华为手机销量'], label='华为手机销量', marker='o')  # 绘制华为手机销量
plt.plot(df['月份'], df['小米手机销量'], label='小米手机销量', marker='s')  # 绘制小米手机销量
plt.title('2023年华为与小米手机销量走向')  # 设置图表标题
plt.xlabel('月份')  # 设置x轴标签
plt.ylabel('销量(台)')  # 设置y轴标签
plt.legend()  # 显示图例
plt.grid(True)  # 显示网格
plt.show()  # 显示图表

结果:

好啦!持续更新,不断总结,也希望能够帮助到大家!

第二部分:使用灰色预测,预测2024年12个月两家手机厂商的销售量

代码:

import numpy as np
import pandas as pd
from scipy.optimize import fsolve

def GM11(x, n):
    """
    灰色预测模型
    x:输入数据序列
    n:预测步数
    """
    x1 = np.cumsum(x)  # 累加生成序列
    z1 = (x1[:len(x1)-1] + x1[1:])/2.0  # 紧邻均值生成序列
    z1 = z1.reshape((len(z1),1))
    B = np.append(-z1, np.ones_like(z1), axis=1)
    Y = x[1:].reshape((len(x)-1,1))
    # 计算参数 a 和 u
    [[a],[u]] = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Y)
    # 预测数据
    result = [x[0]]
    for i in range(1, len(x)+n):
        result.append((x[0]-u/a)*(1-np.exp(a))*np.exp(-a*(i)))
    return np.array(result)

# 读取Excel文件
df = pd.read_excel('华为与小米2023年销量.xlsx')

# 提取华为和小米的销售数据
huawei_sales = df['华为手机销量'].values
xiaomi_sales = df['小米手机销量'].values

# 使用灰色预测模型预测2024年的销量(12个月)
huawei_forecast = GM11(huawei_sales, 12)
xiaomi_forecast = GM11(xiaomi_sales, 12)

# 创建2024年的月份列表
months_2024 = ['1月', '2月', '3月', '4月', '5月', '6月', '7月', '8月', '9月', '10月', '11月', '12月']

# 创建包含2024年预测数据的DataFrame
df_forecast = pd.DataFrame({
    '月份': months_2024,
    '华为手机预测销量': huawei_forecast[-12:].round().astype(int),
    '小米手机预测销量': xiaomi_forecast[-12:].round().astype(int)
})

# 打印预测结果
print("2024年预测销量:")
print(df_forecast)

# 保存预测结果到Excel文件
df_forecast.to_excel('华为与小米2024年预测销量.xlsx', index=False)

# 绘制2023年实际销量和2024年预测销量的对比图
import matplotlib.pyplot as plt
from pylab import mpl

# 设置中文显示字体
mpl.rcParams["font.sans-serif"] = ["SimHei"]
# 设置正常显示符号
mpl.rcParams["axes.unicode_minus"] = False

plt.figure(figsize=(12, 6))

# 绘制2023年实际销量
plt.plot(df['月份'], df['华为手机销量'], label='2023年华为实际销量', marker='o')
plt.plot(df['月份'], df['小米手机销量'], label='2023年小米实际销量', marker='s')

# 绘制2024年预测销量
plt.plot(df_forecast['月份'], df_forecast['华为手机预测销量'], label='2024年华为预测销量', marker='o', linestyle='--')
plt.plot(df_forecast['月份'], df_forecast['小米手机预测销量'], label='2024年小米预测销量', marker='s', linestyle='--')

plt.title('2023年实际销量与2024年预测销量对比')
plt.xlabel('月份')
plt.ylabel('销量(台)')
plt.legend()
plt.grid(True)
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()

效果:

解释:

下面这一部分,我使用gpt直接生成的,因为公式太难编辑了!

(1)累加生成序列

(2)均值生成序列

(3)构建矩阵方程

[[a],[u]] = np.dot(np.dot(np.linalg.inv(np.dot(B.T, B)), B.T), Y)

(4)预测公式

result.append((x[0]-u/a)*(1-np.exp(a))*np.exp(-a*(i)))

好啦!持续更新,不断总结,也希望能够帮助到大家!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

还不秃顶的计科生

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值