




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
湖南商务职业技术学院毕业设计
目录
1引言1
1.1项目背景1
1.2开发环境与工具1
1.2.1Python简介2
1.2.2数据可视化简介2
1.2.3Jypyternotebook简介2
2需求分析3
2.1可行性需求分析3
2.2采集目标功能分析3
2.3关键技术分析4
2.3.1网络爬虫技术4
2.3.2文件存取技术4
2.3.3可视化技术4
3数据采集5
3.1采集页面分析5
3.2字段分析8
3.2.1车辆名称字段分析9
3.2.2车辆日期字段分析9
3.2.3车辆里程字段分析10
3.2.4车辆售价字段分析11
3.3编程实现12
4数据清洗与处理15
4.1数据清洗16
4.2数据储存18
4.3编程实现19
5数据统计与分析20
5.1数据准备20
I
湖南商务职业技术学院毕业设计
5.2数据分析与展示20
5.2.1依据年统计总里程和总售价21
5.2.2依据年份对车辆总数进行统计26
5.2.3依据车型对车辆进行统计27
6小结31
参考资料32
II
湖南商务职业技术学院毕业设计
基于Python的人人车网络平台数据采集与分析
1引言
在时代高速发展的今天,信息已经成为了当今人们身边的重要组成部分。
不管是人手一台的手机电脑还是企业之间的数据和运作都需要用到信息。大量
的数据和信息需要存储并做出一定的处理。大数据需要特殊的技术,以有效地
处理大量的数据。
1.1项目背景
随着云时代的来临,信息已经成为了重要的数据。在互联网,数据库,大
数据技术不断完善的今天,为我们进行大数据分析和数据挖掘提供了强大支撑。
人人车在2014年四月成立,以其首创的二手车C2C交易模式作为切入点,
现已发展成为二手车、新车交易,金融服务,售后等为一体的综合型汽车交易
服务平台。
2017年9月,中国汽车业协会与人人车签订了全国二手车检验标准“行认
证”,并在全国范围内开展了第一个二手车电商平台的战略合作,对新车进行
了全面的检验,确保了新车的质量。在2021年七月十三日,人人汽车与中国女
足正式签订了合作协议,并与中国女足正式签约。
通过对人人车二手车网的数据采集,我们可以更好的了解二手车市场的趋
势。
我的毕业设计就是使用Python语言针对人人车网站进行大数据二手车的
信息爬取、清洗和可视化,从而可以获得各个车辆的价格、里程与时间,也可
以让想买二手车的人更好的找到自己所需。
1.2开发环境与工具
人人车二手车网数据的采集与分析,并对数据进行一个可视化,所以我使用了
Python爬虫技术、Python可视化。用的是谷歌浏览器和360安全浏览器,使用
的Python软件是PyCharmCommunityEdition2020.3.2x64。使用的环境是谷歌
浏览版本110.0.5481.178(正式版本)(64位),所以chromedriver驱动版本
要110的。
1
湖南商务职业技术学院毕业设计
1.2.1Python简介
Python是一种新的解释性脚本语言,它的创立者吉多·范罗萨姆于1989年
在阿姆斯特丹过圣诞节,当时他正处于百无聊赖的状态,在ABC的基础上,发
展出了一种全新的解释性脚本语言。
至于“python”这个名字,则是源自于英国1970年代的一部著名连续剧
《蒙提.派森的飞行马戏团》,龟叔就是这部电影的铁杆粉丝。
Python是一种简单、明了、而且具有很高一致性的程序模式。正因为它的
简单、开放,所以它也是当前最主要的一种编程语言。
Python提供了高效的高级数据结构,还能简单有效地面向对象编程。Python
语法和动态类型,以及解释型语言的本质,使它成为多数平台上写脚本和快速
开发应用的编程语言。
Python的代码大宝化为模块、软件包,便于管理、分发,是一个很好的团
队协作开发的好地方。
1.2.2数据可视化简介
数据可视化是图形表示的数据。它包括生成一幅图片,该图片向图片浏览
者传递所代表的数据间的关系。在可视化处理中,利用图元与资料数值间的系
统对应关系,可达到此目的。这个地图决定了一个数据的数值是怎样被可视化
的,决定了一个图形标签的属性是怎样和怎样被改变来反应参考数值的变化。
为了更清楚、更高效地表达信息,数据的可视化可以使用统计图,图表,
资讯图,以及其它的工具。数码资料可藉由点、线或条状来以视觉方式传递量
化讯息。高效的可视化可以帮助使用者对数据及证据进行分析与推理。它使得
更容易访问,理解,并使用了复杂的数据。使用者可以根据图表的设计原则(也
就是展示对比结果或展示结果),来做一些具体的分析工作,比如做一些比较
或者理解一些原因。一般情况下,用户可以在表格中找到具体的指标,而不同
的图形则被用来展示一个或者多个变量之间的图案或者关系。
1.2.3Jypyternotebook简介
Jupyternotebook是一款基于Web的交互式计算软件。其中,所有的互动
计算,编写说明性文件,数学公式,图片,以及其它富媒体的输入与输出,都
以文件的方式呈现出来。这样的文件不但可以很容易地进行版本管理,而且可
以很容易地与别人分享。它可以用于整个流程的计算,包括开发,文档的编写,
2
湖南商务职业技术学院毕业设计
代码的运行,以及结果的显示。利用LaTeX,Jupyternotebook也可以用来写数
学注释。
Jupyternotebook通过语法突出显示,缩进和标签填充来编写程序。您可
以在浏览器中直接执行此程式码,执行的结果会显示在程式码的下方。当你为
你的代码撰写指令文件或者声明时,你可以使用标记文法。
Jupyternotebook是专门为数据清洗而设计的,它可以用于数据清洗,搜
索,大数据分析。
2需求分析
2.1可行性需求分析
1.技术可行性
由于python语言的通俗易懂,我将使用python3.8(64-bit)对网页进行
Python爬虫数据的获取,然后通过Jupyternotebook和PyCharmCommunity
Edition2020.3.2x64对数据进行数据可视化和数据清洗。
2.项目可行性
人们普遍的话题有就业、车辆、房屋等问题,其中车辆问题是近几年一直
讨论的话题,在就业压力极大、工资普遍不高、消费逐渐变高、车辆需求量变
大的环境下,选择车辆就尤为重要。本次项目利用数据采集对人人车二手车网
进行一个统计分析,对于爬取人人车网上的车辆信息、价格、里程,通过一些
统计描述和分析,进行数据清洗和处理,最后将其可视化,从而满足我们对车
辆的需求。
2.2采集目标功能分析
这次项目的数据来源于人人车二手车网,是通过Python爬取人人车二手车
网的车辆各信息。爬取332页的车辆信息,数据清洗后共1886条记录,以此尽
可能保证数据可靠性。
本次爬人人车二手车网,获得了以下信息:车辆名称、车辆日期、车辆里
程、车辆售价。主要是通过实际数据来分析描述车辆的日期以及售价;比如:
这个地方的二手车辆有多少,其中哪一辆车的名称、上架日期啊、总共跑了多
少里程啊以及出售的价格,这样我们就能了解到每一年的二手车辆销售数据,
3
湖南商务职业技术学院毕业设计
从而分析二手车的市场。
2.3关键技术分析
2.3.1网络爬虫技术
在FOAF的圈子里,也有很多人把它叫做“页面捕食者”,它是一种软件,
可以根据某种规律,自动抓取万维网上的信息。网络爬虫从其体系结构及实现
技术上可以划分为通用式、聚焦式、增量式、深度式等几种。但是严格意义来
讲根据使用场景只有通用爬虫和聚焦爬虫之分。
2.3.2文件存取技术
在数据分析过程中,常常会出现这样的问题,那就是我们所要分析的数据
不是直接写进程序,而是通过各种手段把它读入内存中,这种情况下,就会导
致程序代码冗长,可用性差。通常的处理方式是:先把要被分析的数据存入本
地,然后再从存储器中读出。
一般保存数据的方式有文本文件、excel文件与数据库保存。
Python使用open函数保存如图2-1显示:
图2-1python的open函数保存
2.3.3可视化技术
数据可视化技术是用图形的方式来表达数据和信息。它的目标是将信息清
晰而高效地传递给用户。这是数据分析和数据科学的其中一个步骤。据
VitalyFriedma所言,“数据可视化的首要目的就是要用一种图解的方式来表达
清楚而高效的信息。这并不是说,数据视觉化就一定要让人觉得枯燥乏味,或
者看上去很漂亮。要想把想法高效地表达出来,审美的形式和功能必须同时进
行,用更加直观的方式表达出对稀疏而复杂的数据集的洞察力。但是,设计者
往往不能在形式与功能之间找到一个平衡点,花哨的数据可视化不能实现它的
主要目标-传递信息。”
这里使用到了第三方库如下:
4
湖南商务职业技术学院毕业设计
Pyecharts:ECharts是EnterpriseCharts的缩写,它是一种商业级数据
图表,它是一种纯Javascript的图表库,它可以流畅地运行在PC和移动设备
上,并且与目前绝大多数浏览器相兼容,它可以提供一种直观、生动、可互动、
可高度个性化定制的数据可视化图表。其创新性的“拖动再计算”、“数据视
图”、“价值域漫游”等功能,极大地提高了用户的使用体验,使用户能够更
好地挖掘和整合数据。
Matplotlib:这是一款基于Python的二维绘图软件包,可以为用户提供多
种硬复制格式的、可交互的、多个平台的、交互的、可供选择的图片。利用
Matplotlib,开发者只需要用到几行代码,就可以生成绘图,直方图,功率图,
条形图,错误图,散点图等。
Pandas:Pandas是一个免费、开源的第三方Python类库,是Python数据
分析中的一个重要的工具,它为Python的数据分析提供了一种高效的,简单易
用的数据结构,比如Series和DataFrame。自从它出现以来,已经在金融,统
计,社会科学,建筑工程等诸多领域得到了广泛的应用。Pandas程序库是在
PythonNumPy程序库的基础上开发出来的,可以和Python的科学计算程序库一
起工作。Pandas提供了Series(一维数组结构)与DataFrame(二维数组结
构)两种数据结构,大大增强了Pandas的数据分析能力。
3数据采集
3.1采集页面分析
打开谷歌浏览器或360浏览器,首先进入人人车二手车网,在地址那一栏
中选择关键字:合肥。观察图3-1,其中URL为:/hf/;
然后点击页面中的红色框的我要买车,同时观察图3-2中的URL,发现URL变化
成了/hf/ershouche/p1/;然后点击分页,继续观
察图3-3中的URL,发现URL变成了
/hf/ershouche/p2/。相比较图3-2,我们可以发现
只有最后的p1变成了p2
5
湖南商务职业技术学院毕业设计
图3-1人人车二手车爬取信息页面
图3-2人人车二手车第一页URL页面
6
湖南商务职业技术学院毕业设计
图3-3人人车二手车第二页URL页面
按F12调出开发者工具,选择Network,然后按Ctrl+P键刷新页面,如图3-4。
点击开发者工具上面的Headers字段,可以发现RequestMethod是GET,然后
我们滑到最底部,找到User-Agent,如图3-5。
图3-4开发者工具页面
7
湖南商务职业技术学院毕业设计
图3-5开发者工具页面
3.2字段分析
点击开发者工具中的左上角的箭头,点击需要的数据,定位到我们所爬取
的数据的位置,如图3-6,可r以看到我们刚才点击定位的那段数据以及需要的
数据都有:车辆名称、车辆日期、车辆总里程和车辆售价,并且都在名为
class="row-fluidlist-rowjs-car-list"的ul列表中。然后使用
EC.presence_of_element_located((By.CLASS_NAME,
"row-fluid.list-row.js-car-list")就能进入到这个class里面。
图3-6分析数据类型页面
8
湖南商务职业技术学院毕业设计
3.2.1车辆名称字段分析
如图3-7,我们可以看到人人车网中的车辆名称都在ul标签下的class为
span6list-itemcar-item的li标签里面的a标签下的h3标签里面,我使用
cars_list=driver.find_elements(by=By.CLASS_NAME,
value="span6.list-item.car-item")来定位这整个列表,然后用for循环进入
列表,再使用XPATH定位数据爬取如图3-8所示
图3-7分析人人数据页面
图3-8车辆名称定位爬取代码
3.2.2车辆日期字段分析
如图3-9所示,可以看出车辆日期和车辆名称在同一个li里面,我们就可
以继续for循环中写,只不过实在第二个div中的span里面,但又因为日期和
里程在一起,所以要使用split对其进行隔开获取,因为日期在前面所以使用
_time=car.find_element(by=By.XPATH,
9
湖南商务职业技术学院毕业设计
value="./a/div[2]/span").text.split("/")[0]就能获取到,如图3-10所示。
图3-9车辆日期网站分析
图3-10车辆日期定位爬取代码
3.2.3车辆里程字段分析
车辆里程字段和车辆日期字段在一起,同上一样,只需要使用_mileage=
car.find_element(by=By.XPATH,
value="./a/div[2]/span").text.split("/")[1]就能获取到里程。如图3-11。
10
湖南商务职业技术学院毕业设计
图3-11车辆里程定位爬取代码
3.2.4车辆售价字段分析
如图3-12所示,车辆售价数据在同一个li列表里的的第四个div中的div
中的第一个字段里面,因为里面有一个数据和一个数据单位,所以我们取下来
放在一起,使用_price=car.find_element(by=By.XPATH,
value="./a/div[4]/div").text.split()[0]就能获取到,如图3-13。
图3-12车辆售价定位分析
11
湖南商务职业技术学院毕业设计
图3-13车辆售价定位爬取代码
3.3编程实现
首先要使用selenium要先在Terminal里面使用pipinstall进行安装库,
然后我们要配置selenium的环境,需要到网址为
/index.html的网站中下载与
谷歌浏览器所对应版本的chromedriver驱动才可以使用。
然后导入要用到的库,如图3-14。
图3-14导入所需库页面
先使用open函数创建一个名为data.csv的文件,然后使用
csv.DictWriter设置文件中有四列参数,再使用一个for循环去设置网页每一
页的链接去带入进def函数里面爬取,进入函数就连接驱动,并进行User-Agent
伪装,然后指定Driver路径,再使用一个异常进入网页,并定位到ul标签里
面,然后将所有的li放进列表里,使用for循环列表,再使用一个异常对数据
进行爬取并存入文件和打印,出现异常则抛掉异常,具体运行代码如下:
importcsv
fromseleniumimportwebdriver
frommon.byimportBy
12
湖南商务职业技术学院毕业设计
fromselenium.webdriver.supportimportexpected_conditionsasEC
fromselenium.webdriver.support.uiimportWebDriverWait
defget_cars_info(page):
base_url="/hf/ershouche/"
target_url=base_url+page
options=webdriver.ChromeOptions()
options.add_argument("User-Agent=Mozilla/5.0(X11;Linuxx86_64)AppleWebKit/537.36
(KHTML,likeGecko)"
"Chrome/Safari/537.36")
#options.add_argument("--proxy-server=")
options.add_argument("--headless")
#指定Driver路径
#options.binary_location=""
#driver=webdriver.Chrome(executable_path="",options=options)
driver=webdriver.Chrome(options=options)
try:
driver.get(target_url)
car_list_total=WebDriverWait(driver,10).until(
EC.presence_of_element_located((By.CLASS_NAME,
"row-fluid.list-row.js-car-list"))
)
13
湖南商务职业技术学院毕业设计
cars_list=driver.find_elements(by=By.CLASS_NAME,
value="span6.list-item.car-item")
forcarincars_list:
try:
_name=car.find_element(by=By.XPATH,value="./a/h3").text
_time=car.find_element(by=By.XPATH,
value="./a/div[2]/span").text.split("/")[0]
_mileage=car.find_element(by=By.XPATH,
value="./a/div[2]/span").text.split("/")[1]
_price=car.find_element(by=By.XPATH,
value="./a/div[4]/div").text.split()[0]
car_item={
"_name":_name,
"_time":_time,
"_mileage":_mileage,
"_price":_price
}
csv_writer.writerow(car_item)
print("提交:",car_item)
exceptException:
pass
exceptExceptionasex:
pass
14
湖南商务职业技术学院毕业设计
#启动
data_file=open("data.csv","a+",newline="")
csv_writer=csv.DictWriter(data_file,fieldnames=["_name","_time","_mileage",
"_price"])
for_pageinrange(1,332):
get_cars_info("p"+str(_page))
print("第",_page,"页结束
")
data_file.close()
4数据清洗与处理
数据清洗指的是在数据文件中,发现并修正可辨识的错误的最终步骤,其
中包含了对数据一致性的检查,对无效值、缺失值的内容进行处理。与问卷审
核不同,录入后的数据清理一般是由计算机而不是人工完成。数据清洗主要是
指在回收数据之后,对样本、变量、数据、问卷逻辑等进行预处理的过程,它
是数据分析之前必不可少的一个步骤,它的结果对数据分析的质量和效率有很
大的影响。
在数据处理中,数据清洗是一个非常复杂、非常麻烦的工作,但是它又是
一个非常关键的步骤。
数据清洗就是要把不干净的数据清理得干干净净,从而使得原来的数据具
有完整性,唯一性,权威性,合法性和一致性。
在此,“脏”数据是指那些没有实际意义、格式不合法且不符合规定范围
的数据。null值通常表明数据是未知的,不适合使用,或者需要稍后才能加入。
数据集中的一个或几个属性的数值不完全,就是缺少一个值。通常的Null值是
空的,而缺少的值是NaN。
15
湖南商务职业技术学院毕业设计
4.1数据清洗
首先通过importpandasaspd导入pandas库,再通过pandas库中的
read_excel功能导入数据,最后将结果打印出来,如图4-1所示。
图4-1数据清洗分析页面
根据图4-1我们可以发现,整个数据中,里程和售价分别有两列数据,所
以我们重新导入一下数据,使用df1=pd.read_excel('D:\python代码\人人车
\data.xlsx',encoding='utf-8-sig',usecols=[0,1,4,5]就可以获取到想要数
据,如图4-2。
16
湖南商务职业技术学院毕业设计
图4-2数据清洗删除列页面
数据已经导入进去了,但是不知道里面是否含有空值或缺失值,所以对它
进行一个检查,使用isnull或者notnull函数进行判断,如图4-3,可以发现
并没有空值或者缺失值。
图4-3数据清洗空值判断页面
17
湖南商务职业技术学院毕业设计
4.2数据储存
文本文件使用pd.to_csv保存、excel文件使用pd.to_excel保存,数据库
保存使用pd.to_sql保存,这里因为导入的是excel文件进行清洗,所以保存
时使用excel进行保存,文件名为‘人人车’字符编码为utf-8-sig。但是如果
直接保存的话,日期会出现时间全部为零的情况,所以使用
pd.to_datetime(df1['日期']).dt.date把日期转换为日期格式,再去掉时间进
行保存,如图4-4。
图4-4数据存储页面
数据保存结果页面如图4-5。
图4-5数据存储结果页面
读取清洗后的源数据文件,并显示,如图4-6。
18
湖南商务职业技术学院毕业设计
图4-6源数据文件页面
4.3编程实现
整体对数据进行了清洗,导入具体的pandas库,然后导入该excel文件,
对其中多余的数据进行删除,再对整体数据进行判断是否有空值或者缺失值,
如果有进行删除或者填充,处理完成后对数据进行一个保存,之后新建一个新
的Python3文件,对保存的数据进查看即可。具体编程代码如下:
importpandasaspd#导入库
df=pd.read_excel('D:\python代码\人人车
\data.xlsx',encoding='utf-8-sig')#导入excel文件
df#打印查看是否正确
df1=pd.read_excel('D:\python代码\人人车
\data.xlsx',encoding='utf-8-sig',usecols=[0,1,4,5])#删除不需要的数据
df1
pd.isnull(df1)#查看数据中是否有空值和缺失值
df1['日期']=pd.to_datetime(df1['日期']).dt.date#变为日期格式并去掉时
间
df1.to_excel('D:\\python代码\\人人车\\000\\人人
车.xlsx',encoding='utf-8-sig')#数据清洗后进行保存
importpandasaspd#导入pandas库
df=pd.read_excel('D:\\python代码\\人人车\\000\\人人
车.xlsx',encoding='utf-8-sig')#导入源数据文件
df.head(10)#打印输出前十条数据
19
湖南商务职业技术学院毕业设计
5数据统计与分析
5.1数据准备
首先导入需要使用的库,然后设置显示中文字体,使用pandas导入数据并
查看前10条,如图5-1、5-2。
图5-1数据准备页面
图5-2数据加载页面
5.2数据分析与展示
因为数据已经清洗并准备好了,所以打开PyCharmCommunityEdition软件,
导入包并设置默认字体和符号,然后使用read_excel导入数据,取其中的日期、
里程、售价。因为是按日期对所有数据中的里程和售价进行统计,所以只取日
期中的年份即可,使用to_datetime和dt.year函数就可以只保留日期,再使
用for循环对日期进行去重和排序即可,如图5-3。
20
湖南商务职业技术学院毕业设计
图5-3日期数据去重排序代码
5.2.1依据年统计平均价格和平均里程
因为已经将年份取好并去重了,将取好的年份对去重了年份进行比较,相
同年份的里程和售价进行累加并获取到每年车辆的总数,然后将每一年的总售
价和总里程分别除去每一年的车辆总数就可以得到每一年的平均售价和平均里
程。需要创建两个列表进行存储每一年份的数据,还需要一个列表用来存储车
辆总数,两个列表用来分别存放每一年的平均售价和平均里程,这几个列表长
度必须与年份列表长度相匹配,具体使用for循环嵌套和if比较语句即可,做
完以上所有以后,会发现我们获取到的总售价、总里程和平均售价、平均里程
都是不精确的小数,所以要使用for循环和round函数将数据一个个精确到小
数点两位。具体代码如下图5-4。
21
湖南商务职业技术学院毕业设计
图5-4数据按年份统计平均数代码页面
使用def创建一个名为bar_tool的函数,写一个c=(),在c里面写一个
Bar(init_opts=opt.InitOpts(theme=ThemeType.LIGHT))表示图像为条形图,
并且设置样式,使用一个.add_xaxis和两个.add_yaxis设置好两个条形数据,
再使用.set_global_opts设置整体图形中的标题、图列、滚动条、动态数据、
视觉映射配置、区域缩放配置,x轴中的x轴分割线、x轴倾斜45°和y轴的分
割线等等。然后使用.set_series_opts设置图形中显示最大值和最小值,并设
置里程和售价平均值的一条虚线。具体代码如下图5-5。
22
湖南商务职业技术学院毕业设计
图5-5数据可视化代码页面
每年车辆的平均售价和平均里程可视化图如图5-6:
图5-6数据可视化展示页面
从图5-6中可以得知每一年的平均售价和平均里程,其中2018年的平均售
价最高,而平均里程又最低,而我们反观2012年的数据,我们可以看到平均里
程相对很高,而平均售价又相对比较低,看到这里,可以看出车辆的里程越高,
车辆的售价相对的更低,但是从2013、2015和2019年看,这三年的车辆里程
和售价都比较平均,没有其它几年那样取决于车辆的里程。具体运行代码如下:
23
湖南商务职业技术学院毕业设计
frompyechartsimportoptionsasopt
frompyecharts.chartsimportBar
importpandasaspd
importmatplotlib.pyplotasplt
frompyecharts.globalsimportThemeType
plt.rcParams['font.sans-serif']=['SimHei']#指定默认字体
plt.rcParams['axes.unicode_minus']=False#解决保存图像是负号‘-’
显示为方块的问题
f=pd.read_excel('D:\\python代码\\人人车\\data.xlsx',index_col=0)
score_name=f['日期']
mileage=f['里程(万公里)']
price=f['售价(万元)']
rq=pd.to_datetime(score_name)
year=rq.dt.year
year_qc=[]
foriinyear:
ifinotinyear_qc:
year_qc.append(i)
foriinrange(0,len(year_qc),1):
forjinrange(i+1,len(year_qc),1):
ifyear_qc[i]>year_qc[j]:
a=year_qc[i]
year_qc[i]=year_qc[j]
year_qc[j]=a
price_tol=list(range(0,len(year_qc),1))
mileage_tol=list(range(0,len(year_qc),1))
number=list(range(0,len(year_qc),1))
price_avg=list(range(0,len(year_qc),1))
mileage_avg=list(range(0,len(year_qc),1))
foriinrange(0,len(price_tol),1):
price_tol[i]=0
foriinrange(0,len(mileage_tol),1):
mileage_tol[i]=0
foriinrange(0,len(number),1):
number[i]=0
x=0
foriinyear_qc:
y=0
forjinyear:
ifj==i:
price_tol[x]=price_tol[x]+price[y]
24
湖南商务职业技术学院毕业设计
mileage_tol[x]=mileage_tol[x]+mileage[y]
number[x]=number[x]+1
y=y+1
x=x+1
x=0
foriinprice_tol:
price_tol[x]=round(i,2)
x=x+1
y=0
foriinmileage_tol:
mileage_tol[y]=round(i,2)
y=y+1
foriinrange(0,len(price_avg),1):
price_avg[i]=price_tol[i]/number[i]
foriinrange(0,len(mileage_avg),1):
mileage_avg[i]=mileage_tol[i]/number[i]
x=0
foriinprice_avg:
price_avg[x]=round(i,2)
x=x+1
y=0
foriinmileage_avg:
mileage_avg[y]=round(i,2)
y=y+1
defbar_tool():
c=(
Bar(init_opts=opt.InitOpts(theme=ThemeType.LIGHT))
.add_xaxis(year_qc)
.add_yaxis('年平均销售价格(万元)',price_avg)
.add_yaxis('年平均里程(万公里)',mileage_avg)
.set_global_opts(title_opts=opt.TitleOpts(title='每年车辆
的平均售价和平均里程'),
toolbox_opts=opt.ToolboxOpts(is_show=True,
feature=opt.ToolBoxFeatureOpts(
data_view=opt.ToolBoxFeatureDataViewOpts(is_show=True),
data_zoom=opt.ToolBoxFeatureDataZoomOpts(is_show=False)
)),
25
湖南商务职业技术学院毕业设计
#
visualmap_opts=opt.VisualMapOpts(max_=6000),
datazoom_opts=opt.DataZoomOpts(is_show=True),
legend_opts=opt.LegendOpts(is_show=True),
tooltip_opts=opt.TooltipOpts(trigger_on='click'),
xaxis_opts=opt.AxisOpts(splitline_opts=opt.SplitLineOpts(is_show=Tru
e),
axispointer_opts=opt.AxisPointerOpts(is_show=True),
axislabel_opts={'rotate':45}),
yaxis_opts=opt.AxisOpts(splitline_opts=opt.SplitLineOpts(is_show=Tru
e),
axispointer_opts=opt.AxisPointerOpts(is_show=True))
)
.set_series_opts(markpoint_opts=opt.MarkPointOpts(data=[
opt.MarkPointItem(name='min',type_='min'),
opt.MarkPointItem(name='max',type_='max')]),
markline_opts=opt.MarkLineOpts(data=[opt.MarkLineItem(name='平均值',
type_='average')]))
)
returnc
bar_tool().render('bar.html')
5.2.2依据年份对车辆总数进行统计
和上面的方法一样,先给年份去重,然后使用
list(range(0,len(yera_qc),1))创建一个和年份长度一样的列表,再用for循
环给它全部初始化为0,之后使用for循环遍历所有年份数据和去重完的年份进
行比较,年份相同就对其相对于的车辆总数列表进行加一,这样就能获取到每
26
湖南商务职业技术学院毕业设计
年车辆总数,如图5-7。
图5-7每一年车辆总数统计代码页面
图5-8数据展示页面
从图5-8条形图中可以看出2015、2016、2019年对于对于二手车的销售比
较多。从2015年以前可以看出,二手车的数量并不多,从2008到2015年之间
可以看出,二手车的销售量达到了一个顶尖,再从2018到2022年可以看出又
慢慢的呈现下降的趋势。具体运行代码如下:
frompyechartsimportoptionsasopt
frompyecharts.chartsimportBar
importpandasaspd
importmatplotlib.pyplotasplt
27
湖南商务职业技术学院毕业设计
plt.rcParams['font.sans-serif']=['SimHei']#指定默认字体
plt.rcParams['axes.unicode_minus']=False#解决保存图像是负号‘-’
显示为方块的问题
f=pd.read_excel('D:\\python代码\\人人车\\data.xlsx',index_col=0)
score_name=f['日期']
rq=pd.to_datetime(score_name)
year=rq.dt.year
year_qc=[]
foriinyear:
ifinotinyear_qc:
year_qc.append(i)
foriinrange(0,len(year_qc),1):
forjinrange(i+1,len(year_qc),1):
ifyear_qc[i]>year_qc[j]:
a=year_qc[i]
year_qc[i]=year_qc[j]
year_qc[j]=a
number_tal=list(range(0,len(year_qc),1))
foriinrange(0,len(number_tal),1):
number_tal[i]=0
x=0
foriinyear_qc:
forjinyear:
ifj==i:
number_tal[x]=number_tal[x]+1
x=x+1
print(year_qc)
print(number_tal)
defbar_tool()->Bar:
c=(
Bar()
.add_xaxis(year_qc)
.add_yaxis('车辆总数',number_tal)
.set_global_opts(title_opts=opt.TitleOpts(title="每一年的车辆
总数"),
toolbox_opts=opt.ToolboxOpts(),
legend_opts=opt.LegendOpts(is_show=True))
)
returnc
28
湖南商务职业技术学院毕业设计
bar_tool().render("车辆销量.html")
5.2.3依据车型对车辆进行统计
首先和之前一样导入excel文件,然后获取文件中的车辆名称列并存入到
列表中,再使用split对该表中的字符串进行一个空格分割,并对分割后的第
一个字符进行存入列表,然后在对其进行去重,再将两个列表进行比较,对每
辆车型进行一个统计。之后再使用data=[[iforiinrange(2)]foriin
range(33)]语句创建一个名为data的二维列表,并将车型和对应的数量赋给这
个列表,然后使用WordCloud()将数据画成一个词云图,如图5-9。
图5-9车型统计显示图
如图5-9,可以看出在这些年中,二手车市场中销量最好的车型是奥迪A4
和大众-高尔夫,其余车辆整体都差不多,具体运行代码如下:
frompyechartsimportoptionsasopt
frompyecharts.chartsimportWordCloud
importpandasaspd
importmatplotlib.pyplotasplt
plt.rcParams['font.sans-serif']=['SimHei']
29
湖南商务职业技术
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 公司聚餐自助餐活动方案
- 公司桶装水活动方案
- 公司研讨活动方案
- 公司礼仪礼节活动方案
- 公司活力秀活动方案
- 公司组织趣闻活动方案
- 公司新年节目策划方案
- 公司演唱会年会策划方案
- 公司月会具体活动方案
- 公司新春活动策划方案
- 广西壮族南宁市2024届六年级下学期小升初招生数学试卷含解析
- 专利不侵权承诺书
- 2023四川省港航投资集团有限责任公司招聘试题及答案解析
- 24春国家开放大学《生活中的数学》形考作业1-4参考答案
- 2024年初中升学考试生物模拟真题卷湖北省荆州市中考生物试卷
- 肺静脉狭窄诊治中国专家共识(2023版)解读
- 煤矿避灾路线培训课件
- 移动机器人定位导航性能评估规范
- 美的集团职位分析与职位说明书研讨会
- 《矿用防爆车辆电动自动转向系统技术要求》
- 代收房租协议书范文
评论
0/150
提交评论