城市设计/数据分析/技术分享/摄影记录

0%

新冠病毒疫情分析学习03-快速查看不同省市疫情现状

快速查看不同省市疫情现状

这篇将开始用python做第一张可视化图表啦!

首先依然是准备数据

1
2
3
4
5
6
7
8
9
10
11
12
# 读取数据
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的数据,以确诊字段做排序,代码如下:

1
2
3
4
5
6
# 提取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种写法:

1
2
3
4
5
# 使用inplace参数
data_0201.sort_values(by='确诊', ascending=False, inplace = True)

# 不使用inplace参数
data_0201 = data_0201.sort_values(by='确诊', ascending=False)

绘制柱状图

这里可以通过柱状图来表达结论,使用pandas.DataFrame.plot()完成制图,这是pandas的画图功能,代码如下:

1
2
3
4
5
6

# 绘制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的设置,作为参考


继续通过此方法输出一些其他图表:
多系列柱状图

1
2
3
4
5
# 绘制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省市')

多系列条形图

1
2
3
4
5
# 绘制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/2020/003-xg/
  • 版权声明: 本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!