大数据分析如何利用Python创建数据透视表?面对新数据集时面临的最大挑战之一就是知道从哪里开始以及应该关注什么。能够快速汇总成百上千的行和列可以节省大量时间和精力。数据透视表是您可以用来实现此目的的简单工具,它可以帮助您以查询的速度对数据进行切片,过滤和分组,并以视觉上有吸引力的方式表示信息。

数据透视表有什么用?

您可能已经熟悉Excel中的数据透视表的概念,该概念在1994年由商标名称PivotTable引入。使用此工具,用户可以自动对一个表中存储的数据进行排序,计数,总计或平均。在下图中,我们使用了数据透视表功能来快速汇总Titanic数据集。下面较大的表显示了数据集的前30行,较小的表是我们创建的数据透视表。

左侧的数据透视表根据Sex和Survived列对数据进行了分组。结果,此表显示了每种性别在不同生存状态中所占的百分比(0::未生存,1::生存)。这使我们能够迅速看到女性比男性拥有更好的生存机会。右侧的表格也使用该Survived列,但是这次数据按分组Class。

介绍我们的数据集:《世界幸福报告》

在上面的示例中,我们使用了Excel,但是大数据分析如何利用Python创建数据透视表将演示内置熊猫函数内置的功能pivot_table。我们将使用《世界幸福报告》,该报告是有关全球幸福状况的调查。该报告按其幸福等级对150多个国家/地区进行排名,自2012年以来几乎每年都会发布。我们将使用2015年,2016年和2017年收集的数据,如果您想了解的话可以下载。沿。我们正在运行python 3.6和pandas 0.19。

我们可能要回答的一些有趣的问题是:

1)世界上最幸福和最不开心的国家和地区是?

2)幸福会受到地区的影响吗?

3)在过去三年中,幸福感分数是否发生了显着变化?

让我们导入数据并快速浏览一下:

每个国家/地区的Happiness Score收入是通过将表格中的其他七个变量相加得出的。这些变量中的每一个都揭示了人口加权平均得分,范围从0到10,随时间推移进行追踪,并与其他国家进行比较。

这些变量是:

1)Economy:人均实际GDP

2)Family: 社会支持

3)Health:健康的预期寿命

4)Freedom:自由选择生活

5)Trust:对腐败的看法

6)Generosity:慷慨的看法

7)Dystopia:将每个国家/地区与假设国家/地区进行比较,该国家/地区代表每个关键变量的最低国家平均水平,并与残留误差一起用作回归基准

每个国家/地区都将Happiness Score确定自己的Happiness Rank身份,这是该国家/地区在特定年份中的相对位置。例如,第一行表示瑞士在2015年的幸福分数为7.587,位居最幸福的国家。瑞士排名第一,仅次于冰岛,得分为7.561。丹麦在2015年排名第三,依此类推。有趣的是,西欧在2015年的前八名中排名七。

我们将集中在决赛上Happiness Score以演示数据透视表的技术方面。

该描述()方法表明,Happiness Rank范围从1到158,这意味着调查的国家中某一年的数量最多为158。值得注意的是,Happiness Rank原本类型int。它在此处显示为浮点数的事实意味着我们NaN在此列中有值(我们也可以通过count仅等于470 的行(而不是数据集中的495行)来确定此值)。

该Year列没有任何缺失值。首先,因为它在数据集中显示为int,但也显示为-总数为Year495,即我们数据集中的行数。通过将的count值Year与其他列进行比较,似乎可以预期每列中有25个缺失值(YearVS中为495,其他所有列中为470)。

通过Year和对数据进行分类Region

熊猫的有趣之pivot_table处在于,您只需要一行代码就可以在数据上获得另一种观点。大多数pivot_table参数使用默认值,因此必须添加的唯一必需参数是data和index。尽管不是强制性的,但value在下一个示例中我们还将使用参数。

1)data 不言自明–这是您要使用的DataFrame

2)index是您要对数据进行分组的列,分组器,数组(或上一个列表)。它将显示在索引列中(如果要传递列表,则显示在列中)

3)values(可选)是您要汇总的列。如果您未指定此选项,则该函数将汇总所有数字列。

让我们首先看一下输出,然后解释该表是如何产生的:

通过传递Year作为index参数,我们选择将数据分组为Year。输出是数据透视表,该数据透视表显示Yearas index和Happiness Scoreas 的三个不同值values。值得注意的是,聚合默认值是平均值(或平均值),因此Happiness Score列中显示的值是所有国家/地区的年度平均值。该表显示所有国家/地区的平均值在2016年最高,目前是过去三年中的最低水平。

