一、开发背景

你好,我是 @马哥python说 。

这是我用Python开发的全球疫情动态条形图,演示效果:

【python可视化】用Python开发全球疫情动态条形图

二、讲解代码

2.1 获取数据

疫情数据从github手工下载的,地址是:

github截图:

​数据下载后,查看数据格式,字段包含:

大洲中文、大洲英文、国家中文、国家英文、省份中文、省份英文、省份邮编、省份确诊、省份疑似、省份治愈、省份死亡、城市中文、城市英文、城市邮编、城市确诊、城市疑似、城市治愈、城市死亡、更新时间。

部分数据截图:

​疫情数据

注:由于网络原因,很多小伙伴打不开github,我已经下载好csv数据,公众号「老男孩的平凡之路」后台回复「疫情数据」即可获取最新csv数据!

2.2 数据清洗

csv下载好之后,开始清洗数据。

读取csv文件(只读取 国家名称、确诊数量、更新时间 这3个字段):

# 读取数据
data_file = 'DXYArea_20221003.csv'
df = pd.read_csv(data_file, usecols=['countryName', 'province_confirmedCount', 'updateTime'])

由于本次只分析2022年数据,所以过滤出2022的数据:

# 过滤出2022年的数据
df = df.loc[df.updateTime.astype(str).str.startswith('2022')]

由于中国数据和其他国家数据不同,中国数据是分省份统计的,所以先汇总,保证和其他国家数据格式一致:

# 由于中国数据是分省统计的,所以先把中国数据汇总一下
# 分组求和
df = df.groupby(['countryName', 'updateTime']).sum()
# 重置索引
df.reset_index(inplace=True)

转换日期格式,并将时间去掉只保留日期:

# 转换成日期类型
df['updateTime'] = pd.to_datetime(df['updateTime'])
# 把时间去掉,只保留日期
df['updateTime'] = df['updateTime'].apply(lambda x: x.strftime('%Y-%m-%d'))

由于存在每天多次统计的情况,所以只保留最新的一条数据:

df2 = df.groupby(['countryName', 'updateTime']).apply(lambda t: t[t.province_confirmedCount == t.province_confirmedCount.max()])
df2.drop_duplicates(inplace=True)  # 删除重复值
df2.reset_index(inplace=True,drop=True) #重置索引

下面,开始行列转换(很关键!这是bar_chart_race库要求的输入格式)

转换代码:

# 行列转换
df3 = df2.set_index(['updateTime', 'countryName'])['province_confirmedCount'].unstack()
df3.columns.name = None
# 重置索引
df3.reset_index(inplace=True)

转换前,国家为行:

​转换后,国家为列:

​下面就可以开始开发可视化代码了。

2.3 可视化开发

画图之前,再进行一次数据清洗:

# 数据清洗
df3.fillna(0, inplace=True)  # 填充空值
df3.set_index('updateTime', inplace=True)  # 设置索引

核心代码,可视化开发条形图:

