从数据爬取到可视化
一、数据爬取
1.python简介
-
Python的创始人为荷兰人吉多·范罗苏姆 (Guido van Rossum)。1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心开发一个新的脚本解释程序,作为ABC 语言的一种继承。之所以选中Python(大蟒蛇的意思)作为该编程语言的名字,是取自英国20世纪70年代首播的电视喜剧《蒙提.派森的飞行马戏团》(Monty Python's Flying Circus)。
-
Python是完全面向对象的语言。函数、模块、数字、字符串都是对象。并且完全支持继承、重载、派生、多继承,有益于增强源代码的复用性。Python支持重载运算符和动态类型。相对于Lisp这种传统的函数式编程语言,Python对函数式设计只提供了有限的支持。
-
Python缺点,其一是速度慢:和C程序相比非常慢,因为Python是解释型语言,你的代码在执行时会- -行-行地翻译成CPU能理解的机器码,这个翻译过程非常耗时,所以很慢。而C程序是运行前直接编译成CPU能执行的机器码,所以非常快。其二是无法加密:如果要发布你的 Python程序,实际上就是发布源代码,这-点跟C语言不同,C语言不用发布源代码,只需要把编译后的机器码(也就是你在Windows.上常见的xx.exe文件)发布出去。要从机器码反推出C代码是不可能的,所以,凡是编译型的语言,都没有这个问题,而解释型的语言,则必须把源码发布出去。
-
Python在设计上坚持了清晰划一的风格,这使得Python成为一门易读、易维护、开源、高层语言、可移植、面向对象、可扩展、可嵌入、丰富的库,并且被大量用户所欢迎的、用途广泛的语言。
2.什么是网路爬虫
网络爬虫,又称网页蜘蛛(webspider),是一个功能强大的能够自动提取网
页信息的程序,它模仿浏览器访问网络资源,从而获取用户需要的信息,它可以为搜索引擎从万维网上下载网页信息,因此也是搜索引擎的重要组成部分。
根据爬取的对象、使用的结构及技术,爬虫可分为:
- 通用型爬虫
该爬虫又称为全网爬虫,主要用在搜索引擎,从初始的URL到全网页面,但需要的存储容量大,速度要求快,工作性能强大。. - 聚焦型爬虫
该爬虫专注某一方面,只搜索事先定义的关键信息。 - 增量型爬虫
每隔一段时间更新,重新爬取,更新数据库。
怎么来用python爬虫,这里可以用python强大的丰富的标准库及第三方库来完成。这是爬虫的核心部分。尤其是对网页的解析,可使用正则表达式、BeautifulSoup、 lxml 来解析网页,三种方法各有千秋,使用时可根据用户的熟练程度和需要选择-种适合的解析方法。
3.网页解析
- BeautifulSoup
Bs4数据解析的原理:
1、实例化一个BeautifulSoup对象。并且将页面源码数据加载到该对象中
-1.将本地的html文档中的数据加载到该对象中
htmlPath = 'text.html .
fp=open( htmlPath, 'r' ,encoding='utf-8')
#将本地的html文档中的数据加载到该对象中
soup=BeautifulSoup(fp,'1xm1')
-2.将互联网上获取的页面源码加载到该对象中
page_ text=response. text
soup=BeautifulSoup(page_ text,' 1xm1')
2、通过调用BeautifulSoup对象中相关的属性或者方法进行标签定位和数据提取
-1.find()方法
-soup.a返回a标签第-次出现的内容
-soup.find('div')返回div标签第一次出现的内容
# 属性定位返回到某一个标签
soup.find('div',class_='song' )
-soup.find_ all('a')返回符合要求的所有标签(列表)
-2.select()方法
-soup.select('.某种选择器(id,class,标签,选择器) ') (列表)
-层级选择器:(列表)
“>”大于号表示一个标签
-soup.select('.tang > ul > li > a')[1]”
空格表示多个连接标签
-soup. select('.tanga')[1]
-3.获取标签之间的文本数据:
-text/get_ text(): 只可以获取该标签下所有的文本内容
-string:只可以获取该标签下直系的文本内容
-soup.a.text/string/get_ text( )
-4.获取标签中的属性值:
-soup.a['href']
Beautiful Soup提供一些简单的、 python 式的函数来处理导航、搜索、修改分析树等功能。它是一个工具箱,通过解析文档为用户提供需要抓取的数据,因为简单,所以不需要多少代码就可以写出一个完整的应用程序。Beautiful Soup自动将输入文档转换为Unicode编码,输出文档转换为utf-8编码。你不需要考虑编码方式,除非文档没有指定一个编码方式, 这时,Beautiful Soup就不能自动识别编码方式了。然后,你仅仅需要说明一下原始编码方式就可以了。Beautiful Soup已成为和lxml、html6lib一样出色的python解释器,为妒灵活地提供不同的解析策略或强劲的速度。
- etree
xpath解析原理:
1、实例化一个etree的对象,且需要将被解析的页面源码数据加载到该对象中。
-1.将本地的html文档中的源码数据加载到etree对象中:
htmlPath = 'text.html
etree. parse(htmlPath)
-2.可以将从互联网上获取的源码数据加载到该对象中
page_ text=response.text
tree=etree.HTML('page_ text')
xpath(-xpath表达式)
2、调用etree对象中的xpath方法结合着xpath表达式实现标签的定位和内容的捕获。
-1.xpath()方法
-tree.xpath('/html/body/div') (列表)
-定位到某个类
-“div[@/class=”类名”]”
-2.层级选择器:(列表)
“//”双斜杠表示间接的子孙标签
-tree.xpath('//div[@class="song"]/p[3]')
“/”单斜杠表示表示直接的子标签
-tree .xpath('/html/body/div[@class="song"]/p[3]')
-3.获取标签之间的文本数据:
-text/text():只可以获取该标签下所有的文本内容
-tree.xpath( '//div[@class="tang"]//li[5]/a/text()')[0]
-string:只可以获取该标签下直系的文本内容
-tree.xpath( '//div[@class="tang"]//li[5]/a/string()')[0]
-4.获取标签中的属性值:
-”/@”来声明属性后面在加属性名 (/@src或者/@href)
-tree . xpath(' / /div[@class="song"]/ img/@src')[0]
etree.HTML()可以用来解析字符串格式的HTML文档对象,将传进去的字符串转变成_ Element对象。 作为_ Element对象,可以方便的使用getparent()、 remove()、 xpath()方法。如果想通过xpath获取html源码中的内容,就要先将html源码转换成_Element对象, 然后再使用xpath()方法进行解析
4.数据爬取流程
对任何一个网页进行数据爬取的流程基本上是一样。
1. 开发环境安装
(1)从win的cmd命令下载
pip install lxml
pip install bs4
pip install requests
pip csv
(2)从开发工具PyCharm设置下载
2.模块导入
需要导入的模块如下:
import requests
from lxml import etree
from bs4 import BeautifulSoup
import re
Import os
import csv
3.指定url
给出要获取的网页的网站地址url
4.数据请求
对指定的url可以使用get()、post()方法进行请求。
Get()请求使用较多对于那些没有对输入数据发请求的;
post()请求用于对要隐蔽性的用户输入信息的。
5.数据获取
对数据的获取有三种:分别是text、json、content.
text获取通过调用响应对象的text属性,返回响应对象中存储的字符串形式的响应数据(页面源码数据);
json获取返回是0BI。
content获取对象一般都是图片类型的,返回的是响应对象中存储的二进制形式的响应数据。
6.数据解析
使用lxml、bs4、正则表达式、来解析要获取信息的html
对获取的html进行分析,然后对直接需要获取的信息的html字段进行解析,一直解析到直接需要的信息文本或者链接属性值。然后在对获取的url进行发起请求、数据获取、数据解析、数据存储,循环这个操作就获取到信息
7.数据存储
将获取的信息可以储存起来,可以是以列表、数组、字典、集合、txt、html、csv、数据库、img等等形式存放
示例:我们对一个网站来实例化爬取一个,对搜狐体育新闻的NBA的所有新闻信息进行爬取,这里代码是自己写的(该网站是一个动态的需要懒加载的网站信息,毕竟是一个新闻网站,信息都是实时更新的)
#导入模块
import requests
import os
from lxml import etree
from selenium import webdriver
from lxml import etree
from time import sleep
import urllib3
urllib3.disable_warnings()
# from requests.packages.urllib3.exceptions import InsecureRequestWarning
from bs4 import BeautifulSoup
driver = webdriver.Chrome(executable_path='../pc/chromedriver.exe')
#信息保存
list_URL_1=[]
#NBA的所有队的信息
list_URL_2=[]
list_NMAE_2=[]
#数据爬取
if __name__ == '__main__':
name_FILE='../搜狐体育新闻NBA/File/'
# 创建信息文件夹
if not os.path.exists(name_FILE):
os.mkdir(name_FILE)
url='https://sports.sohu.com/s/nba?spm=smpc.fb-sports-home.top-subnav.15.1606024293835fpr1dOb'
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/79.0.3945.117 Safari/537.36'
}
page_text = requests.get(url=url, headers=headers).text
tree_1 = etree.HTML(page_text)
#首页主要信息
list1=tree_1.xpath('//div[@class="sports-head-line"]/ul/li')
for li in list1:
url=li.xpath('./a/@href')[0]
name=li.xpath('./a/text()')[0]
print(url,name)
# 主要的url
list_URL_1.append(url)
#删除https://m.sohu.com/subject/321765 的信息
list_URL_1.pop(1)
print(list_URL_1)
print(len(list_URL_1))
#//*[@id="mp-editor"]
for url in list_URL_1:
#爬取文本信息
page_text = requests.get(url=url, headers=headers).text
tree = etree.HTML(page_text)
t=tree.xpath('//*[@id="mp-editor"]/p//text()')
print(t)
file_n=t[0]
#删除后两行的'返回搜狐,查看更多'和 '责任编辑:'的信息
t.pop(-1)
t.pop(-1)
t='\n'.join(t)+'\n'+'\n'
#print(t)
#创建首页主要信息文件夹
name_file = name_FILE + '首页主要信息/'
if not os.path.exists(name_file):
os.mkdir(name_file)
not_File_name = ['/', "*", '"', '?', '<', '>', ':', '|']
# 创建首页主要信息的详情页文件夹
for x in not_File_name:
file_n = "".join(file_n[4:].split(x))
name_file_1 = name_file + file_n
if not os.path.exists(name_file_1):
os.mkdir(name_file_1)
#存储文本信息
with open(name_file_1+'/'+file_n[4:]+'.txt', 'w', encoding='utf-8') as fp:
fp.write(t)
print("文件保存成功")
#解析要爬取图片
img_src= tree.xpath('//*[@id="mp-editor"]/p/img/@src')
print('图片的url',img_src)
# 创建图片存放的文件夹
name_img=name_file_1+'/img/'
if not os.path.exists(name_img):
os.mkdir(name_img)
i=0
for li_url_img in img_src:
i = i + 1
#解析图片内容
page_text = requests.get(url=li_url_img, headers=headers, verify=False).content
# 生成图片名称
img_name = str(i)+'.jpg'
imgPath = name_img + img_name
#将图片存储到文件夹
with open(imgPath, 'wb') as fp:
fp.write(page_text)
print(img_name, "下载完成!!!!")
#首页所有的队的信息
# 创建首页主要信息文件夹
name_file2 = name_FILE + 'NBA所有球队的信息/'
if not os.path.exists(name_file2):
os.mkdir(name_file2)
list2=tree_1.xpath('//div[@class="nav-list"]/ul/li')
for li in list2:
li_url2='https://sports.sohu.com'+ li.xpath('./a/@href')[0]
li_name2=li.xpath('./a/text()')[0]
#输出队名和url
print(li_url2,li_name2)
#列表存放所有队的url和name
list_URL_2.append(li_url2)
list_NMAE_2.append(li_name2)
print(list_URL_2)
"""
由于NBA的队有三十个队左右,
所有这里不爬取那么多信息,
只爬取部分队的信息
"""
#遍历爬取各个队的信息(1个队)
for i in range(1):
#要爬取的队的url和name
print(list_URL_2[i],list_NMAE_2[i])
#创建每个队的文件夹
name_file2_1 = name_file2 + list_NMAE_2[i]+'/'
if not os.path.exists(name_file2_1):
os.mkdir(name_file2_1)
# driver = webdriver.Chrome(executable_path='pc/chromedriver.exe')
driver.get(url=list_URL_2[i])
#爬取四个界面的信息 20* 4
for i in range(1):
sleep(3)
target = driver.find_element_by_xpath(f'//*[@id="feed-wrapper"]/div[2]')
driver.execute_script("arguments[0].scrollIntoView();", target)
sleep(3)
# 解析球队的每个队的详情页的信息
page_text = driver.page_source
# print(page_text)
tree = etree.HTML(page_text)
a2 = tree.xpath('//div[@class="nba-feed clear theme_nbablue_border-color"]/div[2]/div[2]/div[1]/div')
print(len(a2))
#队里面的所有信息的url和name
#1.文本+图片
list_URL_2_1 = []
list_NAME_2_1 = []
# 2.全是图片
list_URL_2_2= []
list_NAME_2_2= []
#遍历爬取每条信息的数据
for li in a2:
li_url = li.xpath('./div[1]/h3/a/@href | ./div[2]/h3/a/@href ')[0]
li_name = li.xpath('./div[1]/h3/a/text()| ./div[2]/h3/a/text()')[0]
print(li_name, li_url)
"""
这里有一部分是文本+图片组成的新闻
还有一部分全是图片组成的信息
"""
#1.文本+图片组成的信息
if '组图'not in li_name:
# 所有队的详细信息的url
list_URL_2_1.append(li_url)
list_NAME_2_1.append(li_name)
page_text = requests.get(url=li_url, headers=headers).text
# 爬取文本信息
tree = etree.HTML(page_text)
#//*[@id="mp-editor"]
t2=tree.xpath('//*[@id="mp-editor"]/p//text()')
#输出文本的列表信息
print(t2)
#获取文本信息的标题,如何去除里面?
file_n=li_name
print(file_n)
if '?' in file_n:
file_n = ' '.join(file_n.split("?"))
print(file_n)
#删除后两行的'返回搜狐,查看更多'和 '责任编辑:'的信息
t2.pop(-1)
t2.pop(-1)
t2='\n'.join(t2)+'\n'+'\n'
print(t2)
# 创建一条信息的详情页文件夹
name_file2_1_1 = name_file2_1 + file_n[4:]+'/'
if not os.path.exists(name_file2_1_1):
os.mkdir(name_file2_1_1)
#存储文本信息
with open(name_file2_1_1+file_n[4:]+'.txt', 'w', encoding='utf-8') as fp:
fp.write(t2)
print(file_n[4:],"文件保存成功")
#解析要爬取图片
img_src= tree.xpath('//*[@id="mp-editor"]/p/img/@src')
print('图片的url',img_src)
# 创建图片存放的文件夹
name_img=name_file2_1_1+'/img/'
if not os.path.exists(name_img):
os.mkdir(name_img)
i=0
for li_url_img in img_src:
i = i + 1
#解析图片内容
page_text = requests.get(url=li_url_img, headers=headers, verify=False).content
# 生成图片名称
img_name = str(i)+'.jpg'
imgPath = name_img + img_name
#将图片存储到文件夹
with open(imgPath, 'wb') as fp:
fp.write(page_text)
print(img_name, "下载完成!!!!")
# 2.全是图片组成的信息
else :
# 所有队的详细信息的url
list_URL_2_2.append(li_url)
list_NAME_2_2.append(li_name)
page_text = requests.get(url=li_url, headers=headers,verify=False).text
# 爬取文本信息
tree = etree.HTML(page_text)
img_src = tree.xpath('//div[@class="picture hid"]/img/@src')
# 获取文本信息的标题,如何去除里面?
file_n = li_name
print(file_n)
if '?' in file_n:
file_n = ' '.join(file_n.split("?"))
print(file_n)
# 创建一条信息的详情页文件夹
name_file2_1_2 = name_file2_1 + file_n[4:] + '/'
if not os.path.exists(name_file2_1_2):
os.mkdir(name_file2_1_2)
# 创建图片存放的文件夹
name_img = name_file2_1_2 + '/img/'
if not os.path.exists(name_img):
os.mkdir(name_img)
i = 0
for li_url_img in img_src:
#这里获取的图片url不完整,需要拼接一下
li_url_img='https:'+li_url_img
i = i + 1
# 解析图片内容
# requests.packages.urllib3.disable_warnings(InsecureRequestWarning)
page_text = requests.get(url=li_url_img, headers=headers, verify=False).content
# 生成图片名称
img_name = str(i) + '.jpg'
imgPath = name_img + img_name
# 将图片存储到文件夹
with open(imgPath, 'wb') as fp:
fp.write(page_text)
print(img_name, "下载完成!!!!")
二、数据清洗
将上面的搜狐体育新闻的NBA的所有新闻信息进行爬取的数据进行清洗处理,为之后的数据分析做铺垫准备,当然了,如果数据处理不干净,可能会对后面的胡数据分析造成一定的影响。下面将对获取的数据进行数据格式统一处理、信息标题特殊字符处理。数据存储之前将数据清洗,也可以在存储之后将数据清洗,这里在数据存储之前进行清洗。
1.数据格式统一处理
由于NBA的球队比较多,大概有二十多个,这里就每个球队的信息进行爬取信息处理放到同一个对的文件夹中,然后将所有队信息放在一起。然而每个队有多条信息,每条信息里面包含了文本信息还有图片信息,所以需要将一条信息里面的文本单独处理存放在txt里面,图片统一放在文件夹中,然后再将该条信息的文本信息和文件夹中图片信息放在对应的队标题的文件夹中。
- 创建文件夹存放信息
name_FILE='../搜狐体育新闻NBA/File/'
# 创建信息文件夹
if not os.path.exists(name_FILE):
os.mkdir(name_FILE)
#首页所有的队的信息
name_file2 = name_FILE + 'NBA所有球队的信息/'
if not os.path.exists(name_file2):
os.mkdir(name_file2)
#创建首页主要信息文件夹
name_file = name_FILE + '首页主要信息/'
if not os.path.exists(name_file):
os.mkdir(name_file)
- 将文本信息存放在txt中,将图片信息存放在文件夹中,以jpg格式处理
#存储文本信息
with open(name_file_1+'/'+file_n[4:]+'.txt', 'w', encoding='utf-8') as fp:
fp.write(t)
print("文件保存成功")
#存储图片信息
# 生成图片名称
img_name = str(i)+'.jpg'
imgPath = name_img + img_name
#将图片存储到文件夹
with open(imgPath, 'wb') as fp:
fp.write(page_text)
print(img_name, "下载完成!!!!")
2.信息标题特殊字符处理
在获取一条信息的标题时,需要将该条标题来作为存放信息的文件夹的名称。如果文件标题出现一些特殊字符,会造成错误,因为文件夹的名称中不能出现一些特殊字符,例如:'/', "*", '"', '?', '<', '>', ':', '|'。因而在创建文件夹的时候,需要提前将标题提取处理,将里面特殊字符切割处理掉。
#文件夹创建不允许存在字符
not_File_name = ['/', "*", '"', '?', '<', '>', ':', '|']
#将文件名字去掉文件夹名称不能存在的一些字符
for x in not_File_name:
file_n = "".join(file_n[4:].split(x))
# 创建首页主要信息的详情页文件夹
name_file_1 = name_file + file_n
if not os.path.exists(name_file_1):
os.mkdir(name_file_1)
三、数据分析以及可视化
1.什么是pandas和可视化
pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。
可视化就是让一些数据为了更好的展现出来,让人可以以简单的肉眼方式直接看到结果,更直观、简洁、丰富以图像的形式表达出。这里就需要第三方的库matplotlib,matplotlib是一款命令式、较底层、可定制性强、图表资源丰富、简单易用、出版质量级别的python 2D绘图库。matplotlib可用于python脚本、python shell、jupyter notebook、web等。
柱状图、点线图、直方图、饼图、堆积柱状图、填充直方图、直方散点图、面积图、趋势图、箱型图、小提琴图、数据地图、雷达图、漏斗图、嵌套饼图、各类三维图等等,不胜枚举都可以用matplotlib绘画出。
2.数据文件的读取和写入
- 文件读取
data=pd.read_文件类型('读取文件路径')
示例:读取csv文件
python #导入模块 import pandas as pd #读取文件 data=pd.read_csv('新建文本文档.csv')
- 文件写入
data.to_文件类型('保存文件路径')
示例:写入csv文件#导入模块 import pandas as pd #写入文件 data.to_csv('新建文本文档a.csv')
3.数据分析
接下来我们对csv的数据进行数据分析以及可视化处理。将本地的csv()来做处理部分数据如下:

