大数据分析如何利用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

python数据透视表怎么存下来_大数据分析如何利用Python创建数据透视表?相关推荐

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

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

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

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

  3. 大数据分析师高级证书_数据分析师资格证书好考吗_大数据分析师认证

    数据分析师资格证书好考吗_大数据分析师认证 为了适应大数据时代的要求,数据分析这一工作需要更加正规化.专业化以及职业化,因此,数据分析师应运而生,成了较多人争相报考的科目.那么 一方面,据小编了解,数 ...

  4. python智慧树判断题_智慧树知到_大数据分析的python基础_判断题答案

    智慧树知到_大数据分析的python基础_判断题答案 答案: 更多相关问题 强心苷中毒先兆症状A.一定次数的早搏B.窦性心律低于60次/minC.视色障碍D.房室传导阻滞E.室性心动 强心苷在临床上可 ...

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

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

  6. 大数据分析如何在Python中生成FiveThirtyEight图

    大数据分析如何在Python中生成FiveThirtyEight图?如果你阅读大数据分析文章,则可能已经迷失了FiveThirtyEight的内容.自然,他们的出色可视化使你印象深刻.你想制作自己的出 ...

  7. 每日生产万亿消息数据入库,腾讯如何突破大数据分析架构瓶颈

    背景介绍 对于腾讯庞大的大数据分析业务,几千台的 Hadoop 集群,近百 P 级的存储总量,每日产生万亿的消息数据入库,需要针对几十亿 IMEI 手机设备去重,并关联数千亿的历史全表,进行曝光.点击 ...

  8. unix 存储空间不足 无法处理此命令_大数据分析命令行使用教程

    在与数据科学紧密联系的计算机科学领域,像开发人员一样控制计算机是一项非常宝贵的资产.Unix命令行界面(CLI;您还将看到它称为终端或bash,shell等),它使我们能够执行更多操作. 因此,我们推 ...

  9. 用python做数据分析pdf_利用python进行数据分析pdf

    利用python进行数据分析pdf微盘下载!<利用python进行数据分析>利用Python实现数据密集型应用由浅入深帮助读者解决数据分析问题~适合刚刚接触Python的分析人员以及刚刚接 ...

  10. 大数据处理与分析方向主要干什么_大数据分析_方向_方法与工具

    001 论 欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟欟 坛 ● 曾忠禄 ( 澳门理工学院 , 澳门 ) 大数据分析 : 方向 . 方法与工具 摘 要 ...

最新文章

  1. 独家 | 从基础到实现:集成学习综合教程(附Python代码)
  2. 在Matlab符号计算中灵活运用assume
  3. java.lang.IncompatibleClassChangeError: Expected static method
  4. ServletRequest startAsync()的用途有限
  5. Fortinet再获Gartner 2021广域网边缘基础设施魔力象限领导者
  6. android window 半透明,popupWindow半透明背景
  7. 2.原子变量 CAS算法
  8. 中兴B860AV2.1U,联通版本,强刷固件线刷包
  9. 机器学习实战(第1章)
  10. matlab 系统找不到指定路径
  11. 注册表编辑已被管理员禁用—解决办法
  12. Discussion 2
  13. 蓝桥杯:翻转旋转变换(矩阵旋转)
  14. 2023中国科学院大学计算机考研信息汇总
  15. 何恺明暗通道去雾(阅读笔记)
  16. 学物联网必须要知道的云平台ThingsBoard
  17. MAC中的PS无法正常安装怎么办?抱歉,安装失败 发生了未知错误。错误代码: 1
  18. 【智能优化算法】基于矮猫鼬优化算法求解单目标优化问题附matlab代码
  19. mysql 查询当前时间一个月以内的数据
  20. Mysql主备恢复处理思路

热门文章

  1. 文法规则自顶向下分析
  2. dp hp oracle 备份软件_HP DP备份软件设置
  3. 2020-12-06 高等数学:常用积分公式
  4. SQL语句简单增删改查
  5. postgresql数据库修改md5密码,口令认证
  6. html表格收起展开,vue-table-element表格的全部展开和全部折叠
  7. python新建画布_Python tkinter Canvas画布完全攻略-Python
  8. Hadoop原理与安装
  9. 极速pdf android,极速PDF阅读器 V3.0.0.2003 官方版[安卓软件]
  10. Topaz Video Enhance AI(ai视频画质增强软件)官方正式版V2.2.0 | AI视频放大软件下载 | 视频画质怎么变清晰?