一、 导入项目
导入项目、准备项目数据
import pandas as pd
# 文件路径为python文件位置下的相对路径
dwx=pd.read_excel("电蚊香套装市场近三年交易额.xlsx")
fmfz=pd.read_excel("防霉防蛀片市场近三年交易额.xlsx")
msmc=pd.read_excel("灭鼠杀虫剂市场近三年交易额.xlsx")
mz=pd.read_excel("盘香灭蟑香蚊香盘市场近三年交易额.xlsx")
wxq=pd.read_excel("蚊香加热器市场近三年交易额.xlsx")
wxp=pd.read_excel("蚊香片市场近三年交易额.xlsx")
wxy=pd.read_excel("蚊香液市场近三年交易额.xlsx")
二、合并数据
声明变量、使用方法观察数据
# 使用head()方法查看前5行数据print(dwx.head())# 使用tail()方法查看后5行数据print(dwx.tail())# 使用info()方法查看数据的字段及类型dwx.info()
三、 补齐数据
索引数据、合并数据、训练模型、预测数据
# 用sum方法汇总数据 dwx_all = dwx['交易金额'].sum() # 汇总单张表格数据 print(dwx_all) fmfz_all = fmfz['交易金额'].sum()msmc_all = msmc['交易金额'].sum() mz_all = mz['交易金额'].sum() wxq_all = wxq['交易金额'].sum() wxp_all = wxp['交易金额'].sum() wxy_all = wxy['交易金额'].sum() # 将7张表格的数据汇总并形成一张表(合并数据) m_sum = pd.DataFrame(data=[dwx_all, fmfz_all, msmc_all, mz_all, wxq_all, wxp_all, wxy_all], columns=['销售额'],index=['电蚊香', '防霉防蛀', '灭鼠灭虫', '灭蟑', '蚊香加热器', '蚊香片', '蚊香液']) m_sumtext = pd.DataFrame(data=[dwx_all, fmfz_all, msmc_all, mz_all, wxq_all, wxp_all, wxy_all], columns=['销售额'],index=['电蚊香', '防霉防蛀', '灭鼠灭虫', '灭蟑', '蚊香加热器', '蚊香片', '蚊香液']) print(m_sum)# 先使用head()和tail()方法观察数据d.head()d.tail()# 补齐缺失月份数据# 预测一个叶子行业的12月数据# 索引2017年12月分数据t17=d.where(d.时间=='2017-12-1').dropna()# 同理将2016年12月和2015年12月的数据也索引出来t16=d.where(d.时间=='2016-12-1').dropna()t15=d.where(d.时间=='2015-12-1').dropna()# 将2015年,2016年,2017年三年的数据合并t4=pd.concat([t17,t16,t15])# 由于我们的目的是用2015-2017年3年的12月份数据来进行回归建模,预测2018年12月数据# 因此,此处我们选用2015,2016,2017作为x变量,每一年12月份的数据作为y变量y=t4.drop('时间',axis=1)# 设置x轴的年份。x=[2017,2016,2015]# 使用回归算法预测,先加载numpy和sklearn库。
# 使用回归算法预测,先加载numpy和sklearn库。import numpy as npfrom sklearn import linear_model# 将数据处理成回归模型所需要的形式。x_train=np.array(x).reshape(-1,1)y_train=np.array(y.iloc[:,0])# 将线性模型实例化。linear_reg=linear_model.LinearRegression()# 训练模型。linear_reg.fit(x_train,y_train)# 输入自变量2018,预测2018年12月份的销售额。y_2018_12=linear_reg.predict(np.array([2018]).reshape(-1,1)).round(1)# 输出预测结果。print(y_2018_12[0])# 当一个动作有规律的出现3次或以上,肯定有一个办法可以更高效便捷。# 用循环预测所有叶子行业的12月数据# 写FOR循环,得到2018年所有类目12月份的预测值。y_12=[]for i in range(7):y_train=np.array(y.iloc[:,i])linear_reg=linear_model.LinearRegression()linear_reg.fit(x_train,y_train)y_pre=linear_reg.predict(np.array([2018]).reshape(-1,1)).round(1)y_12.append(y_pre[0])# 打印2018年个叶子行业12月份的预测结果。print(y_12)
四、 整理集数据绘制趋势图
索引数据、汇总数据、绘制各个子行业市场趋势图
# 重置索引。d.reset_index(inplace=True)# 由于“index”列没有作用,可以删除。del d['index']# 查看数据结果。print(d.head())# 汇总每一个月份的类目市场数据d2=d.drop('时间',axis=1)d['col_sum']=d2.apply(lambda x:x.sum(),axis=1)# 提取日期的年份。d['year']=d.时间.apply(lambda x: x.year)# 按年份汇总数据。data_sum=d.groupby('year').sum()print(data_sum)
# 绘制各个叶子市场的趋势图with plt.style.context('ggplot'):# 设置画布大小宽8inch,高6inch。pl=plt.figure(figsize=(8,6))# 绘制各叶子行业市场趋势线图。plt.plot(x,data_sum.iloc[:,0])plt.plot(x,data_sum.iloc[:,1])plt.plot(x,data_sum.iloc[:,2])# 设置数字标签。for a,b in zip(x,data_sum.iloc[:,2]):plt.text(a,b+0.05,'%.0f'% b,ha='center',va='bottom',fontsize=8)plt.plot(x,data_sum.iloc[:,3])plt.plot(x,data_sum.iloc[:,4])plt.plot(x,data_sum.iloc[:,5])plt.plot(x,data_sum.iloc[:,6])# 设置数字标签。for a,b in zip(x,data_sum.iloc[:,6]):plt.text(a,b+0.05,'%.0f'% b,ha='center',va='bottom',fontsize=8)# 设置图的标题,x轴标题,y轴标题,设置刻度线格式。plt.title('近三年驱虫市场各子市场容量趋势')plt.xlabel('year')plt.ylabel('交易额')plt.xticks(x,year,fontsize=9,rotation=45)# 设置图例,并画图,如图4-4所示。plt.legend(['电蚊香','防霉防蛀','灭鼠灭虫','灭蟑','蚊香加热器','蚊香片','蚊香液'])plt.show()
提交说明
(请注意以下说明,否则将会影响自己的最终成绩)
1、将所有Python文件压缩之后进行提交,命名为【学号姓名】。压缩包使用zip或rar格式均可。
2、将压缩包提交至对应班级的文件夹下,未上交、上交文件夹错误按0分处理。