快速查看不同省市疫情现状
这篇将开始用python做第一张可视化图表啦!
首先依然是准备数据
# 读取数据
import pandas as pd
import warnings
warnings.filterwarnings('ignore')
# 设置不弹出警告
df = pd.read_excel('*/*/data_ncov.xlsx')
#记得修改自己的文件路径
# 时间序列转换
df['date'] = df['date'].astype('str') # 先将字段转化为字符串
df['date'] = pd.to_datetime(df['date']) # 再进行时间序列转换
如何做数据排序?
首先提取2020-2-1
的数据,以确诊字段做排序,代码如下:
# 提取2020-2-1日的数据
data_0201 = df[df['date'] == '2020-2-1']
# 排序
data_0201.sort_values(by='确诊', ascending=False, inplace = True)
data_0201.head()
输出结果如下:
区域编码 | 省市 | 疑似 | 确诊 | 死亡 | date |
---|---|---|---|---|---|
420000 | 湖北省 | 14872 | 9074 | 294 | 2020-02-01 |
330000 | 浙江省 | 207 | 661 | 0 | 2020-02-01 |
440000 | 广东省 | 157 | 604 | 0 | 2020-02-01 |
410000 | 河南省 | 754 | 493 | 2 | 2020-02-01 |
430000 | 湖南省 | 434 | 463 | 0 | 2020-02-01 |
知识点pandas.DataFrame.sort_values()
,用于排序,这几个参数需要大家学习一下
by = '确诊'
,设置排序字段
ascending = False
,设置排序方向,True为从小到大排序(默认)、False
为从大到小排序
inplace = True
,设置是否代替原始数据,一般有2种写法:
# 使用inplace参数
data_0201.sort_values(by='确诊', ascending=False, inplace = True)
# 不使用inplace参数
data_0201 = data_0201.sort_values(by='确诊', ascending=False)
绘制柱状图
这里可以通过柱状图来表达结论,使用pandas.DataFrame.plot()
完成制图,这是pandas的画图功能,代码如下:
# 绘制2020-2-1日全国确诊病例top10的省市(非湖北省) - 柱状图
data_0201.iloc[1:11].plot(x = '省市', y ='确诊',
kind ='bar', figsize = (15,5),
color ='r', alpha = 0.8,grid = True,
rot = 45, title = '湖北省外2020.2.1日确诊病例top10省市')
输出结果如下:
知识点
df.iloc[起始索引:结束索引]
,另一个行索引的方法
- 这里由于湖北省的确证病例太多了,为了可以更好的查看之后的top10省份,我们需要筛选第2-11条数据
- python中第一个索引是0并不是1,即
data_0201.iloc[0]
是输出湖北省数据,data_0201.iloc[10]
则是输出第11名的数据! df.iloc[起始索引:结束索引]
是一个前闭后开的区间,所以这里如果需要筛选第2-11条数据,就应该是data_0201.iloc[1:11]
。
pandas.DataFrame.plot()
,用于绘制图表
- x = '省市',设置横坐标
- y = '确诊',设置纵坐标,如果是多系列柱状图,则用列表表示,例如y = ['确诊', '疑似'],在这种情况下,后续不需要设置*color参数了
- kind = 'bar',设置图表类型,大家先掌握设置柱状图的方法
- figsize = (15,5),设置图表大小
- color = 'r', alpha = 0.8,设置图表颜色及透明度
- grid=True,设置是否显示网格线
- rot = 45,设置横坐标标签旋转角度
- title = '...',设置图表标题
下面是关于color
的设置,作为参考
继续通过此方法输出一些其他图表:
多系列柱状图
# 绘制2020-2-1日全国确诊与疑似病例top10的省市(非湖北省) - 多系列柱状图
# 这里不需要设置color参数了
data_0201.iloc[1:11].plot(x = '省市', y = ['确诊', '疑似'],
kind ='bar', figsize = (15,5), grid = True,
rot = 45, title = '湖北省外2020.2.1日确诊与疑似病例top10省市')
多系列条形图
# 绘制2020-2-1日全国确诊与疑似病例top10的省市(非湖北省) - 多系列条形图
# 这里不需要设置color参数了
data_0201.iloc[1:11].plot(x = '省市', y = ['确诊', '疑似'],
kind = 'barh', figsize = (15,5), grid = True,
title = '湖北省外2020.2.1日确诊与疑似病例top10省市')
通过构建函数,快速出图
我们来梳理一下目前的作图逻辑
- 提取某一日的数据
- 数据排序
- 绘制图表
按照这个逻辑,我们在第2点中的第一张图的需求点为:2020-2-1
,确诊
,top10
,如果这3个需求能够转化为3个参数,我们就能够通过调节参数来生成不同需求的图表!
def语句构建函数
# 构建函数快速出图
def fig1(time, tp, topn):
# 数据提取
datai = df[df['date']== time]
# 数据排序
datai.sort_values(by = tp, ascending=False, inplace = True)
# 绘制柱状图
datai.iloc[1:topn+1].plot(x = '省市', y = tp,
kind ='bar', figsize = (15,5),
color ='r', alpha = 0.8,grid = True,
rot = 45,
title = '湖北省外%s日%s病例最多的%i省市' % (time, tp, topn))
# 调用函数,设置参数出图
fig1('20200202', '疑似', 15)
通过构建函数,后面只需输入变量参数,就可以更快的输出!
版权属于:Erek
本文链接:https://erek.top/archives/36.html
转载时须注明出处及本声明