Loading... # 快速查看不同省市疫情现状 这篇将开始用python做第一张可视化图表啦! 首先依然是准备数据 ``` 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`的数据,以确诊字段做排序,代码如下: ``` python # 提取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种写法: ``` python # 使用inplace参数 data_0201.sort_values(by='确诊', ascending=False, inplace = True) # 不使用inplace参数 data_0201 = data_0201.sort_values(by='确诊', ascending=False) ``` *** ## 绘制柱状图 这里可以通过柱状图来表达结论,使用`pandas.DataFrame.plot()`完成制图,这是pandas的画图功能,代码如下: ``` python # 绘制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`的设置,作为参考  *** 继续通过此方法输出一些其他图表: **多系列柱状图** ``` python # 绘制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省市') ```  **多系列条形图** ``` python # 绘制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语句构建函数** ``` python # 构建函数快速出图 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) ```  通过构建函数,后面只需输入变量参数,就可以更快的输出!<hr class="content-copyright" style="margin-top:50px" /><blockquote class="content-copyright" style="font-style:normal"><p class="content-copyright">版权属于:Erek</p><p class="content-copyright">本文链接:<a class="content-copyright" href="https://erek.top/archives/36.html">https://erek.top/archives/36.html</a></p><p class="content-copyright">转载时须注明出处及本声明</p></blockquote> 最后修改:2021 年 01 月 17 日 02 : 58 PM © 允许规范转载 赞赏 如果觉得我的文章对你有用,请随意赞赏 ×Close 赞赏作者 扫一扫支付 支付宝支付 微信支付