探索 COVID-19 新冠数据来学习 Pandas

sw

本文约2100字,建议阅读6分钟。

使用pandas数据分析工具来学习一些基本的pandas命令,并探索数据集中包含的内容。

欧洲疾病预防控制中心()提供全球每日更新的COVID-19数据(

publications-data/download-todays-data-geographic-distribution-covid-19-cases-worldwide),这些数据可以用JSON,CSV或XML格式下载。在本教程中,我们将使用pandas数据分析工具来学习一些基本的pandas命令,并探索数据集中包含的内容。

配置开发环境

安装好Python3版本,本文中还须安装pandas。可以通过以下命令将其安装到新的虚拟环境中:

python-mvenvcovidpandassourcecovidpandas/bin/activatepipinstallpandas

现在,我们准备获取COVID-19数据,并开始使用pandas进行分析。

获取COVID-19数据

在浏览器中下载当前有关全球COVID-19病例地理分布的数据

()屏幕截图如下。

将CSV数据导入Pandas

COVID-19数据存储在CSV中,现在我们需要将其导入pandasDataFrame中。我们需要先导入pandas,以便我们可以读取下载的数据。

frompandasimportread_csvdf=read_csv("")

如果您遇到类似UnicodeDecodeError:'utf-8'codeccan'tdecodebyte0xe7的报错信息,请不要担心,直接运行此命令以便pandas可以正确读取CSV。

#makesurethefilenameofthecsvmatchesyourfile'sname!df=read_csv("",encoding="ISO-8859-1")

现在,我们将数据加载到pandasDataFrame中,并且可以开始运行代码以生成数据集中的内容。

运行Pandas命令

首先让我们看一下数据样本的大致内容。当我打开某些东西以查找前五行和后五行中包含的内容时,通常会运行head和tail函数。

()

您应该看到6行输出:其中一列是列标题,另一列是CSV数据的前5行:

dateRepdaymonthyearcasesdeathscountriesAndTerritoriesgeoIdcountryterritoryCodepopData2018028/03/20202832020161/03/2020273202000/03/20202632020330/03/2020253202020/03/2020243202061

tail函数查看DataFrame中的最后五行。

()

tail输出如下:

dateRepdaymonthyearcasesdeathscountriesAndTerritoriesgeoIdcountryterritoryCodepopData2018731525/03/2020253202000/03/2020243202001/03/2020233202000/03/2020223202010/03/2020213202010

注意您也可以像(10)一样将整数传递到头部或尾部,以获取前n个行或后n个行。

根据尾函数,我们大约有7320行数据(因为第一行的索引为0),我们可以使用count函数确认每一列中有多少数据。

()

count的输出如下所示:

dateRep7320day7320month7320year7320cases7320deaths7320countriesAndTerritories7320geoId7306countryterritoryCode7254popData20187311dtype:int64

如果我们想查看这些列中的数据,并查找最高值怎么办?

()

在此数据集中,我们得到18695作为输出。如何查看所有列的标准统计值?这就是describe函数派上用场的地方。

describe提供了标准统计量度,例如数据集中所有数据的最小值,最大值,中位数和均值。在本例子中输出如下:

+03+07+08+0325%10.0000001.0000002020.0000000.0000000.0000004.137309e+0650%18.0000002.0000002020.0000000.0000000.0000001.072767e+0775%24.0000003.0000002020.0000005.0000000.0000005.139301e+07+09

快速查看列的数据是否相互关联如何?corr函数是我们所需要的。

()

对于本例的数据集,corr输出如下:

毫不奇怪,我们看到列与其自身之间存在1.000000的相关性。如果我们没有看到那个结果,我们将不得不担心数据的准确性!对于其他列,查看它们的相关性可能没有意义。这是您需要考虑数据的地方。完全不相关的列之间通常存在关联,只是因为数据是以某种方式构造的。

开发人员需要有严格的统计学背景,否则您可能需要先掌握自己的统计知识,然后才能说出数据中是否有问题。

让我们继续探索数据。我们可以选择列并确定其中包含多少个唯一项。例如,列出了多少个国家和地区?

()

本例中的结果是196。

探索数据集

这些函数非常适合用于基本查询以了解数据集中的内容,但是我们如何通过将一些命令串在一起来提出实际问题呢?

由于我们使用了上面的count函数,我们现在知道该集合中有7320行。每行代表一个国家中一天的数据。现在问一个问题。在这些国家中,有多少天报告了10起或更多的病例?

让我们创建一个名为df2的新数据集,找出其中当天仅报告10个或更多案例的行,然后计算其中的行数。

df2=df[df['cases']=10]()

本例中输出的值为1531。在列出的196个国家或地区中,每天有报告1531起10或更多COVID-19病例。但是1531这个数字很难向人们解释清楚含义。我们应该挑选一个国家,并显示一天有10或更多病例报告的次数。例如可以选取越南这个国家来看一下:

df2[df2['countriesAndTerritories']=='Vietnam']

按列输出完整的数据如下:

dateRepdaymonthyearcasesdeathscountriesAndTerritoriesgeoIdcountryterritoryCodepopData2018721728/03/20202832020160/03/20202632020140/03/20202532020110/03/20202332020240/03/20201932020150

我们还可以在此处使用count函数来确认,到目前为止,越南已经有五天报告了10个或更多新病例:

df2[df2['countriesAndTerritories']=='Vietnam'].count()

我们得到列的输出为5,和前述吻合。

总结

本文导入并查看了欧洲疾病预防控制中心的COVID-19数据集。我们学习了一些基本的Pandas命令,建议您仔细阅读DataFrame文档列表(

/),以了解该工具提供给开发人员的所有其他便捷功能。

校对:王欣

—完—

文章版权声明:除非注明,否则均为暖居智控原创文章,转载或复制请以超链接形式并注明出处。

上一个 暖气片十大品牌出炉!性价比之王竟是它?

下一个 春寒料峭,做这类菜品够暖够烫,家人最爱