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

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

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

前言

Excel 中除了 Vlookup 函数,一系列条件统计函数(sumif、countif、maxif)就用得最多,毕竟在 Excel 中进行数据统计是常见需求。

今天我们来看看在 pandas 中如何做到条件统计。

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

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

需求1:性别统计

"男女分别有多少人?"

这需要我们在 Excel 中有很多方式完成,比如透视表或函数公式,下面简单列出函数公式的做法:

  • 简单使用 countifs 即可

这里不再单独使用 countif 了,管他是否只有一个条件,统一用 xxxifs 类函数即可


在 pandas ,不会有啥条件统计函数的,因为这就是先筛选,再统计:

  • 行2:得到 性别 列是女性的 bool 列
  • 行3:df[cond] 就是女性的记录,简单通过 len 方法,即可得到记录数(人数)

不过你可能会觉得这很麻烦,因为如果还要男性的人数,也需要执行一次差不多的代码。

实际上我们可以直接对 性别 列分组统计即可:

  • 不多说了,代码语义简直与中文一样
  • 这里唯一不好的地方是,需要通过 size 方法获得每个分组的记录数

需求2:不同的统计方法

刚刚是求人数,现在希望求出女性的平均票价。

以下是 Excel 的公式做法:


那么 pandas 的做法呢?

想必聪明的你一定大概知道怎么做,pandas 中求平均的是方法 mean:

  • 行3:同样语义非常清晰。.fare.mean() 恰好反映"票价的平均"

同样,简单分组即可一次获得所有分组的统计信息:

  • 按 sex 分组,求 票价 的 平均

需求3:非常规匹配

上面的条件都是完全符合,有时候我们需要统计有包含关系的条件。

"住址是New York 的人数"

Excel 的 xxifs 类函数公式都能支持通配符:

  • 前后用 * 包围内容,表示包含此内容即符合条件

在 pandas 中,由于筛选与统计是独立分开的,因此只需要知道怎么筛选,那么此需求即可迎刃而解:

  • 行2:由于 住址 列是字符串类列,使用 .str 可访问字符串类型列的各种方法
  • contains 判断列中是否包含指定内容。如果本身内容是 nan(不存在值) ,那么直接赋值为 False

如果我们只需要 住址 结尾是 NY 的人数?

Excel 中由于用通配符,因此表达更直接:

  • 注意,没有修改公式,只是输入内容变成 *NY ,表示 NY 前面可以是任意内容

在 pandas 这麻烦多了,这次不能使用 contains 方法:

  • 行2:使用 endswith 方法即可完成

怎么与 Excel 的统计结果不一样!!

你会发现,Excel 的统计结果包含小写字母的 ny 结尾!


一次解决所有问题

以上 pandas 的做法主要有以下问题:

  • 不能用通配符表达不同的文本规则,只能用不同的方法,我记不住这么多方法呀
  • 不能忽略大小写(实际上面的需求,pandas 的结果更合理)

其实 .str.contains 方法本身就是使用正则表达式,我们可以直接用 contains 解决所有文本规则相关问题:

  • 行2: NY$ ,表示 NY 在结尾处
  • 参数 case = False ,不区分大小写

pandas 用于文本匹配的还有 match 方法,此系列文章不再深入讲解了。更多高级应用方法,请关注 pandas 专栏 [带你玩转Python数据处理—pandas]

