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

经常听别人说 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),你知道怎么把他们替换成友好的中文内容吗?

总结

本文重点:

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

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

python处理excel数据透视表_Python也能轻松做出Excel透视表的效果,一切技巧全在这里...相关推荐

  1. Python 解析构建数据大杂烩 -- csv、xml、json、excel

    Python 可以通过各种库去解析我们常见的数据.其中 csv 文件以纯文本形式存储表格数据,以某字符作为分隔值,通常为逗号:xml 可拓展标记语言,很像超文本标记语言 Html ,但主要对文档和数据 ...

  2. python汇总excel表_Python 处理分析 128 张 Excel 表格竟不到3秒?|附数据集

    作者 | 周志鹏 责编 | 刘静 有不少旁友想要了解怎么用Python提升处理数据的效率,或者说怎么用Python自动处理多张Excel表格,于是乎便有了本文.这篇文章算是Python数据分析实战的第 ...

  3. python爬去网页数据并对比excel中数据是否一致_python入门之对比两份excel表格数据...

    今天老大交给我一个任务,对比两个版本的excel数据的异同(增删情况),唉,说多了都是泪,自从学会了python,再也不用担心老大这样的任务了~~~ 好了直接上代码吧,代码中解释 import xlr ...

  4. python 做表格分析难么_Python处理分析128张Excel表格竟然不到3秒?

    不少粉丝留言,想要了解怎么用Python提升处理数据的效率,或者说怎么用Python自动处理多张Excel表格,于是乎便有了本文. 这篇文章算是Python数据分析实战的第二个独立案例. 注:案例12 ...

  5. python做大数据的框架_Python+大数据计算平台,PyODPS架构手把手教你搭建

    原文链接:http://click.aliyun.com/m/13965/ 在2016年10月的云栖社区在线培训上,来自阿里云大数据事业部的秦续业分享了<双剑合壁--Python和大数据计算平台 ...

  6. matlab打开矩阵表,如何将Excel数据导入MATLAB中?:EXCLE中通过矩阵表输出选项

    怎么把matlab中处理的数据存入到excel中 可以直接xlswrite命令. data=randn(100,1); % data为需要存储的数 xlswrite('D:\write2Excel.x ...

  7. python二维数据读取对齐_python代码要严格对齐

    此课程与<清华编程高手.尹成.带你实战python入门>大体相同,只需购买其中的一门课程. 本课程由清华大学尹成老师录制,课程的特色在于讲解原理的同时引入了每个程序员都热衷的黑客技术.py ...

  8. python处理完数据导入数据库_python操作数据库之批量导入

    python操作数据库之批量导入 Python语法简洁清晰,特色之一是强制用空白符(white space)作为语句缩进. Python具有丰富和强大的库.它常被昵称为胶水语言,能够把用其他语言制作的 ...

  9. android excel读取和写入_Python科普帖 csv amp; excel

    0 存储数据的方式 常用的存储数据的方式有两种--存储成csv格式文件.存储成Excel文件(不是复制黏贴的那种).前面,我有讲到json是特殊的字符串.其实,csv也是一种字符串文件的格式,它组织数 ...

最新文章

  1. python数据库模块_十二、Python高级功能之Mysql数据库模块
  2. DBD::mysql::db do failed: Table cl_access was locked with a READ lock and can't be updated
  3. python文字识别并获取位置_python实现简单的文字识别
  4. pku1401 Factorial 计算n!末尾有几个0?
  5. 计算机技术基础 VB 答案,《计算机技术基础(VB)》武汉理工大学20春作业一
  6. Yum (yellow dog update manager)
  7. DataCapa 启动
  8. 细数魅族metal电信版手机3宗罪。
  9. python3+requests接口自动化-其他接口封装
  10. android u盘加载_如何获取Android系统挂载U盘的路径
  11. 个人IP网站源码 适合做个人主页和工作室网站
  12. 使用mapboxgl 实现特定的地图效果
  13. 小学计算机余数在线,余数计算器-余数计算器
  14. Oracle排序查询语句
  15. python填空题大全_『Python题库 - 填空题』151道Python笔试填空题
  16. 利用C#实现的外挂式甲骨文拼音输入法
  17. 造数常用的Excel表达式
  18. ZBlogPHP评论验证码无法显示
  19. X-NVR2000视频存储及安防管理一体机
  20. FxFactory 7 Pro for Mac(fcpx/ae/pr视觉特效插件包)v7.2.5

热门文章

  1. 2012年公司组织旅游西安线个人记录(repost)
  2. 价值观、本能和内驱力
  3. 作为成功转行软件测试的过来人,给大家的建议!
  4. LEAP模型的能源环境发展、碳排放建模预测及不确定性分析实践应用
  5. git软件代码提交详解
  6. 数据库:一张表update另外一张表实践
  7. 数据库update(动态更新)-SqlServer
  8. 论文阅读 (68):Self-Contrastive Learning: An Efficient Supervised Contrastive Framework with Single...
  9. 分支限界法—任务分配问题
  10. c语言程序设计答案第6章,C语言程序设计答案(黄保和编)第6章