来源:python中文社区

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

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

欧洲疾病预防控制中心(https://www.ecdc.europa.eu/en)提供全球每日更新的COVID-19数据(https://www.ecdc.europa.eu/en/

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

配置开发环境

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

python -m venv covidpandassource covidpandas/bin/activatepip install pandas

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

获取COVID-19数据

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

(https://www.ecdc.europa.eu/en/publications-data/download-todays-data-geographic-distribution-covid-19-cases-worldwide)屏幕截图如下。

将 CSV 数据导入 Pandas

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

from pandas import read_csvdf = read_csv("covid-19-cases-march-28-2020.csv")

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

# make sure the file name of the csv matches your file's name!df = read_csv("covid-19-cases-march-28-2020.csv", encoding="ISO-8859-1")

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

运行 Pandas 命令

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

df.head()

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

      dateRep  day  month  year  cases  deaths countriesAndTerritories geoId countryterritoryCode  popData20180  28/03/2020   28      3  2020     16       1             Afghanistan    AF                  AFG   37172386.01  27/03/2020   27      3  2020      0       0             Afghanistan    AF                  AFG   37172386.02  26/03/2020   26      3  2020     33       0             Afghanistan    AF                  AFG   37172386.03  25/03/2020   25      3  2020      2       0             Afghanistan    AF                  AFG   37172386.04  24/03/2020   24      3  2020      6       1             Afghanistan    AF                  AFG   37172386.0

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

df.tail()

tail输出如下:

         dateRep  day  month  year  cases  deaths countriesAndTerritories geoId countryterritoryCode  popData20187315  25/03/2020   25      3  2020      0       0                Zimbabwe    ZW                  ZWE   14439018.07316  24/03/2020   24      3  2020      0       1                Zimbabwe    ZW                  ZWE   14439018.07317  23/03/2020   23      3  2020      0       0                Zimbabwe    ZW                  ZWE   14439018.07318  22/03/2020   22      3  2020      1       0                Zimbabwe    ZW                  ZWE   14439018.07319  21/03/2020   21      3  2020      1       0                Zimbabwe    ZW                  ZWE   14439018.0

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

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

df.count()

count的输出如下所示:

dateRep                    7320day                        7320month                      7320year                       7320cases                      7320deaths                     7320countriesAndTerritories    7320geoId                      7306countryterritoryCode       7254popData2018                7311dtype: int64

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

df.cases.max()

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

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

               day        month         year         cases       deaths   popData2018count  7320.000000  7320.000000  7320.000000   7320.000000  7320.000000  7.311000e+03mean     16.828142     2.249454  2019.990847     80.870355     3.687158  7.130483e+07std       8.322981     1.256463     0.095239    608.270244    35.327689  2.140624e+08min       1.000000     1.000000  2019.000000     -9.000000     0.000000  1.000000e+0325%      10.000000     1.000000  2020.000000      0.000000     0.000000  4.137309e+0650%      18.000000     2.000000  2020.000000      0.000000     0.000000  1.072767e+0775%      24.000000     3.000000  2020.000000      5.000000     0.000000  5.139301e+07max      31.000000    12.000000  2020.000000  18695.000000   971.000000  1.392730e+09

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

df.corr()

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

                  day     month      year     cases    deaths  popData2018day          1.000000  0.203006 -0.163665  0.063629  0.060075    -0.040677month        0.203006  1.000000 -0.745912  0.062494  0.052707    -0.039131year        -0.163665 -0.745912  1.000000  0.012715  0.010032    -0.006294cases        0.063629  0.062494  0.012715  1.000000  0.716968     0.136580deaths       0.060075  0.052707  0.010032  0.716968  1.000000     0.082229popData2018 -0.040677 -0.039131 -0.006294  0.136580  0.082229     1.000000

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

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

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

df.countriesAndTerritories.nunique()

本例中的结果是196。

探索数据集

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

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

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

df2 = df[df['cases']>=10]df2.count()

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

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

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

         dateRep  day  month  year  cases  deaths countriesAndTerritories geoId countryterritoryCode  popData20187217  28/03/2020   28      3  2020     16       0                 Vietnam    VN                  VNM   95540395.07219  26/03/2020   26      3  2020     14       0                 Vietnam    VN                  VNM   95540395.07220  25/03/2020   25      3  2020     11       0                 Vietnam    VN                  VNM   95540395.07222  23/03/2020   23      3  2020     24       0                 Vietnam    VN                  VNM   95540395.07226  19/03/2020   19      3  2020     15       0                 Vietnam    VN                  VNM   95540395.0

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

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

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

总结

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

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

编辑:于腾凯

校对:王欣

—完—

想要获得更多数据科学领域相关动态,诚邀关注清华-青岛数据科学研究院官方微信公众平台“ 数据派THU ”。

pandas 数据分析 相关性_探索 COVID-19 新冠数据来学习 Pandas相关推荐

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

    来源:python中文社区 本文约2100字,建议阅读6分钟. 使用 pandas 数据分析工具来学习一些基本的 pandas 命令,并探索数据集中包含的内容. 欧洲疾病预防控制中心(https:// ...

  2. Pandas数据分析案例(盛华化工锅炉排放数据可视化分析)

    Pandas数据分析案例(盛华化工锅炉排放数据可视化分析) 实验环境 数据集介绍 问题描述 实验步骤 一.数据导入与观察 二.数据转换 三.数据可视化分析 相关资源 实验环境 操作系统:Linux/W ...

  3. python pandas 处理并excel 插入一列新的数据

    python pandas 处理excel并插入一列新的数据 接到个需求是在表格里塞入一列新的数据,假如分页的数据(页_条数),我们这是200条/页,用的是pandas import pandas a ...

  4. pandas 数据分析 相关性_pandas数据分析

    pandas 创建文件 DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值.字符串.布尔值等). DataFrame既有行索引也有列索引,它可以被看做由seri ...

  5. pandas官方文档_电影数据轻松学习 Pandas

    还记得刚开始接触 Pandas 的时候,没有找到比较系统的教程,印象最深的是看过别人翻译的官方教程< 10 Minutes to Pandas >,遇到不懂的地方就去官网查查 API,后来 ...

  6. 基于SAS对美国新冠数据的分析

    数据来源于kagglehttps://www.kaggle.com/datasets/antgoldbloom/covid19-data-from-john-hopkins-university ht ...

  7. 智源研究院联合多家权威机构上线“新冠肺炎(COVID-19)开放数据源”,打造全面、精细的新冠数据平台...

    2020 年 4 月 7 日,北京智源人工智能研究院数据开放研究中心联合清华大学.联合中国工程科技知识中心.清华大学附属北京长庚医院.阿里巴巴智能计算实验室.搜狗搜索.智谱.AI 宣布"新冠 ...

  8. Worldometer网站实时统计新冠数据

    Worldometer网站实时统计数据显示,截至北京时间12月13日6时30分左右,全球累计确诊新冠肺炎病例72032650例,累计死亡病例1610312例,全球单日新增确诊病例700141例,新增死 ...

  9. pandas清华镜像_一款可以像操作Excel一样玩Pandas的可视化神器来了!

    点上方蓝色"程序员GitHub",选"星标"公众号 重磅干货,第一时间到达 Pandas这个库对Python来说太重要啦!因为它的出现,让Python进行数据分 ...

最新文章

  1. Python培训教程分享:如何实现pygame的初始化和退出操作?
  2. [快报][贴图] ANSI Art 的新形式 - CSS-ANSI Art
  3. java如何把文件中的内容存到一个动态数组arraylist中_如何动态地向Java中的数组添加项目?...
  4. 几何梯度分析神经网络中不可信预测性
  5. HTTP的请求头标签 If-Modified-Since与Last-Modified 相等就是200新的请求 不等就是304没有变化
  6. MySQL 多实例详解
  7. 【Java】编写Java GUI应用程序,完成从键盘输入矩形的长和宽,求矩形的周长和面积并输出结果的功能...
  8. 于明:移动支付将代替电子支付?
  9. 一次比较麻烦的性能问题诊断及解决
  10. 2020年高压电工模拟考试题库及高压电工作业模拟考试
  11. android tf卡 修复工具,sd卡修复工具大师
  12. 大麦网抢票python代码_damai_ticket
  13. 悬浮窗一个怎么够?微信新版本满足你的一心多用
  14. 我的世界rpg服务器背包位置,我的世界查看玩家背包方法 如何查看玩家背包
  15. 《Programming in Lua 3》读书笔记(十)
  16. mysqladmin - 管理 MySQL 服务器、获取运行状态
  17. Python爬虫之路-打码平台的使用
  18. Android动态图标包制作教程,IT之家教程:使用安卓图标包美化Windows 10
  19. 一、程序设计和C语言
  20. 水平分表、分库和垂直分表、分库和公共表的代码实现和讲解

热门文章

  1. python 字典 转 pandas DataFrame
  2. windows10 ubuntu 无法连接到 无法建立到 raw.githubusercontent.com 的服务器 IP 地址,解决办法
  3. 语义分割--End-to-End Instance Segmentation with Recurrent Attention
  4. 多标签图像分类--HCP: A Flexible CNN Framework for Multi-Label Image Classification
  5. Linux命令行使用matplotlib,报错_tkinter.TclError: no display name and no $DISPLAY environment variable问题解决
  6. java smtp 内嵌图片,SMTP 发送内嵌图片 邮件
  7. php mysql orm_PHP ORM操作MySQL数据库
  8. mysql 主从单表_MySQL主从复制单表或者多表
  9. rabbitmq中的三种交换器(匹配模式)
  10. p40鸿蒙系统体验,苦心等待值了!华为P40成功运行鸿蒙OS,超级流畅