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

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

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

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

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Java集合汇总篇「建议收藏」

    Java集合汇总篇「建议收藏」一.集合框架Java集合框架一些列的接口和类来实现很多常见的数据结构和算法,例如LinkedList就是集合框架提供的实现了双向链表的数据结构,关于这一篇文章建议大家收藏,我会不断地完善和扩充它的内容,例如最下面的系列文章我以后也会对它进行不断的更新集合框架的接口集合框架提供了很多接口,这些接口都包含了特定的方法来实现对集合上的特定操作)我们将要学习这些接口以及子接口和它们的各种实现类,在开始之前我们先简单学习一下这些广泛运用的接口,可以看到整个集合框架,总共有三个顶级接口Collecti

    2022年7月16日
    16
  • 有了http1.1的keeplive长连接后是否可以不需要websocket

    有了http1.1的keeplive长连接后是否可以不需要websocket

    2022年3月4日
    46
  • 简述python中的数字类型有哪些_python中都有哪些数据类型

    简述python中的数字类型有哪些_python中都有哪些数据类型python中数据类型有:整型、长整型、浮点型、字符串类型、布尔类型、列表类型、元组类型、字典类型、集合类型。数据类型是每种编程语言必备属性,只有给数据赋予明确的数据类型,计算机才能对数据进行处理运算,因此,正确使用数据类型是十分必要的,不同的语言,数据类型类似,但具体表示方法有所不同,以下是Python编程常用的数据类型:1.数字类型Python数字类型主要包括int(整型)、long(长整型…

    2022年5月26日
    53
  • 操作系统中的进程调度策略有哪几种「建议收藏」

    操作系统中的进程调度策略有哪几种「建议收藏」先来先服务调度算法:先来先服务(FCFS)调度算法是一种最简单的调度算法,该算法既可用于作业调度,也可用于进程调度。当在作业调度中采用该算法时,每次调度都是从后备作业队列中选择一个或多个最先进入该队列的作业,将它们调入内存,为它们分配资源、创建进程,然后放入就绪队列。在进程调度中采用FCFS算法时,则每次调度是从就绪队列中选择一个最先进入该队列的进程,为之分配处理机,使之投入运行。该进程一直运行到…

    2022年9月29日
    2
  • 深入理解getopt[通俗易懂]

    深入理解getopt[通俗易懂]getopt–解析命令的可选项【说明】getopt只是一个简单的解析命令可选项的函数,只能进行简单的格式命令解析,格式如下:1、形如:cmd[-a][-b]//对短选项的解析;2、形如:cmd[-aa_argument][-bb_argument]//对短选项及短选项的参数解析;3、形如:cmd[-a[a_argument]]//选项a的参数也是可选的情况解析4…

    2022年6月8日
    35
  • 在线编辑、在线预览、在线转换,基于wps.js + java + react / vue,无需任何插件,零安装

    基于wps.js在线编辑、在线预览、在线转换前台vue/react后台java,无需任何插件,零安装,可以直接配置完打包部署,也可直接集成项目中,或者二次开发,后续会不定期更新,有好的建议或者意见请留言。请下载demo的时候给个star,谢谢!亮点………示例地址https://ljserver.cn/wpsonline前台vuedemo下载地址点击此处下载vue-demo后台javademo下载地址点击此处下载java-demo…

    2022年4月12日
    384

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

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