电商商城定制开发python可视化疫情事实报告(pyecharts)——可视化

目录


一、电商商城定制开发网页数据分析

1、电商商城定制开发这期我们要讲解的是用python电商商城定制开发制作疫情数据可视化类似于这样:

如何?很炫酷吧,电商商城定制开发还可以在上面点击显示数据。 电商商城定制开发不过在如此华丽的前提电商商城定制开发下我们依旧需要先获取到数据,电商商城定制开发不然哪有掉下来的馅饼呢?

2、数据的获取

这次我们需要出发的网站是,这里作者以山西省为例。获取数据制作可视化地图。进去之后你会发现,其实里面有很多数据都是属于隐藏的,如果用requests是很难得到的,因为是Ajax请求,属于异步加载,封装了的,就好比洋葱一样,外面还有一层壳,需要具备JS逆向才好得到(但是对比官方——全国疫情最新消息好拿多了,有兴趣的同学可以试试,虽然没有放入ajax里面,但是数据确实真实的洋葱样,作者花了一小时,最后放弃了)。教同学们一个爬虫技巧,当遇到不难爬,已经是表明了的数据时,可以用requests和urllib,但是遇到Ajax请求的封装包时,如果你技术硬,可以用JS逆向获取,但是我相信,如果技术都到那了,应该来这里也没多大意义了,是吧!当然,也不是没有办法,selenium就是最硬的道理。简单粗暴,直接模拟人工获取数据。

3、这里我们需要获取的数据就是最新报告,上代码:

二、代码实现:

1、第一步,老规矩,导入库,数据采集

  1. # 作者:杨家乐
  2. # 阶段:进阶练习中,请稍后.......
  3. # 开发时间:2022/10/15 01:30
  4. import pandas as pd
  5. from pyecharts import options as opts
  6. from pyecharts.charts import Map
  7. from selenium.webdriver.common.by import By
  8. from selenium import webdriver
  9. def data_get(url):
  10. drive=webdriver.Chrome()
  11. drive.get(url)
  12. ls=drive.find_elements(By.CSS_SELECTOR,'.w-table-striped .w-table-tbody > tr.w-table-row')
  13. city=[]
  14. num=[]
  15. treatment=[]
  16. for i in ls:
  17. a=i.text.split(" ")
  18. city.append(a[0])
  19. num.append(int(a[2]))
  20. treatment.append(int(a[4]))
  21. return city,num,treatment

这里我们用人工模拟实现数据的获取,大家可以看看这个网页,会发现他的数据是嵌套的而这个的好处就是更加有利于我们数据的获取

这里作者事先在第一个函数中定义了三个列表,分别用于存储市,累计人数,治愈人数。定位得到相应数据后遍历返回到列表,最后将三个列表导出来。

2、第二步,数据的处理 

  1. def data_set(city,num,treatment):
  2. data={'城市':city,
  3. "累计确诊":num,
  4. "治愈":treatment}
  5. df=pd.DataFrame(data=data)
  6. # print(df[df["治愈"]>20])打印治愈人数大于20的省份
  7. df.to_excel("2022年10-16山西省疫情时事报告.xlsx")#保存数据
  8. z1=[list(i) for i in zip(city,num)]
  9. del z1[2]
  10. return z1

获取到相对应的数据后我们将这些数据导入到excel数据表中,当然,这里你也可以不用导,作者只是习惯。每次爬虫数据都会给存储记录。因为我们要制作地图,众所周知,山西没有第12个省,而这串数据中我们得到一份境外输入的数据,再导入后我们需要将cishujv进行删除(del list_name[index])。最后,返回整理后的数据。这里作者提前将city和num打包成列表是为了方便制作图表,pyecharts制作图表的方式其实和matplotlib差不多,都是二维数组的方式。

3、第三部,图表的制作

  1. def map_shanxi(z1):
  2. map=Map(init_opts=opts.InitOpts(width='500px',height='600px'))
  3. map.add('累计感染人数',data_pair=z1,maptype='山西',is_map_symbol_show=False)
  4. map.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
  5. map.set_global_opts(title_opts=opts.TitleOpts(title='山西省疫情最新报告',subtitle='数据来源-爬虫百度最新报告'),
  6. visualmap_opts=opts.VisualMapOpts(max_=302,is_piecewise=True,range_color=['lightskyblue','orange','red']))
  7. map.render('山西疫情最新报告.html')

数据整理完后就到画图部分了,这里需要大家先pip install pyecharts导入相关库,具体关于pyecharts的的用法作者就不一一讲解了,因为涉及的知识也是有点多,点击这里,讲得很细,大家可以去吸收一下。最后,给大家上去全段代码

  1. # 作者:杨家乐
  2. # 阶段:进阶练习中,请稍后.......
  3. # 开发时间:2022/10/15 01:30
  4. import pandas as pd
  5. from pyecharts import options as opts
  6. from pyecharts.charts import Map
  7. from selenium.webdriver.common.by import By
  8. from selenium import webdriver
  9. def data_get(url):
  10. drive=webdriver.Chrome()
  11. drive.get(url)
  12. ls=drive.find_elements(By.CSS_SELECTOR,'.w-table-striped .w-table-tbody > tr.w-table-row')
  13. city=[]
  14. num=[]
  15. treatment=[]
  16. for i in ls:
  17. a=i.text.split(" ")
  18. city.append(a[0])
  19. num.append(int(a[2]))
  20. treatment.append(int(a[4]))
  21. return city,num,treatment
  22. def data_set(city,num,treatment):
  23. data={'城市':city,
  24. "累计确诊":num,
  25. "治愈":treatment}
  26. df=pd.DataFrame(data=data)
  27. # print(df[df["治愈"]>20])打印治愈人数大于20的省份
  28. df.to_excel("2022年10-16山西省疫情时事报告.xlsx")#保存数据
  29. z1=[list(i) for i in zip(city,num)]
  30. del z1[2]
  31. return z1
  32. def map_shanxi(z1):
  33. map=Map(init_opts=opts.InitOpts(width='500px',height='600px'))
  34. map.add('累计感染人数',data_pair=z1,maptype='山西',is_map_symbol_show=False)
  35. map.set_series_opts(label_opts=opts.LabelOpts(is_show=True))
  36. map.set_global_opts(title_opts=opts.TitleOpts(title='山西省疫情最新报告',subtitle='数据来源-爬虫百度最新报告'),
  37. visualmap_opts=opts.VisualMapOpts(max_=302,is_piecewise=True,range_color=['lightskyblue','orange','red']))
  38. map.render('山西疫情最新报告.html')
  39. def start():
  40. url='https://wx.wind.com.cn/WindSariWeb/sari/messageInfo.html?province=shanxi&lan=cn'
  41. city,num,treatment=data_get(url)
  42. z=data_set(city,num,treatment=treatment)
  43. map_shanxi(z1=z)
  44. if __name__ == '__main__':
  45. start()

三、 成果展示

 

四、今日美文

         即使在劳累,也别忘记,多露出笑容。因为你是在前进,为了遇见更美更好的自己。

网站建设定制开发 软件系统开发定制 定制软件开发 软件开发定制 定制app开发 app开发定制 app开发定制公司 电商商城定制开发 定制小程序开发 定制开发小程序 客户管理系统开发定制 定制网站 定制开发 crm开发定制 开发公司 小程序开发定制 定制软件 收款定制开发 企业网站定制开发 定制化开发 android系统定制开发 定制小程序开发费用 定制设计 专注app软件定制开发 软件开发定制定制 知名网站建设定制 软件定制开发供应商 应用系统定制开发 软件系统定制开发 企业管理系统定制开发 系统定制开发