《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)

声明
本文仅在CSDN发布,其他均为盗版。请支持正版!

正版链接:https://blog.csdn.net/meenr/article/details/107326104

基于python语言的生猪价格爬取与可视化分析

长文,多图预警,建议先收藏,后阅读。需要工程代码可直接阅读文末。

目录

  • 基于python语言的生猪价格爬取与可视化分析
  • 1 数据资源
  • 2 生猪价格数据挖掘系统设计
    • 2.1 系统总体设计
      • 2.1.1 系统设计目标
      • 2.1.2 系统流程图
      • 2.1.3 系统组成简介
    • 2.2 系统功能模块设计
      • 2.2.1 数据爬取模块设计
      • 2.2.2数据预处理与可视化模块设计
      • 2.2.3 数据简单回归分析模块设计
      • 2.2.4 门限回归预测与可视化模块设计
      • 2.2.5 预测结果误差分析与可视化模块设计
  • 3 生猪价格数据挖掘系统实现
    • 3.1 系统运行环境配置(计算机配置、Python软件简介)
    • 3.2 系统功能模块实现
      • 3.2.1 数据爬取
      • 3.2.2 数据预处理与可视化
      • 3.2.3 数据简单回归分析
      • 3.2.4 门限回归预测与可视化
      • 3.2.5 预测结果误差分析与可视化
  • 4 资料获取
    • 途径一
    • 途径二

1 数据资源

 爬取最近一年的每天的生猪(包括外三元、内三元和土杂猪)的价格和相关饲料原料(玉米和豆粕)的价格。

数据特性如表1.1所示:

表1.1 数据特性
名称 描述
pigprice 生猪(外三元)价格
pig_in 生猪(内三元)价格
pig_local 生猪(土杂猪)价格
maizeprice 玉米价格
bean 豆粕价格
time 日期
pork 猪肉价格

2 生猪价格数据挖掘系统设计

2.1 系统总体设计

2.1.1 系统设计目标

 通过对过去一年的的每天的生猪(包括外三元、内三元和土杂猪)的价格和相关饲料原料(玉米和豆粕)的价格数据进行数据挖掘,建立模型,再通过玉米价格变化来预测生猪价格。

2.1.2 系统流程图

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第1张图片

图2.1 系统流程图

2.1.3 系统组成简介

 本系统由数据爬取、数据预处理与可视化、数据简单回归分析、门限回归预测与可视化、误差分析与可视化五大模块组成。爬取互联网上的生猪(包括外三元、内三元和土杂猪)的价格和相关饲料原料(玉米和豆粕)的价格数据,判断生猪价格的趋势,预测生猪价格随玉米价格变化的情况、以及进行数据处理分析、与可视化。

2.2 系统功能模块设计

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第2张图片

图2.2 文件组成

2.2.1 数据爬取模块设计

 该模块主要功能是从网络上获取数据。将获得的json格式数据进行转换,并保存到本地的Excel表格中。

2.2.2数据预处理与可视化模块设计

 该模块主要功能是对爬取的原始数据进行预处理,如对外三元、内三元和土杂猪三类生猪价格求均值等,方便后续使用。另外对原始数据各个变量随时间变化的情况进行可视化分析,绘制变化趋势的图像。

2.2.3 数据简单回归分析模块设计

 该模块主要功能是通过对数据进行三种简单的回归分析,找到三种回归模型中最合适的回归模型。

2.2.4 门限回归预测与可视化模块设计

 该模块主要功能是通过对玉米价格与生猪价格进行门限回归预测建模分析,预测生猪价格。

2.2.5 预测结果误差分析与可视化模块设计

 该模块主要功能是对预测的生猪价格和生猪实际价格进行误差分析,并进行可视化分析,绘制标准差、方差的图像。

3 生猪价格数据挖掘系统实现

3.1 系统运行环境配置(计算机配置、Python软件简介)

计算机配置:Windows10

Python软件:Python3.7,Anaconda(Spyder3),PyCharm 2019,

3.2 系统功能模块实现

3.2.1 数据爬取

(1) 流程及操作步骤说明

 该模块是获得数据的关键,获得原始数据的必由之路,从网络爬取生猪价格等信息。

(2) 程序代码及详细注释

'''
部分代码
'''
list_date = [time.strftime(format1, time.localtime(i)) for i in range(bgn, end + 1, 3600 * 24)]
    return list_date


def Html_Data(url):
    response = requests.get(url=url, headers=header)
    if response.status_code == 200:
        data = response.content
        file = open("pig.html", "wb", 1)
        file.write(data)
        file.close()
        return data
    else:
        print("请求失败")


def Get_Json(url):
    response = requests.get(url, headers=header)
    json_text = response.json()
图3.1 数据爬取代码

