专栏首页IT大咖说用Python只需要三分钟即可精美地可视化COVID-19数据

用Python只需要三分钟即可精美地可视化COVID-19数据

Matplotlib可能是Python的事实数据可视化库,但它并不总是最漂亮的。在本文中,我们将探讨如何将单调的默认Matplotlib图变成漂亮的数据可视化。我们将探索COVID-19数据,以了解该病毒如何在不同国家传播(我们只是针对数据进行分析不对任何做出评价)。

首先加载数据

我们将使用来Github存储库中的数据,这个存储库每天会自动更新各国数据。我们将根据URL将数据加载到Pandas的数据框中,以便每天自动为我们更新。

# Section 1 - Loading our Libraries
import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.dates import DateFormatter
import matplotlib.ticker as ticker
%matplotlib inline #if you're working in a Jupyter notebook

# Section 2 - Loading and Selecting Data
df = pd.read_csv('https://raw.githubusercontent.com/datasets/covid-19/master/data/countries-aggregated.csv', parse_dates=['Date'])
countries = ['Canada', 'Germany', 'United Kingdom', 'US', 'France', 'China']
df = df[df['Country'].isin(countries)]

# Section 3 - Creating a Summary Column
df['Cases'] = df[['Confirmed', 'Recovered', 'Deaths']].sum(axis=1)
  • 在第一步中,我们加载我们需要使用的库。本文中我们将使用Pandas和Matplotlib。
  • 在第二步中,我们将数据读入数据框df,然后仅选择列表中的countries。选择数据使结果可视化更具可读性。
  • 在第三步中,我们创建一个汇总列,该汇总列汇总了已确认病例,已恢复病例以及因COVID-19而死亡的任何个人的病例总数。

为数据可视化准备我们的数据框

现在我们已经将数据存储在一个数据框中,让我们准备另外两个数据框,这些数据框将我们的数据保存在交叉表中,这将使我们能够更轻松地可视化数据。

# Section 4 - Restructuring our Data
df = df.pivot(index='Date', columns='Country', values='Cases')
countries = list(df.columns)
covid = df.reset_index('Date')
covid.set_index(['Date'], inplace=True)
covid.columns = countries

# Section 5 - Calculating Rates per 100,000
populations = {'Canada':37664517, 'Germany': 83721496 , 'United Kingdom': 67802690 , 'US': 330548815, 'France': 65239883, 'China':1438027228}
percapita = covid.copy()
for country in list(percapita.columns):
    percapita[country] = percapita[country]/populations[country]*100000
  • 在第四步中,我们df对数据框进行数据透视,将案例数作为数据字段在国家/地区之外创建列。这个新的数据框称为covid。然后,我们将数据框的索引设置为日期,并将国家/地区名称分配给列标题。
  • 在第五步中,我们复制数据框covid并将其命名为percapita。我们使用一个字典来存储我们所有国家的人口,然后将每个值除以人口,然后将其乘以100,000,以产生每100,000人中有多少病例。

创建我们的第一个可视化案例

让我们首先创建我们的第一个可视化,它将演示随着时间的推移在不同国家的总病例数:

# Section 6 - Generating Colours and Style
colors = {'Canada':'#045275', 'China':'#089099', 'France':'#7CCBA2', 'Germany':'#FCDE9C', 'US':'#DC3977', 'United Kingdom':'#7C1D6F'}
plt.style.use('fivethirtyeight')

# Section 7 - Creating the Visualization
plot = covid.plot(figsize=(18,18), color=list(colors.values()), linewidth=5, legend=False)
plot.yaxis.set_major_formatter(ticker.StrMethodFormatter('{x:,.0f}'))
plot.grid(color='#d4d4d4')
plot.set_xlabel('Date')
plot.set_ylabel('# of Cases')

# Section 8 - Assigning Colour
for country in list(colors.keys()):
    plot.text(x = covid.index[-1], y = covid[country].max(), color = colors[country], s = country, weight = 'bold')

