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

一、开发背景

你好,我是 @马哥python说 ,一名10年程序猿!

这是我用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):

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


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


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

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

  • 2
    点赞
  • 18
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 5
    评论
### 回答1: 动态条形图是一种可以实时展示数据变化的可视化图表。在练习数据中,通常会使用CSV格式来存储数据。 CSV格式是一种简单易懂的文本文件格式,它以逗号为分隔符来区分不同的数据。因此,CSV文件中的每一行代表一个记录,每一列则代表一个数据项。 在动态条形图中,通常将CSV文件中的时间列作为X轴,将其它数据列作为Y轴,以此绘制出随时间变化的柱状图。当新数据被添加到CSV文件中时,动态条形图也会实时更新,从而展示出最新的数据变化。 动态条形图在很多场景下都有广泛的应用,例如股票市场、天气预报、疫情数据等等。通过使用动态条形图,我们可以方便地从数据中获得一些有意义的信息,以便更好地作出判断和决策。 ### 回答2: 动态条形图是一种非常生动、易于理解的数据呈现方式,其能够让数据呈现得更具有时效性和互动性,更能够深入人心。在练习时,若使用CSV格式的数据,通常应该保证数据的准确性和完整性,并且还需要具有一定的规律性和可读性。 CSV格式(Comma Separated Values,逗号分隔值)是一种电子表格常用的数据存储格式,数据以文本文件形式存储,行之间以换行符为分隔符,每行由逗号(或其他符号)分隔各字段。这种格式的数据可以在各种操作系统平台上进行交换和处理,且具有简洁、易读、易理解的优点。 对于动态条形图的练习数据,可以将其按照时间段分类,将每个时间段的数据保存在一个CSV文件中,便于进行后续处理和展示。有关数据字段的描述,可以在文件开头添加注释或者单独保存在一个文档中。 在进行动态条形图的数据呈现时,需要根据实际需要,选择适合的软件工具实现。例如,使用可视化工具如Tableau、Google Charts、HighCharts等,可以帮助进行数据可视化呈现,并提供各种多彩的视觉效果和互动功能,不仅可以更好地展示数据,还可以方便地与观众进行交流和讨论。 综上所述,动态条形图_练习数据_csv格式的实现需要注意数据的规范性、准确性和完整性。只有保证数据质量,才能够更好地进行数据可视化的呈现,以达到更好的展示效果和交流效果。 ### 回答3: 动态条形图是一种数据可视化工具,可以直观地展示数据随着时间的变化情况。练习数据可以是任何类型的数据,常见的包括股票价格、销售额、人口数量等。 动态条形图通常使用CSV格式的数据文件,CSV(Comma Separated Values)格式是一种逗号分隔的文本文件格式,以逗号分隔每个数据项。CSV格式的数据文件可以很容易地导入到数据可视化工具中,如Excel、Tableau等,以生成动态条形图。 生成动态条形图需要将时间作为X轴,将数据指标作为Y轴,可以使用不同颜色、样式的条形来表示不同数据指标,通过动态展示条形的高度来展示数据的变化趋势。同时,还可以添加轨迹线、注释等元素来增强数据展示的效果,提升可视化效果的质量。 动态条形图作为一种高效的数据可视化工具,广泛应用于各行业的数据分析、决策以及展示中。对于数据分析师和决策者来说,通过动态条形图可以更加直观地了解数据的变化趋势和规律,从而做出更加准确、有针对性的决策。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

马哥python说

打赏多少不重要,表达认可最重要

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值