import bar_chart_race as bcr# 生成结果文件
bcr.bar_chart_race(df=df3,  # 输入数据filename='covid19_10.mp4',  # 输出文件名n_bars=30,  # 柱子的个数title='2022全世界TOP30疫情确诊数量国家动态排名'  # 标题)

代码中,我设置了4个参数(输入数据、输出文件名、条形图条数、标题),当然,bar_chart_race还支持更多参数,比如图片大小、标题大小、柱形大小、排序规则等等,详细请见官网介绍:Bar Chart Race

最后效果(数据截止到2022.10.02):

疫情动态条形图(截至20221002)


首发公众号:【动态条形图bar_chart_race】用Python开发全球疫情排名动态条形图


我是马哥,全网累计粉丝上万,欢迎一起交流python技术。

各平台搜索“马哥python说”:知乎、哔哩哔哩、小红书、新浪微博。

【疫情动态条形图】用Python开发全球疫情排名动态条形图bar_chart_race相关推荐

  1. 玩转PYthon,用Python绘制全球疫情变化地图(好东西,值得一看~~~)

    用Python绘制全球疫情变化地图 目前全球疫情仍然比较严重,为了能清晰地看到疫情爆发以来至现在全球疫情的变化趋势,我绘制了一张疫情变化地图,完整代码共 230 行,需要的朋友在公众号回复关键字 疫情 ...

  2. python是什么专业学的-Python开发专业学校排名是什么样的

    原标题:Python开发专业学校排名是什么样的 Python是入门快.功能强大.高效灵活的编程语言,学会之后无论是想进入数据分析.人工智能.网站开发.网络安全.集群运维这些领域,还是希望掌握第一门编程 ...

  3. 天秀,17 岁高中生独立开发全球疫情追踪网站后火了!

    来源:新智元 疫情来临,我们该如何做好防护措施,如果觉得不舒服,怎么才能确定自己是否被感染了,如果确诊感染病毒,该采取怎么的治疗方案?如果你是名医护工作者,这些可能都不是问题,但如果是普通人,该从哪里 ...

  4. 服务器可视化_疫情来袭,30分钟学会用python开发部署疫情可视化网站

    2019-nCov疫情实时数据可视化--30分钟python快速版 疫情来袭,宅在家不如学习用python如何开发并部署一个疫情实时追踪可视化页面.页面预览 本文将介绍如何使用python开发网站,「 ...

  5. 17 岁高中生独立开发全球疫情追踪网站火了!

    转自:新智元 疫情来临,我们该如何做好防护措施,如果觉得不舒服,怎么才能确定自己是否被感染了,如果确诊感染病毒,该采取怎么的治疗方案?如果你是名医护工作者,这些可能都不是问题,但如果是普通人,该从哪里 ...

  6. php微信支付参数动态配置,支付,微信开发_微信支付动态如何获取$jsApiParameters参数,支付,微信开发 - phpStudy...

    微信支付动态如何获取$jsApiParameters参数 现在我们在做一个需要动态变换价格的微信支付页面,就是用户购买商品后,跳转到支付页面,但是可以选择几个不同的价格当中一个进行支付. 当跳到这个页 ...

  7. Python实战——全球疫情数据采集, 并做可视化

    前言 大家早好.午好.晚好吖~ 知识点: 爬虫基本流程 requests 发送请求 re 正则表达式 json 结构化数据解析 开发环境: python 3.8: 解释器 pycharm: 代码编辑器 ...

  8. python模型疫情预测_用Python制作实时疫情图

    本文技术点: requests, echarts, pyecharts 最近一周每天早上起来第一件事,就是打开新闻软件看疫情相关的新闻.了解下自己和亲友所在城市的确诊人数,但纯数字还是缺乏一个直观的概 ...

  9. 动态的给python添加进度条_python动态进度条的实现代码

    python动态进度条的实现代码,具体内容如下所示: 有时候我们需要使用print打印工作进度,正常使用print函数会导致刷屏的现象,举个最简单的例子,从1打印到10,每次停顿0.1秒 这样看起来很 ...

最新文章

  1. RDKit | 可视化重要片段
  2. 平均分组 java_java – 按属性分组对象列表,并计算每个对象的对象属性的平均值...
  3. Android多开和虚拟化--Docker概念的详细介绍
  4. hdfs web_ui深入讲解、服务启动日志分析、NN SNN关系
  5. P5404-[CTS2019]重复【KMP,dp】
  6. thinkphp 模板显示display和assign的用法
  7. 找出数组中从未出现的最小正整数java实现
  8. 小说app开发—小说app搭建需要注意什么问题?
  9. Android隐藏状态栏实现沉浸式体验
  10. 坚果云和亿方云该如何选?
  11. Maven项目集成cxf框架发布WebService
  12. 第四回:产品创新性思维方法论
  13. 【史上最强】据说是气死了99名老师的作文
  14. mysql excel 数据处理_将excel的数据进行sql处理
  15. 【PMP】学习笔记 第6章 时间管理
  16. 开发者必看 | DevWeekly 第1期:什么是时间复杂度?
  17. HTML标签重点总结+案例
  18. Macdrive8破解版如何激活
  19. 数据库系统之(函数依赖,码,范式,规范化)
  20. Java生鲜电商平台-优惠券系统的架构设计与源码解析

热门文章

  1. VSCode代码格式化快捷键
  2. SoundHound与本田合作,加速开发AI语音助手
  3. 为了从GitHub上下载点东西,我太难了
  4. Error launching datagrip的if you already have a 64-bit JDK installed,define a JAVA_HOME variable in..
  5. 【外贸干货】开发信模板之售后客诉篇
  6. php读取iso文件,Linux_linux下如何读取使用iso 镜像文件的方法,如果拷贝到本地,可以使用moun - phpStudy...
  7. 用 Python 写了一个电子考勤系统!
  8. linux 硬盘坏道数据复制,linux修复磁盘坏道(本教程完全来自实例、实测,具体参数请根据个人情况修改2021.4.12)...
  9. 数据结构入门:计算算法的平均时间复杂度
  10. TCP协议的RST标志