(3) 运行结果及分析

 该模块运行后现象:
 打印“请求成功”,即表示网络请求正常,可以访问;打印爬取到的数据,即爬取成功;打印生成的最近一年的日期列表。
 保存了网页源码“pig.html”文件到本地;保存爬取到的数据“原始数据.xlsx”文件到本地。

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第3张图片

图3.2 保存到Excel的数据

3.2.2 数据预处理与可视化

(1) 流程及操作步骤说明

 该模块对爬取获得的原始数据进行预处理,标准化数据 。

(2) 程序代码及详细注释

'''
部分代码
'''
data2=pd. DataFrame(data2, columns=columns)
    data2.rename(columns={'time': '日期',
                          'pig_mean': '生猪',
                          'maizeprice': '玉米',
                          'bean': '豆粕'}, inplace=True)
    data2.to_excel("预处理1.xlsx", index=False)  
    data2['日期'] = pd.to_datetime(data2['日期'], format='%Y%m%d')
    data2.to_excel("预处理2.xlsx", index=False)


def Fig(data):
    mpl.rcParams['font.sans-serif'] = ['SimHei']
    mpl.rcParams['axes.unicode_minus']

    x = data['日期']
    y1 = data['生猪']
    y2 = data['玉米']
    fig = plt.figure()
    ax1 = fig.add_subplot(111)
    ax1.plot(x, y1,'r-')
    ax1.set_ylabel("生猪平均价格(元/公斤)")
    ax1.set_title("生猪价格与玉米价格波动情况")
    plt.legend(['生猪价格'])
    ax2 = ax1.twinx()
    ax2.plot(x, y2, 'b-')
    ax2.set_ylabel('玉米(15%水分) 元/吨')
    ax2 = plt.gca() 
    ax2.xaxis.set_major_formatter(mdate.DateFormatter('%Y-%m-%d')) 
    plt.xticks(pd.date_range('2019-5-1', '2020-5-10', freq='1m')) 
    plt.legend(['玉米价格'])  
    plt.figure()
图3.3 数据预处理和可视化代码1

(3) 运行结果及分析

 通过对数据的预处理获得该项目研究需要的数据,将三种生猪价格求均值,方便项目后续使用。行列操作也将数据排列更加易于后续使用。
 另外通过可视化分析可以清楚直观的反应出最近一年生猪价格、玉米价格和豆粕价格的波动情况。

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第4张图片

图3.4 数据预处理第一步保存的Excel截图

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第5张图片

图3.5 数据预处理第二步保存的Excel截图

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第6张图片

图3.6 生猪价格与玉米价格最近一年波动情况可视化截图

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第7张图片

图3.7 生猪价格最近一年波动情况可视化截图

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第8张图片

图3.8 生猪(外三元)价格走势图

从以上两幅图可以对比验证生猪(外三元)价格数据的准确性。

 生猪价格是对三种生猪价格求均值得到的,所以会有较小的偏差。

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第9张图片

图3.9 玉米价格最近一年波动情况可视化截图

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第10张图片

图3.10 玉米价格走势图
从以上两幅图可以对比验证玉米价格数据的准确性。

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第11张图片

图3.11 豆粕价格最近一年波动情况可视化截图

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第12张图片

图3.12 猪价网豆粕价格走势图
从以上两幅图可以对比验证豆粕价格数据的准确性。

3.2.3 数据简单回归分析

(1) 流程及操作步骤说明

该模块对预处理后获得的数据进行简单回归分析。

(2) 程序代码及详细注释

'''部分代码'''

 plt.ylabel('生猪价格')
    plt.grid(True)
    plt.plot(x, y, 'k.')
    plt.show()
    
	
def Anlys2(data):
    matplotlib.rc('font', **font)
    matplotlib.rcParams['axes.unicode_minus'] = False
  
  
def Anlys3(data):
    mpl.rcParams['axes.unicode_minus']
    x = data[['玉米']]
    y = data[['生猪']]
    print("===", data['玉米'].corr(data['生猪']), "===")
    pf = PolynomialFeatures(degree=2)  
    x_2_fit = pf.fit_transform(x)  
图3.13 数据简单回归分析代码

(3) 运行结果及分析

 运行结果打印出:简单回归评分:0.15和玉米价格为1990,2000,2010时对应预测的三个生猪价格分别为:29.22、29.53、29.74。
绘制生猪价格与玉米价格的散点图图像,如图3.14所示。

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第13张图片

图3.14 数据简单线性回归分析绘制的散点图

 从图3.14和打印的回归评分可以看出,生猪价格和玉米价格几乎不存在单纯的线性关系,所以若要通过玉米价格预测生猪价格,必须换更高级的回归模型。

3.2.4 门限回归预测与可视化

(1) 流程及操作步骤说明

 通过查找资料文献得到了分析生猪价格与玉米价格的方法,该模块对预处理后的获得的数据构建门限回归模型预测生猪价格,设计了九个函数,除此之外,还进行了可视化分析。

