pandas 第一行_用Excel表格带你学习pandas最核心的处理操作,不再害怕条件统计

a56fcf01d5f7c00e7c279f1ec86e9c35.png

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

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

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

前言

上一节我们重点介绍了针对文本条件的统计方式,这次来把数值相关的讲解一下,并且用一个 Excel 操作思维带你理解 pandas 的运算逻辑。

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

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

如果你看过上一节文章,想必应该理解到,在 pandas 中,不管是数值或是文本的条件统计,本质都是构造条件 bool 列,之后的处理是一样的。

废话少说,直接看各种复杂需求!


案例1:简单需求

"30岁以上的人数"

先看看 Excel 函数公式的做法:

b10ac9c8459b489381055a55610bfcbf.png
  • 简单使用 countifs 即可
  • 注意,第二个参数使用文本(双引号包围),主要是因为需要使用 大于号。这使得函数公式的语义更好

pandas 中数值条件也很非常容易表达:

8d6b29b6f440a5862b361f2ba3589e8d.png
  • 行1:df.age >30 构造出"年龄大于30"的 bool 列

0800c04139b2f8fe43f90bc32f06ee2e.png

与 Excel之间的关系

你会发现,其实 pandas 中的运算操作,与 Excel 函数公式的运算是非常相似(数组公式更相似),pandas 的操作就像你在第一行写了一个处理逻辑公式,他就自动为你把逻辑公式复制一整列。

不知道我说啥?看看下面的 Excel 操作演示,来实现"30岁以上的人数":

代码 df.age >30 相当于如下操作:

91c44f4a7fcaa6f238bdc5ee4b292c53.png
  • pandas 代码, df.age >30 ,构造出条件 bool 列,过程如上
  • 在数据旁边新增一列,直接执行 C2 单元格是否大于30,结果是一个 bool 值
  • 由于 pandas 代码是直接指定 年龄 列是否大于30,因此相当于自动把 E2 单元格的公式复制下去

此时,代码 df[cond] ,相当于如下操作:

93d6cd64f956a5e9e1631d0f3748edce.png
  • df[cond] 相当于 df[df.age > 30]
  • 相当于在辅助列上做筛选,把 true 值的行筛选出来!
  • 所以你会发现,如果只是执行 df[cond] ,得到的是那些年龄大于30的行

如果你熟悉 Excel 的功能,你可能会说:"这不就是智能表格?!"

是的,智能表格更能体现,如下:

2e3018fa7010f24dfae5f96151c420cf.png
  • 创建表格
6b76aa9863924ce1fab344691cd5b359.png
  • 在表格旁边输入公式
  • 注意此时公式中的引用不是单元格地址,而是直接以列名显示
  • 这个地方与 pandas 非常相似,这是因为他们都是在表达,你在操作一个有结构的表格

当你按下回车,公式自动填充:

f72286c56d176af1c4026fc55a2e5211.png

91ef99319c046d5b38ae3ce788c73e88.png

其他各种需求

当你理解了上面的思路,那么只要你熟悉 pandas 各种构造 bool 列的技巧,各种需求基本难不倒你。

"30岁以上 男女的人数":

d5c62b267d57afc7a188f71157ea6ad5.png

一个个写,太麻烦了,直接条件筛选,分组统计:

5cd1ac19376bab9501686225e73e818f.png

"男女高于各自性别的平均年龄的人数"

7a0ec14c55490c203bb1bd7c93807b0d.png
  • 有没有发现男性的人数与之前需求的人数很接近?因为刚好男性的平均年龄在30岁左右

当然,还是可以直接分组统计的:

ad12f64dd6acd53e34d18398aebce206.png

"男女各自年龄最小的人的资料":

95d39116769e73a980f7052abe3945b8.png
  • 他们都在 S 港口上船,同是三等舱
  • 女生获救了,男生遇难了

"男女各自年龄最大的人的资料":

4bb9e991b4379ebf617aa0a571f9354e.png
  • 他们都是在 S 港口上船,同是一等舱
  • 他们都获救了
  • 一等舱可能更靠近甲板,逃生更容易

