pandas 数据分析 相关性_探索 COVID-19 新冠数据来学习 Pandas
来源: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相关推荐
- 探索 COVID-19 新冠数据来学习 Pandas
来源:python中文社区 本文约2100字,建议阅读6分钟. 使用 pandas 数据分析工具来学习一些基本的 pandas 命令,并探索数据集中包含的内容. 欧洲疾病预防控制中心(https:// ...
- Pandas数据分析案例(盛华化工锅炉排放数据可视化分析)
Pandas数据分析案例(盛华化工锅炉排放数据可视化分析) 实验环境 数据集介绍 问题描述 实验步骤 一.数据导入与观察 二.数据转换 三.数据可视化分析 相关资源 实验环境 操作系统:Linux/W ...
- python pandas 处理并excel 插入一列新的数据
python pandas 处理excel并插入一列新的数据 接到个需求是在表格里塞入一列新的数据,假如分页的数据(页_条数),我们这是200条/页,用的是pandas import pandas a ...
- pandas 数据分析 相关性_pandas数据分析
pandas 创建文件 DataFrame是一个表格型的数据结构,它含有一组有序的列,每列可以是不同的值类型(数值.字符串.布尔值等). DataFrame既有行索引也有列索引,它可以被看做由seri ...
- pandas官方文档_电影数据轻松学习 Pandas
还记得刚开始接触 Pandas 的时候,没有找到比较系统的教程,印象最深的是看过别人翻译的官方教程< 10 Minutes to Pandas >,遇到不懂的地方就去官网查查 API,后来 ...
- 基于SAS对美国新冠数据的分析
数据来源于kagglehttps://www.kaggle.com/datasets/antgoldbloom/covid19-data-from-john-hopkins-university ht ...
- 智源研究院联合多家权威机构上线“新冠肺炎(COVID-19)开放数据源”,打造全面、精细的新冠数据平台...
2020 年 4 月 7 日,北京智源人工智能研究院数据开放研究中心联合清华大学.联合中国工程科技知识中心.清华大学附属北京长庚医院.阿里巴巴智能计算实验室.搜狗搜索.智谱.AI 宣布"新冠 ...
- Worldometer网站实时统计新冠数据
Worldometer网站实时统计数据显示,截至北京时间12月13日6时30分左右,全球累计确诊新冠肺炎病例72032650例,累计死亡病例1610312例,全球单日新增确诊病例700141例,新增死 ...
- pandas清华镜像_一款可以像操作Excel一样玩Pandas的可视化神器来了!
点上方蓝色"程序员GitHub",选"星标"公众号 重磅干货,第一时间到达 Pandas这个库对Python来说太重要啦!因为它的出现,让Python进行数据分 ...
最新文章
- Python培训教程分享:如何实现pygame的初始化和退出操作?
- [快报][贴图] ANSI Art 的新形式 - CSS-ANSI Art
- java如何把文件中的内容存到一个动态数组arraylist中_如何动态地向Java中的数组添加项目?...
- 几何梯度分析神经网络中不可信预测性
- HTTP的请求头标签 If-Modified-Since与Last-Modified 相等就是200新的请求 不等就是304没有变化
- MySQL 多实例详解
- 【Java】编写Java GUI应用程序,完成从键盘输入矩形的长和宽,求矩形的周长和面积并输出结果的功能...
- 于明:移动支付将代替电子支付?
- 一次比较麻烦的性能问题诊断及解决
- 2020年高压电工模拟考试题库及高压电工作业模拟考试
- android tf卡 修复工具,sd卡修复工具大师
- 大麦网抢票python代码_damai_ticket
- 悬浮窗一个怎么够?微信新版本满足你的一心多用
- 我的世界rpg服务器背包位置,我的世界查看玩家背包方法 如何查看玩家背包
- 《Programming in Lua 3》读书笔记(十)
- mysqladmin - 管理 MySQL 服务器、获取运行状态
- Python爬虫之路-打码平台的使用
- Android动态图标包制作教程,IT之家教程:使用安卓图标包美化Windows 10
- 一、程序设计和C语言
- 水平分表、分库和垂直分表、分库和公共表的代码实现和讲解
热门文章
- python 字典 转 pandas DataFrame
- windows10 ubuntu 无法连接到 无法建立到 raw.githubusercontent.com 的服务器 IP 地址,解决办法
- 语义分割--End-to-End Instance Segmentation with Recurrent Attention
- 多标签图像分类--HCP: A Flexible CNN Framework for Multi-Label Image Classification
- Linux命令行使用matplotlib,报错_tkinter.TclError: no display name and no $DISPLAY environment variable问题解决
- java smtp 内嵌图片,SMTP 发送内嵌图片 邮件
- php mysql orm_PHP ORM操作MySQL数据库
- mysql 主从单表_MySQL主从复制单表或者多表
- rabbitmq中的三种交换器(匹配模式)
- p40鸿蒙系统体验,苦心等待值了!华为P40成功运行鸿蒙OS,超级流畅