这是有关如何创建数据透视表的详细图表:

接下来,我们将该Region列用作index:

像Happiness Score上面一样,在数据透视表中的列中显示的数字是平均值,但这次是所记录的所有年份(2015、2016、2017)的平均值。通过此显示,可以更轻松地查看Australia and New Zealand具有最高平均分的产品,而North America其排名紧随其后。有趣的是,尽管我们从读取的数据中获得了最初的印象,但在计算过去三年的平均值时Western Europe,该数据Western Europe实际上排在第三位,该数据显示在大多数顶部。排名最低的区域是Sub-Saharan Africa,紧随其后的是Southern Asia。

创建多索引数据透视表

您可能曾经使用groupby()过某些数据透视表功能(我们之前已经演示了如何使用groupby()分析数据)。但是,pivot_table()内置函数提供了直接的参数名称和默认值,可以帮助简化诸如多索引之类的复杂过程。

为了将数据按不止一列进行分组,我们要做的就是传递列名列表。让我们通过Region和对数据进行分类Year。

这些示例还揭示了数据透视表的名称来源:它允许您旋转或旋转汇总表,并且这种旋转使我们对数据有了不同的认识。可以很好地帮助您快速获得宝贵见解的观点。

这是查看数据的一种方法,但是我们可以使用columns参数来获得更好的显示:

columns是您希望将数据分组依据的列,分组器,数组或上一个列表。使用它会水平分散不同的值。

使用Year作为Columns参数将显示的不同值year,并使显示效果更好,如下所示:

使用可视化数据透视表 plot()

如果要查看我们创建的上一个数据透视表的外观,只需plot()在pivot_table函数调用的末尾添加即可(您还需要导入相关的绘图库)。

视觉表示有助于揭示差异很小。话虽如此,这也表明位于美国的两个地区的幸福感等级都将持续下降。

使用以下数据处理数据 aggfunc

到目前为止,我们一直使用平均值来获取有关数据的见解,但还需要考虑其他重要值。该aggfunc参数的实验时间:

aggfunc(可选)接受您要在组中使用的功能或功能列表(默认值:)numpy.mean。如果传递了函数列表,则生成的数据透视表将具有层次结构列,其顶级是函数名称。

让我们添加每个区域的中位数,最小值,最大值和标准偏差。这可以帮助我们评估平均值的准确性,以及它是否真的可以代表真实情况。

看起来有些地区的极端价值可能会影响我们的平均水平,而不是我们希望的那样。例如,Middle East and Northern Africa区域具有较高的标准偏差,因此我们可能要删除极值。让我们看看每个区域要计算多少个值。这可能会影响我们所看到的表示形式。例如,Australia and new Zealand标准偏差非常低,并且在过去三年中排名最高,但是我们也可以假设它们仅占两个国家/地区的比例。

应用自定义函数删除异常值

pivot_table允许您传递自己的自定义聚合函数作为参数。您可以使用lambda函数,也可以创建一个函数。让我们计算给定年份中每个区域的平均国家/地区数量。我们可以使用lambda函数轻松完成此操作,如下所示:

具有最低标准偏差的两个排名最高的区域仅仅占两个国家。Sub-Saharan Africa另一方面,具有最低的Happiness score,但它占43个国家/地区的百分比。有趣的下一步是从计算中删除极值,以查看排名是否发生重大变化。让我们创建一个仅计算介于0.25分位数和0.75分位数之间的值的函数。我们将使用此函数作为一种方法来计算每个区域的平均值,并检查排名是否保持不变。

消除异常值主要影响了具有更多国家的区域,这是有道理的。我们可以看到Western Europe(每年平均接受调查的21个国家/地区)排名有所提高。不幸的是,Sub-Saharan Africa当我们剔除异常值时,(每年接受调查的平均39个国家/地区)获得的排名甚至更低。

使用字符串操作进行分类

到目前为止,我们已经根据原始表中的类别对数据进行了分组。但是,我们可以搜索类别中的字符串以创建我们自己的组。例如,按大洲查看结果将很有趣。我们可以通过查找包含Asia,Europe等的区域名称来执行此操作。为此,我们可以先将数据透视表分配给变量,然后添加过滤器:

让我们来看看结果Europe:

差异表明,两个欧洲地区的幸福感得分差异较大。在大多数情况下,除去异常值会使得分更高,但在东亚则不然。