# Section 9 - Adding Labels
plot.text(x = covid.index[1], y = int(covid.max().max())+45000, s = "COVID-19 在各国中的数据显示", fontsize = 23, weight = 'bold', alpha = .75)
plot.text(x = covid.index[1], y = int(covid.max().max())+15000, s = "For the USA, China, Germany, France, United Kingdom, and Canada\nIncludes Current Cases, Recoveries, and Deaths", fontsize = 16, alpha = .75)
plot.text(x = percapita.index[1], y = -100000                     Source: https://github.com/datasets/covid-19/blob/master/data/countries-aggregated.csv', fontsize = 10)
  • 在第六步中,我们创建了一个字典,其中包含不同国家的十六进制值。将其存储在字典中将使我们稍后可以在for循环中轻松调用它。我们还指定了FiveThirtyEight样式以添加一些常规格式,这些格式将在很大程度上建立。
  • 在第七步中,我们使用Pandas的绘图功能创建了第一个可视化。我们使用colors参数将颜色分配给不同的列。我们还使用该set_major_formatter方法以数千个分隔符设置值的格式。
  • 然后,在第八步中,我们创建一个for循环,为各个国家/地区生成标签文本。该for循环以列表的形式从字典中的键中获取每个国家的名称,并在该列表上进行迭代。它将包含国家/地区名称的文本放在最后covid.index[-1]一天的y值(始终等于该列的最大值)的最后一个x值(→数据框中的最后日期)的右侧。
  • 最后,在第九步中,我们添加了有关图表的标题,副标题和源信息。我们再次使用变量来定位数据,以使图形更新时,这些位置也会动态更新!

这是第一张图表的最终结果:

COVID-19 在各国中的数据显示

创建第二个可视化视图-每100,000人的案例数

为了创建第二个可视化,我们将使用以下代码:

percapitaplot = percapita.plot(figsize=(20,20), color=list(colors.values()), linewidth=5, legend=False)
percapitaplot.grid(color='#d4d4d4')
percapitaplot.set_xlabel('Date')
percapitaplot.set_ylabel('# of Cases per 100,000 People')
for country in list(colors.keys()):
    percapitaplot.text(x = percapita.index[-1], y = percapita[country].max(), color = colors[country], s = country, weight = 'bold')
percapitaplot.text(x = percapita.index[1], y = percapita.max().max()+25, s = "按国家分COVID-19人均病例数", fontsize = 23, weight = 'bold', alpha = .75)
percapitaplot.text(x = percapita.index[1], y = percapita.max().max()+10, s = "中国、美国、德国、法国、英国和加拿大目前的病例、康复和死亡人数", fontsize = 16, alpha = .75)

这里我们主要介绍对第一个图形所做的操作。这说明使用Python设置图表后,更新不同数据集的可视化效果有多么简单!

这是我们得到的可视化效果:

按国家分COVID-19人均病例数

结论:

在本文中,我们学习了如何在Github上使用Matplotlib实现COVID-19数据集生成漂亮的数据可视化。我们可以使用Python的功能来根据当今的数据自动更新图表。

来源:

https://www.toutiao.com/i6814881274621067790/

“IT大咖说”欢迎广大技术人员投稿,投稿邮箱:aliang@itdks.com

来都来了,走啥走,留个言呗~

IT大咖说 | 关于版权

由“IT大咖说(ID:itdakashuo)”原创的文章,转载时请注明作者、出处及微信公众号。投稿、约稿、转载请加微信:ITDKS10(备注:投稿),茉莉小姐姐会及时与您联系!

感谢您对IT大咖说的热心支持!

本文分享自微信公众号 - IT大咖说(itdakashuo),作者:湃绅Python

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2020-05-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • FunData — 电竞大数据系统架构演进

    背景来源:FunData作为电竞数据平台,v1.0 beta版本主要提供由Valve公司出品的顶级MOBA类游戏DOTA2相关数据接口(详情:open.vare...

    IT大咖说
  • “第五届中国国际大数据大会”将聚焦大数据创新应用

    一份简单的外卖,如何在骑手人员调配、天气变化、出菜速度等因素实时变动的情况下,可以及时送到消费者手里?

    IT大咖说
  • 建设大数据平台,从“治理”数据谈起

    本文目录 一、大数据时代还需要数据治理吗? 二、如何面向用户开展大数据治理? 三、面向用户的自服务大数据治理架构 四、总结 一、大数据时代还需要数据治理吗? 数...

    IT大咖说
  • V8带来的JS性能优化

    二、解释型语言:支持动态类型,弱类型,在程序运行的时候才进行编译,而编译前需要确定变量的类型,效率比较低,对不同系统平台有较大的兼容性。

    Cloud-Cloudys
  • 微信小程序开发技巧总结 (一)

    结合自己在平时的开发中遇到的各种问题,和浏览各种问题的解决方案总结出一些自己在日常开发中常用的技巧和知点,希望各位不吝斧正。

    Kindear
  • IT必须拥抱未来:SaaS的好处全揭秘

    当读到此文时,你周围的人也许会为CVE-2015-7457而感到担忧。CVE数字代表的是在常见漏洞与披露(Common Vulnerabilities and ...

    静一
  • C3D Usage Summary

    C3D is a deep learning tool which is modified version of BVLC caffe to support 3...

    王云峰
  • 波音收购机器人制造商加强海洋监测,AI创企图普科技获千万美元融资 | 大数据24小时

    数据猿导读 基于大数据技术的个性化教学平台“狸米学习”完成5000万元融资;收购了机器人制造商 Liquid Robotics,波音公司将全面加强海洋侦查力度;...

    数据猿
  • 从“e融”到“智多星”:江苏银行如何利用大数据实现弯道超车

    【数据猿导读】 如何能够在变革之中抓住机会,实现“弯道超车”,是每个行业都应该思考的问题。 记者 | 大文 官网 | www.datayuan.cn 微信公众号...

    数据猿
  • 【资料 】20大数据可视化工具及资料

    巴西的新闻网站Visualoop,这是一家汇集来自互联网的信息图表和数据为中心的可视化网站,今年,他们继续评选出这一年最优秀的大数据可视化相关工具。 “我们很艰...

    小莹莹

扫码关注云+社区

领取腾讯云代金券