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

这篇将开始用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湖北省1487290742942020-02-01
330000浙江省20766102020-02-01
440000广东省15760402020-02-01
410000河南省75449322020-02-01
430000湖南省43446302020-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)

通过构建函数,后面只需输入变量参数,就可以更快的输出!

最后修改:2021 年 01 月 17 日 02 : 58 PM
如果觉得我的文章对你有用,请随意赞赏