旗下产业: A产业/ A实习/ A计划
全国统一咨询热线:010-5367 2995
首页 > 热门文章 > 大数据分析 > 大数据分析如何利用Python创建数据透视表
大数据分析如何利用Python创建数据透视表
时间:2020-09-27来源:www.aaa-cg.com.cn点击量:作者:Sissi
时间:2020-09-27点击量:作者:Sissi


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

  数据透视表有什么用?
 

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

大数据分析如何利用Python创建数据透视表
 

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

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

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

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

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

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

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

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

大数据分析如何利用Python创建数据透视表
大数据分析如何利用Python创建数据透视表
 

  每个国家/地区的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以演示数据透视表的技术方面。

大数据分析如何利用Python创建数据透视表
 

  该描述()方法表明,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(可选)是您要汇总的列。如果您未指定此选项,则该函数将汇总所有数字列。
 

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

大数据分析如何利用Python创建数据透视表
 

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

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

大数据分析如何利用Python创建数据透视表
 

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

大数据分析如何利用Python创建数据透视表
 

  像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。

大数据分析如何利用Python创建数据透视表
 

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

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

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

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

大数据分析如何利用Python创建数据透视表
 

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

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

大数据分析如何利用Python创建数据透视表

大数据分析如何利用Python创建数据透视表
 

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

  使用以下数据处理数据 aggfunc
 

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

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

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

大数据分析如何利用Python创建数据透视表
 

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

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

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

大数据分析如何利用Python创建数据透视表
 

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

大数据分析如何利用Python创建数据透视表
 

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

  使用字符串操作进行分类
 

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

大数据分析如何利用Python创建数据透视表
 

  让我们来看看结果Europe:

大数据分析如何利用Python创建数据透视表
 

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

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

大数据分析如何利用Python创建数据透视表
 

  在此示例中,差异很小,但是一个有趣的练习是比较前几年的信息,因为该调查自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%

大数据分析如何利用Python创建数据透视表

大数据分析如何利用Python创建数据透视表
 

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

大数据分析如何利用Python创建数据透视表
大数据分析如何利用Python创建数据透视表
 

  添加总行数/列数
 

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

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

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

  让我们总结一下
 

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

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

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

大数据分析如何利用Python创建数据透视表
大数据分析如何利用Python创建数据透视表


 

  让我们总结一下

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

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



 

预约申请免费试听课

填写下面表单即可预约申请免费试听!怕钱不够?可先就业挣钱后再付学费! 怕学不会?助教全程陪读,随时解惑!担心就业?一地学习,可推荐就业!

©2007-2021/北京漫动者教育科技有限公司版权所有
备案号:京ICP备12034770号

老师想和你聊一聊

©2007-2021/ www.aaa-cg.com.cn 北京漫动者教育科技有限公司 备案号: 京ICP备12034770号 监督电话:010-53672995 邮箱:bjaaa@aaaedu.cc

京公网安备 11010802035704号

网站地图