最后来一个复杂一点的需求。

"看看各个年龄段,男女的生还情况":

43f1de9c6b08497c5ac9bbdcb97c083c.png
  • 简单让 pandas 按数据中的年龄,平均划分成4段
  • 大概可以看出,男性的生还率低于女性,特别是20到40岁这个年龄段
  • 更多针对泰坦尼克号沉船事件数据的详细分析,可以查看 公众号中:数据大宇宙 > 数据分析 > 探索分析 系列文章

关于透视表和数据分段,请查看 pandas 专栏 [带你玩转Python数据处理—pandas] 相关文章

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/506356.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

网页载入动画 php,网站页面加载动画代码

有时候网站服务器带宽不好或者用户网络不好,网站速度打开就会比较慢,那么用户等待就会比较无聊,下面准备了一个loading页面,可以在网站文件未完全加载完毕之前展示。HTML部分,放在body标签下面(最好是最靠近body)正在加…

ehcache缓存原理_贼厉害,手撸的 SpringBoot缓存系统,性能杠杠的!

缓存是最直接有效提升系统性能的手段之一。个人认为用好用对缓存是优秀程序员的必备基本素质。本文结合实际开发经验,从简单概念原理和代码入手,一步一步搭建一个简单的二级缓存系统。一、通用缓存接口1、缓存基础算法FIFO(First In First Ou…

ecshop适应在php7,ecshop适应PHP7的解决方法

if (!defined(DITAN_ECS)){die(Hacking attempt);}class cls_mysql{var $link_id NULL;var $settings array();var $queryCount 0;var $queryTime ;var $queryLog array();var $max_cache_time 300; // 最大的缓存时间,以秒为单位var $cache_data_dir…

angular 字符串转换成数字_Angular日期在TypeScript中格式化转换应用

组件模板中我们常常使用Angular内置管道DatePipe将其日期格式化,如同{{ startTime | date:yyyy-MM-dd }}这般操作,即可转换为字符串格式。那么在TS文件中我们也可以通过DatePipe或formatDate方法将其格式化。Angular日期在TypeScript中格式化转换应用​w…

python罗马数字转换,Python3.5实现的罗马数字转换成整数功能示例

本文实例讲述了Python3.5实现的罗马数字转换成整数功能。分享给大家供大家参考,具体如下:问题概述:给定一个罗马数字 ,将罗马数字转换成整数。如罗马数字I,II,III,IV,V分别代表数字 …

js在一个指定元素前添加内容_WebAR开发指南(1)---使用AR.js实现第一个WebAR demo...

前面有一篇文章万字干货介绍WebAR的实现与应用 分析了目前流行的WebAR框架并简单的介绍一些实现方法,这个专栏我们具体的来通过一些框架实现WebAR效果。关于AR.jsAR.js是一个轻量级的增强现实类JavaScript库,支持基于标记和位置的增强现实。开发人员可以…

php基础教学笔记,php学习笔记:基础知识

php学习笔记:基础知识2.每行结尾不允许有多余的空格3.确保文件的命名和调用大小写一致,是由于类Unix系统上面,对大小写是敏感的4.方法名只允许由字母组成,下划线是不允许的,首字母要小写,其后每个单词首字母…

视图编辑php,PhpStorm视图模式

# PhpStorm视图模式在这个页面中:* [基础](#基础)* [切换全屏模式](#切换全屏模式)* [切换演示模式](#切换演示模式)* [切换不分心模式](#切换不分心模式)## 基础PhpStorm提供特定的视图模式:* **全屏模式** 允许你使用整个屏幕编写代码,在视…

python 最小二乘回归 高斯核_从简单数学建模开始:08最小二乘准则的应用(附python代码)...

模型拟合一般来说有这么三种:切比雪夫近似准则极小化绝对偏差之和最小二乘准则这几个原则各有各的适用范围。其中最小二乘准则是比较容易计算的。接下来我将简要的介绍最小二乘准则以及举例说明如何用python实现。最小二乘准则定义:给定某种函数类型 和 …

oracle 时间集合,oracle 日期函数集合(集中版本)第2/2页

oracle 日期函数集合(集中版本)第2/2页更新时间:2009年06月16日 23:45:55 作者:oracle 日期函数网上已经有了不少,特我们跟集中一下,免得大家麻烦。一、 常用日期数据格式1.Y或YY或YYY 年的最后一位,两位或三位SQL&g…

中缀表达式转后缀表达式两位数_再见,正则表达式!

从一段指定的字符串中,取得期望的数据,正常人都会想到正则表达式吧?写过正则表达式的人都知道,正则表达式入门不难,写起来也容易。但是正则表达式几乎没有可读性可言,维护起来,真的会让人抓狂&a…

asp连oracle测试,ASP连接Oracle

ASP连接Oracle的方式有几种, 这里介绍一下 OLE 连接方法dim objConn,strConn,DBServer,DBName,DBUser,DBPassworddim RS,xSQLDBServer"192.168.1.151" //DB ServerDBName"oracleDB" //登陆数据库名/SIDDBUser"system" //登陆用户名DBPassword&qu…

php 腾讯云 文字识别_腾讯科技(成都)有限公司

成都IT内推圈是由IT行业老兵组建的民间组织,我们希望能为广大IT同仁提供力所能及的帮助,我们不仅提供靠谱的职位,我们更是有温度的圈子!为了帮助更多的朋友寻找到靠谱的内推职位,老农在此号召大家:1. 发布职…

oracle插入性能优化,Oracle- insert性能优化

看见朋友导入数据,花了很长时间都没完成!其实有很多快速的方法,整理下!向表中插入数据有很多办法,但是方法不同,性能差别很大.----1.原始语句drop table t1 purge;create table t1(sid number,sname varchar2(20)) tab…

winscp 自动断开无法连接_winscp教程,winscp教程,看完就学会的winscp教程

作为一个站长,当你的网站流量逐渐变大时,就会发现目前的主机无法满足正常需要,就要更换更高一级的云主机或VPS主机,新手就需要使用WinSCP和Putty,来管理主机。IIS7服务器管理工具可以批量管理、定时上传下载、同步操作…

oracle客户端数据恢复,AnyBackup-Oracle 数据恢复任务恢复到异客户端失败,并提示错误:数据源为空,请检查恢复环境是否授权...

关键字Oracle、数据源适用产品AnyBackup Express 7.0.6 - 7.0.8AnyBackup CDM 7.0.6 - 7.0.8问题描述登录 AnyBackup 管理控制台,依次点击定时数据保护 > 数据恢复 > 新建,新建 Oracle 数据恢复任务,选择恢复数据到异客户端&#xff0c…

python创建excel_python自动生成excel(xlwt库)

# coding: utf-8import web import json import datetime import xlwt import StringIO # 如果不在前端调用接口,如下web.py框架的urls和app、render可以省略 urls( # web框架的路由/index,Index,/home,Home, ) appweb.aplication(urls, globals()) # 注册应用 rend…

linux限制单个用户使用,linux下限制用户使用系统资源

linux下限制用户使用系统资源除了可以对用户设置磁盘配额以及权限做限制以外还可以使用ulimit可以对所有用户的core文件大小,数据段大小,最多可使用的CPU事件和最多可打开的文件数目等做限制,将ulimit命令放在/etc/profile文件中,…

linux祖先进程,Linux下的几种特殊进程

1、Linux的登录环境Linux是一个多任务多用户的操作系统,其设计初衷: 就是要达成多用户同时使用单个计算机大的任务。多用户:早期计算机资源紧张,为了让更多的人都可以使用。多任务:服务于多用户,同时提高计算机的吞吐量…

@select注解_SSM框架(十三):Spring框架中的IoC(3)新注解,完全摆脱xml文件

spring中的新注解1、Configuration作用:指定当前类是一个配置类细节:当配置类作为AnnotationConfigApplicationContext对象创建的参数时,该注解可以不写。2、ComponentScan作用:用于通过注解指定spring在创建容器时要扫描的包属性…