(2) 程序代码及详细注释

'''部分代码'''

Y=np.column_stack((Y,data[:,data.shape[1]-1]))
Y=resort_bymenxian(Y,0)


Y=resort_bymenxian(Y,0)

pdt = pd.DataFrame(Y)

pdt.rename(columns={0: '玉米',1: '预测',2: '实际'}, inplace=True)
pdt.to_excel("预测数据.xlsx", index=False)

print("预测值:",Y[:,1])
mpl.rcParams['font.sans-serif'] = ['SimHei']  
mpl.rcParams['axes.unicode_minus']
ax1 = plt.subplot(211)
plt.plot(Y[:,0],Y[:,1],'r', linestyle=":")
plt.title('预测值',fontsize=10)
plt.xlabel('玉米价格')
plt.ylabel('生猪价格')
ax1 = plt.subplot(212)
plt.plot(Y[:,0],Y[:,2],'g', linestyle=":")
plt.title('实际值',fontsize=10)
plt.xlabel('玉米价格')
图3.15 数据门限回归分析代码

(3) 运行结果及分析

 运行结果打印出预测的所有数据。绘制生猪实际价格与预测价格随玉米价格变化的波动情况的图像,如图3.16-3.19所示。

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第14张图片

图3.16 数据预处理第三步保存的Excel截图

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第15张图片

图3.17 生猪价格预测值、实际值随玉米价格波动的可视化截图

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第16张图片

图3.18 生猪价格与玉米价格的门限回归预测可视化截图

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第17张图片

图3.19 预测的生猪价格数据保存的Excel截图

3.2.5 预测结果误差分析与可视化

(1) 流程及操作步骤说明

 该模块对门限回归预测后的获得的数据进行误差分析和可视化,设计了三个函数。

(2) 程序代码及详细注释

'''部分代码'''

data1 = df[0:][['预测', '实际']] 
    data2 = data1.T
    data2.loc["标准差"]= data2.apply(lambda x: x.std())
    data2.loc["方差"] = data1.T.apply(lambda x: x.var())
    data2.to_excel("误差分析.xlsx", index=True)

	
def Fig(df1):
    data=read_excel('误差分析.xlsx').T
    data.to_excel("误差分析1.xlsx", index=False,columns=None)
    data1 = read_excel('误差分析1.xlsx')
    data1.rename(columns={0: '预测',  1: '实际',2: '标准差',3: '方差'}, inplace=True)
    data2=data1.drop(index=[0])
    mpl.rcParams['font.sans-serif'] = ['SimHei']  # 指定默认字体
    mpl.rcParams['axes.unicode_minus']
    x1 = df1['日期']
    y1 = data2['预测']
    y2 = data2['实际']
    y3 = data2['标准差']
    y4 = data2['方差']
图3.20 预测误差分析代码

(3) 运行结果及分析

 运行后打印出生猪价格预测值、实际值以及它们的标准差和方差,如图3.21所示;绘制出生猪价格预测值与实际值的波动情况,以及它们的标准差和方差与时间的图像,如图3.22-3.25。

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第18张图片

图3.21 预测误差分析代码运行截图

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第19张图片

图3.22 误差分析保存的Excel截图

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第20张图片

图3.23 误差分析转置数据保存的Excel截图

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第21张图片

图3.24 生猪价格预测值与实际值随时间波动情况截图

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)_第22张图片

图3.25 生猪价格预测值与实际值的标准差和方差波动情况截图

 从图3.25可以看出预测误差较小的价格月份和预测误差较大的月份有哪些。2019.07.15-2019.09.15、2019.12.01-2020.12.31、2020.02.15-2020.03.15、2020.04.01-2020.05.08这几个时间段预测较为稳定准确。

4 资料获取

感兴趣的读者可获取参照以下方式获取本文相关资料。优先推荐途径一,若遇途径一失效,请再尝试途径二。

途径一

优先推荐该途径
第一步:扫描下方二维码,或打开微信搜索并关注“ 2贰进制 ”公众号;
第二步:回复“ 生猪价格 ”可获取本文相关资料。

二维码

途径二

优先推荐途径一,该途径管理可能不能秒回
扫描下方二维码,加入学习交流QQ群“ 480558240 ”,联系管理员获取包括但不限于本篇内容的更多学习资料。
在这里插入图片描述
2贰进制–Echo 2020年4月
兴趣是最好的老师,赠人玫瑰手留余香,如果您觉得本文还不错,请点赞+评论+收藏,关注更是我前进的动力!
如果本文对你有所帮助,解决了您的困扰,可以通过赞赏来给予我更大支持:
在这里插入图片描述

此致
感谢您的阅读、点赞、评论、收藏与打赏。

你可能感兴趣的:(Python,#,数据分析,#,爬虫,可视化,数据挖掘,大数据,python,matplotlib)