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

《Python数据分析项目案例》猪肉(生猪)价格爬取与可视化分析(期末大作业、课程设计、毕业设计)Python数据分析、数据挖掘程序设计(期末结课大作业、课程设计、毕业设计)基于python语言的生猪价格爬取与可视化分析,Python大作业,数据分析与挖掘大作业。长文,多图预警,建议先收藏,后阅读。需要工程代码可直接阅读文末。

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE稳定放心使用


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

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

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

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

1 数据资源

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

数据特性如表1.1所示:


表1.1 数据特性


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

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

2.1 系统总体设计

2.1.1 系统设计目标

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

2.1.2 系统流程图

在这里插入图片描述


图2.1 系统流程图


2.1.3 系统组成简介

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

2.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”文件到本地。

在这里插入图片描述


图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) 运行结果及分析

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

在这里插入图片描述


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


在这里插入图片描述


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


在这里插入图片描述


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


在这里插入图片描述


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


在这里插入图片描述


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

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

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

在这里插入图片描述


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


玉米


图3.10 玉米价格走势图

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

在这里插入图片描述


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


在这里插入图片描述


图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所示。

在这里插入图片描述


图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所示。

在这里插入图片描述


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


在这里插入图片描述


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


在这里插入图片描述


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


在这里插入图片描述


图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。

在这里插入图片描述


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


在这里插入图片描述


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


在这里插入图片描述


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


在这里插入图片描述


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


在这里插入图片描述


图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月
兴趣是最好的老师,赠人玫瑰手留余香,如果您觉得本文还不错,请点赞+评论+收藏,关注更是我前进的动力!
如果本文对你有所帮助,解决了您的困扰,可以通过赞赏来给予我更大支持:
在这里插入图片描述

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

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/186813.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)
blank

相关推荐

  • HDU1160(LIS)

    HDU1160(LIS)

  • Typescript教程_typescript在线运行

    Typescript教程_typescript在线运行前言由于最近在使用vue3写项目,使用vue3的前提就是要学习TypeScript,TypeScript算是JavaScript的升级版,TypeScript包含JavaScript和自己的一些特性

  • idea最新激活码2021(JetBrains全家桶)

    (idea最新激活码2021)2021最新分享一个能用的的激活码出来,希望能帮到需要激活的朋友。目前这个是能用的,但是用的人多了之后也会失效,会不定时更新的,大家持续关注此网站~IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/100143.html…

  • lm算法讲解_m算法

    lm算法讲解_m算法请问MATLAB中LM算法(Levenberg-Marquard-algorithm)的函数是什么?。http://www.mathworks.com/matlabcentral/fileexchange/16063-lmfsolve-m-levenberg-.%.去看吧好像没有二维的.你最好看看这个函数,根据LM算法的意义修改一下计算方法:用来产生一些数据片段(例如消息或会话项)的哈…

  • 解决win10升级后无法打开VC问题「建议收藏」

    解决win10升级后无法打开VC问题「建议收藏」最近有不少小伙伴问到:“为什么win10自动升级后,我之前安装的VC怎么打不开了,一直报‘应用程序无法正常启动(0xc0000142)之类的错误’”。有的小伙伴把之前安装过的VC卸载后重装,然而重装后并没有解决问题,VC仍然打不开,还是报上面的错误。博主亲自尝试的一翻,并将报错的截图献给大家(有图有真相),对于有过经历的小伙伴一定很熟悉吧。       好了,咱们就直接进入主题

  • 代理服务器与反向代理服务器的区别「建议收藏」

    代理服务器与反向代理服务器的区别「建议收藏」代理服务器与反向代理服务器

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号