《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)


相关推荐

  • idea2021.8.3激活码永久(JetBrains全家桶)「建议收藏」

    (idea2021.8.3激活码永久)好多小伙伴总是说激活码老是失效,太麻烦,关注/收藏全栈君太难教程,2021永久激活的方法等着你。https://javaforall.cn/100143.htmlIntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,上面是详细链接哦~Z9LZO4ZKWA-eyJsaWNlbnNlSWQiOi…

  • 基于java的学生信息管理系统源代码(javaweb学生管理系统源代码)

    /*学生信息管理系统,实现学生信息:*增加int[]a=newint[9]*删除*查找*更改*/importjava.util.Scanner;//导入java输入流importjava.lang.*;importjava.io.*;classStudent{ privatestaticStudent[]s=newStu

  • SpringBoot❤SpringClould常用注解史诗级汇总[通俗易懂]

    SpringBoot❤SpringClould常用注解史诗级汇总[通俗易懂]什么是注解?什什么是注解Java注解是附加在代码中的⼀一些元信息,⽤用于⼀一些⼯工具在编译、运⾏行行时进⾏行行解析和使⽤用,起到说明、配置的功能注解本质上继承Annotation接⼝口,我们可以通过反射获取注解的相关信息,从⽽而做些逻辑操作springboot⾥里里⾯面⼤大量量使⽤用了了注解,@Controller、@RestController、@Service、@Autowire等一、SpringBoot注解1.1.@SpringBootApplication包含@Confi

  • 计算两个日期中间的天数_excel两个日期相减计算天数

    计算两个日期中间的天数_excel两个日期相减计算天数25:计算两个日期之间的天数25:计算两个日期之间的天数查看提交统计提问查看提交统计提问总时间限制: 1000ms 内存限制: 65536kB描述给

  • c[-1,1]_winform tabcontrol

    c[-1,1]_winform tabcontrol因为Directshow是C++的东西,后来为了方便,才有牛人们在C#把directshow重写,但是相关文档很少,所以为了了解DIrectshow,从C++下的directshow开始是最合理不过的了,但是在C#用不到的知识就基本没有提及了··1基础介绍部分问题摘录:  DirectShow与ActiveMovie的关系?     Active

    2022年10月12日
  • Intellij IDEA 最全实用快捷键整理(长期更新)[通俗易懂]

    Intellij IDEA 最全实用快捷键整理(长期更新)[通俗易懂]IntellijIDEA最全实用快捷键整理(长期更新)正文前:1.IDEA内存优化(秒开的快感!!)因机器本身的配置而配置:\IntelliJIDEA8\bin\idea.exe.vmoptions//(根据你的配置变大!!)——————————————Xms2048m-Xmx2048m-XX:MaxPermSize=512m…

发表回复

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

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