【资料视觉化】COVID新冠疫苗施打一览 Seaborn

今晚来点轻松的。资料视觉化,复习一下DataFrame、seaborn
引用资料来源:country_vaccination.csv Kaggle Dataset
该资料集记录各国施打COVID疫苗的逐日报表,是从Our World in Data网站收集整理出来的。说明:
Data is collected daily from Our World in Data GitHub repository for covid-19, merged and uploaded. Country level vaccination data is gathered and assembled in one single file. Then, this data file is merged with locations data file to include vaccination sources information.
https://ithelp.ithome.com.tw/upload/images/20211012/20111373B5vmAGwkMW.jpg

Step 1. 载入资料集:使用pandas DataFrame
本文内相关的栏位是country、total_vaccinations、daily_vaccinations。
Step 2. 依国家别分群、找出国家别是”Taiwan”者( 202笔,资料日截至2021-10-09)
Step 3. 统计 daily_vaccinations 的min max mean median
Step 4. barplpot 画 每日接种人数 seaborn
Step 5. lineplot 画 累计人数逐日图
成果图:
https://ithelp.ithome.com.tw/upload/images/20211012/20111373Kqs3VMq5ac.png
https://ithelp.ithome.com.tw/upload/images/20211012/20111373TUY6SJ8Qpj.png
Source code

# vaccine_sn02.py
import numpy as np 
import pandas as pd 
import seaborn as sn
from matplotlib import rcParams
from matplotlib.ticker import MultipleLocator
import matplotlib.pyplot as plt
import matplotlib.ticker as ticker


''' 以dataframe 读取csv '''
print('以dataframe 读取 csv')
df = pd.read_csv('country_vaccinations.csv')
# 依国家别分群
df = df.groupby('country')
# 找出国家别是”Taiwan”者 (资料日截至2021-10-09)
dfT = df.get_group('Taiwan')
print(f'符合的记录数目: {dfT.count}')
# 只取四栏位
dfTwn = dfT[['country','date','total_vaccinations','daily_vaccinations']]
print(dfTwn.head())
# 统计 daily_vaccinations 的 min max mean median
stat1 = dfTwn['daily_vaccinations'].aggregate(['min', 'max', 'mean', 'median'])
stat1 = stat1.astype(int)
print(stat1)
# total_vaccinations 累计接种人数之最大值
print(f'total vaccinations: Taiwan\n{int(dfTwn["total_vaccinations"].max())}')

# barplpot 画 每日接种人数 seaborn 
rcParams['figure.figsize'] = 15,8
xmajorLocator = MultipleLocator(15)
ax = sn.barplot(x=dfTwn['date'],y=dfTwn['daily_vaccinations'],data= dfTwn)
ax.set_xticklabels(ax.get_xticklabels(),rotation = 45,size=12)
ax.xaxis.set_major_locator(xmajorLocator)
ax.set_title('Daily vaccination ( Taiwan )')
# 存档
plt.savefig('Vaccine_TaiwanDaily.png')
plt.figure()

# lineplot 画 累计人数逐日图
xmajorLocator = MultipleLocator(15)
ax2 = sn.lineplot(data= dfTwn,x=dfTwn['date'],y=dfTwn['total_vaccinations'])
plt.xticks(rotation=45,size=12)
ax2.xaxis.set_major_locator(xmajorLocator)
ax2.set_title('Total vaccination ( Taiwan )')
plt.savefig('Vaccine_TaiwanTotal.png')

https://ithelp.ithome.com.tw/upload/images/20211012/20111373ONBLA0RuQP.jpg

附带题外:Our World in Data 网页还可以动态的以地图显示,随着时间的进行,各地区接种人数的增长动态。
https://ithelp.ithome.com.tw/upload/images/20211012/20111373bV331dOd6E.jpg


<<:  自动化 End-End 测试 Nightwatch.js 简易化 selector

>>:  使用 Vaadin Directory 组件显示Google地图 - day27

[DAY-24] 突破生产障碍 高效产出

你是否可以升迁 看的是你替组织带来贡献的可能性 超出期待的方法 就是朝大方向前进(BIG PICT...

【没钱买ps,PyQt自己写】Day 10 - 以 QFileDialog 读取系统的档案、资料夹

看完这篇文章你会得到的成果图 前言 我们接下来的讨论,会基於读者已经先读过我 day5 文章 的架构...

Day10 HTML 切版介绍(上)

切版是前端工程师必须要具备的技能,需要把设计师针对使用者需求所完成的设计稿,透过程序让它在网页中实际...

网路的小技巧-2

//兴趣记录一下~希望退休以後可以回味,各位别嫌弃,感谢各位!! //// //VLAN重要性,实作...

Day06【JS】「...」展开运算符 & 其余运算符

「展开运算符」与「其余运算符」, 两者的表示方式都是 ..., 以下分别说明。 展开运算符 展开运算...