对Series或DataFrame列的聚合运算其实就是使用aggregate(使用自定义函数)或调用诸如mean、std之类的方法。然而,你可能希望对不同的列使用不同的聚合函数,或一次应用多个函数

首先,根据day和smoker对tips进行分组。

In [81]: grouped=tips.groupby([tips['day'],tips['smoker']])

@注意,对于表9-1中的那些描述统计,可以将函数名以字符串的形式传入:

In [82]: grouped_pct=grouped['tip_pct']

传入一个函数

In [83]: grouped_pct.agg('mean')

Out[83]:

day smoker

Fri No 0.151650

Yes 0.174783

Sat No 0.158048

Yes 0.147906

Sun No 0.160113

Yes 0.187250

Thur No 0.160298

Yes 0.163863

Name: tip_pct, dtype: float64

传入一组函数或函数名

得到的DataFrame的列就会以相应的函数命名:

In [87]: grouped_pct.agg(['mean','std',peak_to_peak])

Out[87]:

mean std peak_to_peak

day smoker

Fri No 0.151650 0.028123 0.067349

Yes 0.174783 0.051293 0.159925

Sat No 0.158048 0.039767 0.235193

Yes 0.147906 0.061375 0.290095

Sun No 0.160113 0.042347 0.193226

Yes 0.187250 0.154134 0.644685

Thur No 0.160298 0.038774 0.193350

Yes 0.163863 0.039389 0.151240

注意:自定义函数传入时不需要加引号。

命名列(name,function)

如果传入一个由(name,function)元组组成的列表,则各元组的第一个元素就会被用作DataFrame的列名(可以将这二元元组列表看做一个有序映射)。

In [88]: grouped_pct.agg([('foo','mean'),('bar',np.std)])

Out[88]:

foo bar

day smoker

Fri No 0.151650 0.028123

Yes 0.174783 0.051293

Sat No 0.158048 0.039767

Yes 0.147906 0.061375

Sun No 0.160113 0.042347

Yes 0.187250 0.154134

Thur No 0.160298 0.038774

Yes 0.163863 0.039389

DataFrame列函数应用

对于DataFrame,还可以定义一组应用于全部列的函数,或不同的列应用不同的函数。

举例:对tip_pct和total_bill列计算三个统计信息:

DataFrame拥有层次化的列

结果DataFrame拥有层次化的列,这相当于分别对各列进行聚合,然后用concat将结果组装到一起(列名用作keys参数)。

传入带有自定义名称的元组列表

对不同的列应用不同的函数

具体的办法是向agg传入一个从列名射到函数的字典:

只有将多个函数应用到至少一列时,DataFrame才会拥有层次化的列。

python字符串进行位运算_不懂python如何使用函数进行分组运算?7种方法,函数分组不再难...相关推荐

  1. python字符串转换成整数_在Python中将字符串转换为整数的方法

    在本文中,我们将向你展示如何将Python字符串转换为整数,可在Linux操作平台上进行.Python中的所有数据类型(包括整数和字符串)都是对象,通常在编写Python代码时,你需要将一种数据类型转 ...

  2. python字符串能减吗_在python中减去两个字符串(Subtract two strings in python)

    在python中减去两个字符串(Subtract two strings in python) 我应该计算两个不同列表的元素之间的差异. 这是我的代码: import operator a = ['5 ...

  3. python字符串大写字母个数_【python实例】统计字符串里大写字母,小写字母的个数和非字母的个数...

    """ 给定一个以下字符串:统计大写字母的个数,小写字母的个数,非字母的个数. str1 = "ajdkkKDKEK1343KFKiriromfkfKKRIOW ...

  4. [转载] python字符串转有符号数字_在python中将字符串转换为8位带符号整数

    参考链接: Python中将十进制转换为字符串 I'm trying to patch together a motor control system using python and ctypes ...

  5. python字符串转化为数字信号_用python实现简单的数字信号软件滤波处理

    原博文 2017-09-09 16:55 − 做嵌入式开发,经常需要通过逻辑分析仪对数字信号进行数据分析.如果信号源附近有强干扰源,并且逻辑分析仪滤波效果不好的话,获取到的数字信号,经常带有一些&qu ...

  6. python字符串两个冒号_在Python中按冒号分割字符串

    我有一个提醒应用程序,我需要像一样打发时间3:30 a.m..我使用了re模块,但是失败了. 我想做的是在列表中的单词前面按冒号分隔时间.但是列表有多个单词.像一样 a.m.,am 程序应尝试输入单词 ...

  7. python字符串拼接带空格_使用Python连接字符串和空格

    当我运行此代码时,它的行为与预期的一样:x = int(input("Put number: ")) result_figure =[] xtempleft = x-1 xtemp ...

  8. python中threading产生死锁_什么是死锁,如何避免死锁(4种方法)

    当两个线程相互等待对方释放资源时,就会发生死锁.Python 解释器没有监测,也不会主动采取措施来处理死锁情况,所以在进行多线程编程时应该采取措施避免出现死锁. 一旦出现死锁,整个程序既不会发生任何异 ...

  9. python 文本框内容变化_监听文本输入框内容值的改变——4种方法

    以下是addTarget: import "ViewController.h" @interface ViewController () @property (weak, nona ...

最新文章

  1. Linux17-磁盘分区、文件系统、逻辑卷管理LVM
  2. 事物Spring boot @Transactional
  3. Java 配置maven及阿里云镜像
  4. 基于分位数回归的动态CoVaR计算 案例与代码
  5. Android.mk转换到Android.bp方法
  6. houdini 常用
  7. cactiEZ 配置
  8. 【摘录】Thinkpad T410i-2516A21 安装Ubuntu10.0.4记录
  9. ionic安装和创建项目
  10. 最好的投资是投资自己:20本投资书单推荐
  11. 【同步与补偿】频率偏移
  12. origin ‘http://localhost:8080‘ has been blocked by CORS policy: Request header field platform is not
  13. android wms各个类的作用,Android系统服务 —— WMS
  14. C4D如何同时挤压多个样条?
  15. vector的sort操作
  16. vue 登录界面无法跳转问题
  17. ERP系统 应付分析供应商账龄
  18. 班迪录屏,免费,易用
  19. golang GO111MODULE是用来干什么的?
  20. 松下TZ1,TZ3与佳能A710IS三款DC的比较

热门文章

  1. AttributeError: ‘SVC‘ object has no attribute ‘_probA‘
  2. 影像组学视频学习笔记(15)-ROC曲线及其绘制、Li‘s have a solution and plan.
  3. Comprehensive evaluation of error correction methods for high-throughput sequencing data
  4. Ubuntu E: Unable to locate package错误解决办法
  5. 打分矩阵Scoring Matrices
  6. 基于二代和三代测序技术的柚子基因组混合拼装
  7. java程序设计pdf下载_Java程序设计(迟立颖) PDF扫描版[21MB]
  8. 人群分析--ResnetCrowd: A Residual Deep Learning Architecture
  9. gcc8之前,coredump文件无法显示正确的函数调用栈信息
  10. WSL系列操作:安装,卸载