如果要从多个列中提取特定值,则最好使用df.query该方法,因为前一种方法不适用于条件化多索引。例如,我们可以选择查看非洲的特定年份和特定区域。

在此示例中,差异很小,但是一个有趣的练习是比较前几年的信息,因为该调查自2012年以来都有报告。

处理丢失的数据

我们已经介绍了迄今为止最强大的参数,pivot_table因此,如果您在自己的项目中使用此方法进行实验,则已经可以从中受益匪浅。话虽如此,快速浏览其余参数(它们都是可选的并具有默认值)很有用。首先要谈的是缺失值。

1)dropna是boolean类型,用于指示您不想包括所有条目都是完整的列NaN(默认值:True)

2)fill_value 是标量类型,用于选择一个值来替换缺少的值(默认值:无)。

我们没有所有条目都在的列NaN,但是值得一提的是,如果我们这样做,pivot_table则会默认根据dropna定义将其删除。

我们一直在根据默认设置pivot_table对待NaN。该fill_value默认值是None因此,这意味着我们没有在我们的数据集替换缺失值。为了证明这一点,我们需要生成一个带有NaN值的数据透视表。我们可以将Happiness Score每个区域划分为三个分位数,并检查有多少个国家属于这三个分位数(希望至少一个分位数中有缺失值)。

为此,我们将使用qcut(),它是内置的熊猫函数,可让您将数据拆分为任意数量的分位数。例如,指定pd.qcut(data["Happiness Score"], 4)将导致四个分位数:

1)0-25%

2)25%-50%

3)50%-75%

4)75%-100%

没有特定分位数的国家/地区显示NaN。这不是理想的,因为等于NaN的计数不会提供任何有用的信息。显示起来比较容易混淆0,因此让我们NaN使用fill_value以下数字替换为零:

添加总行数/列数

最后两个参数都是可选的,并且对于改善显示效果最有用:

1)margins是布尔类型,允许您添加all行/列,例如小计/总计(默认为False)

2)margins_name 这是字符串类型,并接受页边距为True时将包含总计的行/列的名称(默认为“全部”)

让我们总结一下

如果您正在寻找一种从不同角度检查数据的方法,那么pivot_table答案便是。它易于使用,对数值和分类值都很有用,并且可以用一行代码获得结果。

如果您喜欢研究这些数据,并且有兴趣进一步调查,那么我们建议您添加前几年的调查结果,并且/或者将其他列与国家/地区信息(例如贫困,恐怖,失业等)结合使用。请随时分享您的信息笔记本,祝您学习愉快!

让我们使用这些将总计添加到我们的上一张表中。

让我们总结一下

如果您正在寻找一种从不同角度检查数据的方法,那么pivot_table答案便是。它易于使用,对数值和分类值都很有用,并且可以用一行代码获得结果。大数据分析如何利用Python创建数据透视表​www.aaa-cg.com.cn

如果您喜欢研究这些数据,并且有兴趣进一步调查,那么我们建议您添加前几年的调查结果,并且/或者将其他列与国家/地区信息(例如贫困,恐怖,失业等)结合使用。请随时分享您的信息笔记本,祝您学习愉快!

相关推荐IT互联网职业培训:大数据分析R语言如何进行线性分析?​zhuanlan.zhihu.comIT互联网职业培训:如何使用Excel或Python执行大数据分析任务​zhuanlan.zhihu.comIT互联网职业培训:大数据分析python自回归模型​zhuanlan.zhihu.com

