乔山办公网我们一直在努力
您的位置:乔山办公网 > excel表格制作 > excel数据分析-懂Excel轻松入门Python数据分析包pandas(二一):透视表

excel数据分析-懂Excel轻松入门Python数据分析包pandas(二一):透视表

作者:乔山办公网日期:

返回目录:excel表格制作

此系列文章收录在公众号中:数据大宇宙 > 数据处理 >E-pd


转发本文并私信我"python",即可获得Python资料以及更多系列文章(持续更新的)


经常听别人说 Python 在数据领域有多厉害,结果学了很长时间,连数据处理都麻烦得要死。后来才发现,原来不是 Python 数据处理厉害,而是他有数据分析神器—— pandas


前言

本系列上一节文章最后我随手使用了 pandas 中的透视表操作,之后有些小伙伴询问我相关的问题。正好 pandas 的 pivot_table 也是与 Excel 透视表对应。本文简单教你入门使用 pandas 完成透视表功能。


继续使用泰坦尼克号沉船事件的乘客名单作为例子:


  • pclass:船舱等级
  • survived:是否生还
  • fare:票价
  • sex:性别
  • home.dest:住址

案例1:分析性别对生还率的影响

这里只简单说明怎么制作透视表,以方便那些不熟悉透视表的小伙伴:


  • 3步完成

分析目标涉及的维度:


  • 性别
  • 生还率

这些维度用于分类依据,放入透视表的行或列标签:


  • 把 sex 字段拖入 行标签,survived 字段拖入 列标签
  • 还需要统计人数,人名总是有的,因此把 name 字段拖入 数值区域
  • 透视表立刻出结果,行标签 放入的字段的唯一值,被显示在透视表左侧。列标签 放入的字段的唯一值,被显示在透视表的上方

只看数值看不出门路,设置百分比吧:


  • 点中透视表任意一格,鼠标右键
  • 按上图指示完成
  • 女性 生还率远高于 男性!!

接下来不再显示 Excel 透视表操作



pandas 要做出透视表的效果,实际与 Excel 透视表的概念基本一致:


  • 参数 index 就是 Excel 透视表中的 行标签
  • 参数 columns : Excel 透视表中的 列标签
  • 参数 values:Excel 透视表中的 数值区域
  • 参数 aggfunc:Excel 透视表中的 数值区域 的字段的统计方式(Excel 默认是计数)

"好像少了点东西……"


没有总计行列,可以通过参数设置:


  • 参数 margins 默认为 False,显示总计行列
  • 参数 margins_name ,设置总计行列的索引值

实际上很少需要使用这2个参数,因为 pandas 中添加这2列是非常简单



"Excel 透视表是百分比呀"


pandas 透视表功能没有参数设置,因为本身透视出来的还是一个 DataFrame ,这可以利用之前学到的一切技巧来为这个 DataFrame "添油加醋":


  • 默认情况下,如果把一个 DataFrame 作为文本显示,小数是不会变百分比,这里可以设置 pd.set_option('display.float_format', '{:.2%}'.format) 。这种设置不会影响数据类型,比如把此结果输出到 Excel ,仍然是小数
  • 行9:每行(axis=1)做运算(apply),行中每个数字(r) 除以(/) 行中剔除最后一个数据(r[:-1])的总和(sum)

案例2:贫富差距

我们用透视表分析 船舱等级 与 生还率的影响。


下面是 Excel 透视表结果:


接着是 pandas 实现:


  • 修改 index 参数为 pclass,即可按船舱等级汇总
  • 行9:不想再重复编写那段"非人"看的占比计算,直接调用一个自定义的函数(函数实现看源码)

从结果可以看到,头等舱生还率最高(更多原因是船舱等级越低,位置越靠近船底部,逃生越困难)



"我还想结合性别看看船舱等级对生还率的影响,怎么搞?"


很简单,pivot_table 中的大部分参数都可以放入多个字段(跟 Excel 透视表操作一样):


  • index 参数传入多个字段的列表

从结果看到,每个等级的船舱还是"女性比男性更可能生还"


"嘿,感觉直接用 Excel 透视表就好了,还写啥代码,麻烦死"


如果只是上述这些简单汇总的分析,我也建议直接用 Excel 透视表。但实际工作中,不可能只是这么简单的汇总。



案例3:小伙伴结伴同游,更安全

以前我发布过一篇文章,曾经使用 power bi 对这个数据进行初步分析,文中发现,里面有些人是一起登记上船的,而结伴上船的人有更高的生还率。


相关文章:[公众号 -> 数据分析 -> 探索分析]。文章中并没有给出 pandas 代码。


但是,原始数据是没有字段可以直接反映是否有结伴上船的情况。


数据中 ticket 列是船票号,有相同的船票号并且多于1人以上的,可以视为是购买套票的,也就是一起上船的。


解决思路就是:把 ticket 列内容相同的归为一组,组内有多于1行记录的,就是有小伙伴一起上船的


相信一直看本系列的小伙伴马上就知道,这在 pandas 中不就是分组操作吗!下面是代码:


  • 行3:这句就是把每个人标记为"是否套票"的实现,这个不多解析了,几乎与上面说的中文语义一致
  • 行5-10:利用透视表,对字段 isgroup 统计一下生还人数比例
  • 很明显,没有小伙伴的人里面(上图结果的第一行),生还比例只有 27.21% 。相比较,有小伙伴一起上船的乘客(上图结果的第二行),生还人数比例就比较高

上面结果的行列显示不太好看(isgroup 显示 True 和 False,survived 显示 0 和 1),你知道怎么把他们替换成友好的中文内容吗?



想学习如何使用 pandas 做数据分析,看我的 pandas 专栏:



总结

本文重点:


  • DataFrame.pivot_table 是一个快速统计的好工具,其概念与 Excel 的数据透视表一致

需要源码的小伙伴请转发本文并私信我"python"


如果希望从零开始学习 pandas ,那么可以看看我的 pandas 专栏。


相关阅读

  • excel公式大全-Excel财务函数公式大全

  • 乔山办公网excel表格制作
  • Excel财务函数公式大全EXCEL提供了许多财务函数,这些函数大体上可分为四类:投资计算函数、折旧计算函数、偿还率计算函数、债券及其他金融函数。这些函数为财务分析提供了极大的
  • word流程图-快速做流程图的三种小方法

  • 乔山办公网word文档
  • 一,在Word中制作流程图1,首先点击“插入”再点击“形状”,点击新建绘图画布,就出来画布了。2,再点击“插入”,“形状”,会出现流程图,选择你用的图形,点击鼠标左键,就可
  • office2003绿色版-旧格式Office文档的智能更新

  • 乔山办公网office365
  • 微软在2014年4月份停止对Windows XP和Office 2003软件的支持,大部分用户已经升级到Office 2007甚至最新的2013版。旧版本的Office文件采用二进制文件,在新版Office中是以兼容模式打开,有可能出
关键词不能为空
极力推荐

ppt怎么做_excel表格制作_office365_word文档_365办公网