python contains类似函数_Python也能做到Excel那样,条件统计轻松解决工作需求相关推荐

  1. python做excel数据分析统计服_Python也能做到Excel那样,条件统计轻松解决工作需求...

    此系列文章收录在公众号中:数据大宇宙 > 数据处理 >E-pd 转发本文并私信我"python",即可获得Python资料以及更多系列文章(持续更新的) 经常听别人说 ...

  2. 怎么用python处理excel文件-用python处理excel文件有多轻松?工作从未如此简单

    最近需要频繁读写 excel 文件,想通过程序对 excel 文件进行自动化处理,发现使用 python 的 openpyxl 库进行 excel 文件读写实在太方便了,结构清晰,操作简单.本文对 o ...

  3. python数组求和函数_python数据分析之Numpy数据库第三期数组的运算

    上期数组的索引和切片的知识总结通道:数组的索引和切片 数组和标量间的运算 数组之所以强大而且重要的原因,是其不需要通过循环就可以完成批量计算,也就是矢量化 import numpy as np a = ...

  4. python asyncio回调函数_python回调函数用法实例分析

    python回调函数用法实例分析 本文实例讲述了python回调函数用法.分享给大家供大家参考.具体分析如下: 软件模块之间总是存在着一定的接口,从调用方式上,可以把他们分为三类:同步调用.回调和异步 ...

  5. python self调用函数_Python之self

    python类的函数中,第一个参数必须为实例对象本身,约定俗称记为self.self是实例本身,在外部调用类中的函数时,不需要给self赋值,但需要给其他的参数赋值. 与普通的函数相比,在类中定义的函 ...

  6. python反序数函数_python逆序函数

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! python sorted()函数 list内置一个方法sort(),可以实现对 ...

  7. python中execute函数_python中的函数是如何使用的?

    欢迎关注「issnail」感谢! "一起学习,一起成长!" 1.定义函数与调用函数 定义python函数:依次输入def.函数名.带有函数参数的圆括号,最后紧跟一个冒号(:) 函数 ...

  8. python 宏定义函数_python 宏使用详解

    什么是宏? 宏类似python中的函数,可以传参数进去,但不能有返回值!在实际开发项目中,可以将一些复用代码抽取出来放到宏中,然后把不固定的值作为变量! 宏的使用! 在讲宏使用之前,我们先网上找一张表 ...

  9. python中延时函数_python延时函数

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 可以使用python的time模块来实现类似于c中的sleep函数作用代码如下: ...

最新文章

  1. Linux系统中的软件管理
  2. hdu3691(无向图最小割的求解)
  3. cygwin This indicates that the /etc/passwd (and possibly /etc/group) files should be rebuilt 问题解决办法
  4. mysql负载均衡分区_分区和负载均衡让MySQL更大更好
  5. Android学习小Demo(10)ToDoList的改进版之ViewPager显示多个图片
  6. VC程序运行时间测试
  7. iis反向代理tomcat
  8. 水经注影像离线包简介
  9. oracle 11g varchar/varchar2
  10. 硬盘测试软件看接口,检测硬盘的工具使用方法
  11. 老路MBA商学课|第002课:比较优势|我做的比你好,就应该我做吗?
  12. COSCon'21 大数据(D)论坛介绍
  13. 北斗卫星的授时系统不输GPS授时系统并应用到各行各业
  14. 妹子图kotlin版
  15. 解决macOS无法在线升级更新的问题
  16. 全自动浅层过滤器的后期维护
  17. SSM项目tomcat启动失败-Multiple Contexts have a path of “/ssm-crud“
  18. 定时器node-schedule使用
  19. 读取excel文件数据,封装成hashmap
  20. 支持html5特性的浏览器,五大主流浏览器对CSS3和HTML5特性支持情况的详细清单

热门文章

  1. WEBSOCKET协议判断 握手及反馈
  2. 经典排序算法(Java版)
  3. 报错,void AcceptAndReadAvailableTracks(const QString param, int timeout)
  4. Java实训项目11:GUI学生信息管理系统 - 实现步骤 - 创建服务接口
  5. Java讲课笔记32:利用JDBC实现系统登录功能
  6. 二叉树C++ | 查找节点(中序搜索)_5
  7. TTU智能配电终端_智能配电终端规模化建设及应用
  8. python为什么没有指针_Python中有指针吗?
  9. Summed-Area Variance Soft Shadow Mapping(SAVSM):一
  10. qprocess 最小化启动外部程序_程序员易踩的 9 大坑,教你识别