3.1读取文件
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
#读取文件
data = pd.read_csv(r'2019_nCoV_data.csv',encoding='utf-8',engine='python')
# print(data)
3.2对在01/22/2020 12:00:00的时间的中国境内有感染者和无感染者的省或者地区进行数据处理和可视化
- 数据处理
#对数据进行简单处理
a=data.loc[:,['Date','Province/State','Country','Confirmed','Deaths','Recovered']]
#获取是在01/22/2020 12:00:00的时间的中国境内有感染者的省或者地区
b1=a[(a.Country=='China') & (a.Date=='01/22/2020 12:00:00') & (a.Confirmed>0)]
print(b1)
#获取有感染的省或者地区的数据量
n1=np.array(b1.iloc[:,0:1]).size
print(n1)
#获取是在01/22/2020 12:00:00的时间的中国境内没有感染者的省或者地区
b2=a[(a.Country=='China') & (a.Date=='01/22/2020 12:00:00') & (a.Confirmed==0.0)]
print(b2)
#获取没有感染的省或者地区的数据量
n2=np.array(b2.iloc[:,0:1]).size
print(n2)
#饼状图
# laberl是标签名称
labels = '有感染者的地区或者省', '没有感染者的地区或者省'
# sizes表示每个标签的个数
sizes = [n1,n2]
fig1, ax1 = plt.subplots()
# autopct显示比例
ax1.pie(sizes, autopct='%1.1f%%', labels=labels)
# 解决汉字乱码问题 ,使用指定的汉字字体类型(此处为黑体)
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
#绘制标题
plt.title('01/22/2020 12:00:00中国地区的有无感染者的地区或者省的占比')
# 将图形显示出来
plt.show()
- 饼状图可视化
![在这里插入图片描述]()
说明:从这个饼状图可以看出在2020年一月二号12:00:00时间,中国有四分之三的省或者地区感染了病毒,仅仅只有四分之一的省或者地区情况较好,没有人感染。由此可以该病毒在中国境内传播之迅速,让让人防不胜防。
3.3对在01/22/2020 12:00:00的时间的中国境内有感染者的各个省或者地区进行数据处理和可视化
- 数据处理
#获取省和地区
Province=b1['Province/State']
#获取感染者的数量
Confirmed=b1['Confirmed']
# 首先将pandas读取的数据转化为array在转list
Province_list = np.array(Province).tolist()
print(Province_list)
Confirmed_list = np.array(Confirmed).tolist()
print(Confirmed_list)
#######01/22/2020 12:00:00中国的有感染者的各个省和地区的数量占比信息
#饼状图
# # laberl是标签名称
labels =Province_list
# # sizes表示每个标签的个数
sizes =Confirmed_list
fig1, ax1 = plt.subplots()
explode=[]
for i in range(n1):
explode.append(0.5)
# autopct显示比例
ax1.pie(sizes,explode=explode, autopct='%1.1f%%', labels=labels)
plt.title('01/22/2020 12:00:00中国的有感染者的各个省和地区的数量占比信息')#绘制标题
# 将图形显示出来
plt.show()
- 可视化
![在这里插入图片描述]()
说明:从这个饼状图可以看出在2020年一月二号12:00:00时间,中国有感染了病毒的省或者地区中湖北省是全国的重灾区。仅仅是一个湖北省就占了全国的八成的感染者,其他的各个地区有少量的感染者。解决湖北地区的感染者是非常重要的,由此需要其他轻灾区大量支援湖北地区摆脱病魔。
3.4对在01/22/2020 12:00:00到02/04/2020 12:00:00的14天时间的全部地区的感染者、死亡人数、治愈人数和sno的数量进行数据处理和可视化
-
数据处理
# 解决汉字乱码问题 ,使用指定的汉字字体类型(此处为黑体) matplotlib.rcParams['font.sans-serif'] = ['SimHei'] #布局 plt.rcParams['figure.figsize']=(8,5) a=data.groupby(['Date']).sum().plot(kind='bar') print(a) #将x轴的对应时间旋转60度 plt.xticks(rotation=60) #x轴和y轴说明以及设置 plt.ylabel('人数 ', fontsize=15) plt.xlabel('时间', fontsize=15) plt.show()
说明:从这个直方图可以看出在2020年一月二十二号到二月四号的时间里,感染者数量一直在增加。
3.5对在14天时间的中国地区和非中国地区的感染者、死亡人数、治愈人数的数量进行数据处理和可视化
- 数据处理
# 解决汉字乱码问题 ,使用指定的汉字字体类型(此处为黑体)
matplotlib.rcParams['font.sans-serif'] = ['SimHei']
#布局
plt.rcParams['figure.figsize']=(10,10)
a=data.groupby([data.Country=='Mainland China']).sum().plot(kind='bar')
print(a)
#让x轴旋转0度
plt.xticks(rotation=0)
plt.ylabel('人数 ', fontsize=15)
plt.xlabel('地区', fontsize=15)
#显示图像
plt.show()
- 可视化
![在这里插入图片描述]()
说明:从这个直方图可以看出在2020年一月二十二号到二月四号的时间里,中国地区感染者数量远远比非中国地区的感染者数量多,中国地区灾区较为严重很多。
基本上需要的数据都已经获取。数据分析可以分析多种情况下的信息表现,这里就简单分析几个数据信息,当然了你也可以继续分析其他情况下的数据情况,这里就不过多介绍。




浙公网安备 33010602011771号