如何利用python3创建数据表_大数据分析如何利用Python创建数据透视表相关推荐

  1. 用python创建微信机器人_手把手教你用Python创建微信机器人

    微信,一个日活10亿的超级app,不仅在国内社交独领风骚,在国外社交也同样占有一席之地.今天我们要讲的便是如何用Python来做一个微信聊天机器人. 因为是微信机器人系列的第一篇文章,所以笔者会特别详 ...

  2. python xlwings追加数据_大数据分析Python库xlwings提升Excel工作效率教程

    原标题:大数据分析Python库xlwings提升Excel工作效率教程 Excel在当今的企业中非常非常普遍.在AAA教育,我们通常建议出于很多原因使用代码,并且我们的许多数据科学课程旨在教授数据分 ...

  3. 大数据数据收集数据困难_大数据架构、大数据开发与数据分析的区别

    是新朋友吗?记得先点蓝字关注我哦- 今日课程菜单 Java全栈开发 | Web前端+H5 大数据开发 | 数据分析  人工智能+Python | 人工智能+物联网 来源:小职(z_zhizuobiao ...

  4. oracle 数据立方_大数据之数据仓库分层

    大数据之数据仓库分层 1. 什么是数据分层? 2. 数据分层的好处 一种通用的数据分层设计 3. 举例 4. 各层会用到的计算引擎和存储系统 5. 分层实现 6.数据分层的一些概念说明 7.大数据相关 ...

  5. 什么是大数据口子_大数据分析师年薪几十万,学什么专业才能从事大数据?

    近几年,大数据为各个领域带来了全新的变革,大数据的重要性越来越被企业和国家所看到,大数据工作者的需求再次被无限放大,他们的薪资和社会地位也在不断上涨.马云在演讲中就提到,未来的时代将不是IT时代,而是 ...

  6. python判断题题库大数据技术_智慧树_大数据分析的python基础_搜题公众号

    智慧树_大数据分析的python基础_搜题公众号 更多相关问题 社会公众可以查阅烟草专卖行政主管部门的监督检查记录.() 公民.法人或者其他组织不得利用自动售货机销售烟草制品.() 烟草广告中不得有下 ...

  7. 供应链 信用管理 大数据_大数据分析在供应链管理中的应用

    薛如宾 [摘要]我国的综合实力在不断增强,大数据分析也在企业中得到了更大的作用,本文概述了大数据分析在供应链管理的应用,大数据分析在企业中的应用,大数据分析与供应链之间的关系. [关键词]大数据分析; ...

  8. 《数据科学与大数据分析——数据的发现 分析 可视化与表示》一2.3 第2阶段:数据准备...

    本节书摘来自异步社区<数据科学与大数据分析--数据的发现 分析 可视化与表示>一书中的第2章,第2.3节,作者[美]EMC Education Services(EMC教育服务团队),更多 ...

  9. 大数据开发和大数据分析应该怎么选择?

    其实两个方向都很可!主要还是看你个人的兴趣和未来的发展方向,下面给你罗列一下大数据开发和数据分析都是做什么的以及需要掌握哪些技能,然后你自己再选择一下喜好的方向~ 大数据开发主要是负责大数据挖掘,大数 ...

  10. python编程大数据分析_大数据分析Python学习技巧

    大数据分析Python是任何开发人员都应该知道的重要编程语言.许多程序员使用这种语言来构建网站,创建学习算法以及执行其他重要任务.但是尝试学习大数据分析Python可能会令人感到恐惧,沮丧和困难,尤其 ...

最新文章

  1. javascript选择器_如何通过选择正确JavaScript选择器来避免沮丧
  2. PyTorch 源码解读之即时编译篇
  3. 利用PCHunter结束各种进程
  4. 页面状态javascript 判断 iframe是否加载成功
  5. ubuntu16搭建z-blog博客
  6. ruby简单的基本 6
  7. 常用正则表达式大全——包括校验数字、字符、一些特殊的需求
  8. 抖音gorgon算法04php,抖音xgorgon(0401)获取方法及演示
  9. 常系数齐次线性递推学习笔记
  10. XAML或JavaFx?
  11. 为什么说「中台」程序员将来会最值钱?
  12. 解决企业子CA无法检查吊销的问题
  13. TypeScript入门教程 之 解构
  14. Java JDBC PreparedStatement类
  15. Moment.js 一款JS时间封装库
  16. android 文件上传参数,Android OkHttp Post上传文件并且携带参数实例详解
  17. 一套小程序源码多少钱_微信点餐小程序怎么做,微信扫码点餐系统多少钱一套?...
  18. 07 Halcon 点云平面角测量
  19. Mahalanobis(马哈拉诺比斯)距离
  20. 780. 到达终点 (Reaching Points)

热门文章

  1. XML语言的基本语法-Java Web
  2. 1.2、logistic回归之极大似然法
  3. 施耐德变频器与昆仑通态触摸屏Modbus通讯程序实现正转反转,启停复位,频率设定等功能
  4. 斐讯K2P路由器设置AP模式(大部分路由器通用
  5. java简单的sql语句--增删改查(CRUD)
  6. 关于如何查找NXP S32K1xx系列单片机的封装信息和引脚定义
  7. STM8单片机的多通道连续AD采集
  8. 基于穿戴式智能化步态分析仪的步态分析
  9. 论文阅读笔记|Unsuperised Deep Homography
  10. MySQL的登陆【数据库系统】