当前位置: 首页 > news >正文

pandas使用教程:apply函数、聚合函数agg和transform

文章目录

        • apply函数调用
          • apply函数描述性统计
          • apply函数lambda自定义
        • 聚合函数aggregate/agg
          • 用字典实现聚合
        • transform函数
          • 多函数 Transform
        • 重置索引与更换标签
          • 行重置索引
          • 行和列同时重置索引

apply函数调用

apply函数描述性统计
import numpy as np
df.loc[:,'Q1':'Q4'].apply(np.mean)
df.loc[:,'Q1':'Q4'].apply('mean') #两种写法均可Q1    49.20
Q2    52.55
Q3    52.67
Q4    52.78
dtype: float64
df.loc[:,'Q1':'Q4'].apply(np.cumsum) #累加函数
apply函数lambda自定义
#每季度最值之差
df.loc[:,'Q1':'Q4'].apply(lambda x: x.max() - x.min())Q1    97
Q2    98
Q3    98
Q4    97
dtype: int64
#最大值对应索引
df.loc[:,'Q1':'Q4'].apply(lambda x: x.idxmax())Q1    Lincoln4
Q2      Harley
Q3        Lfie
Q4      Ronnie
dtype: object

聚合函数aggregate/agg

#计算每列总和 平均数
df.iloc[:,1:].agg(['sum','mean'])
#使用匿名函数lambda
df.iloc[:,1:].agg(['sum',lambda x:x.mean()])
#自定义函数 三种方法
def avg(x):return x.mean()
df.iloc[:,1:].agg(['sum',avg])Q1	Q2	Q3	Q4
sum	4920.0	5255.00	5267.00	5278.00
mean	49.2	52.55	52.67	52.78
用字典实现聚合

指定为哪些列应用哪些聚合函数时,需要把包含列名与标量(或标量列表)的字典传递给 DataFrame.agg

df.iloc[:,1:].agg({'Q1': 'mean', 'Q2': 'sum'})Q1      49.2
Q2    5255.0
dtype: float64
df.iloc[:,1:].agg({'Q1':['mean','max'],'Q2':'sum'})Q1	Q2
max	98.0	NaN
mean	49.2	NaN
sum	NaN	5255.0

transform函数

transform方法的返回结果与原始数据的索引相同,大小相同。与 .agg API 类似,该 API 支持同时处理多种操作,不用一个一个操作。

#将Q1列全部转换为整数
df['Q1'].transform(np.round)name
Liver       89
Arry        36
Ack         57
Eorge       93
Oah         65..
Gabriel     48
Austin7     21
Lincoln4    98
Eli         11
Ben         21
Name: Q1, Length: 100, dtype: int64
多函数 Transform

transform() 调用多个函数时,生成多层索引 DataFrame。第一层是原始数据集的列名;第二层是 transform() 调用的函数名。

#transform调用两个函数
df['Q1'].transform([np.round,lambda x:x+1])round_	<lambda>
name		
Liver	89	90
Arry	36	37
Ack	57	58
Eorge	93	94
Oah	65	66
...	...	...
Gabriel	48	49
Austin7	21	22
Lincoln4	98	99
Eli	11	12
Ben	21	22

重置索引与更换标签

#生成一个4x4的dataframe
s = pd.DataFrame(np.random.randint(0,100,(4,4)),index=['a','b','c','d'],columns=['s','w','x','r'])s	w	x	r
a	6	28	84	27
b	1	56	92	66
c	46	46	3	91
d	4	81	1	51
行重置索引
s.reindex(['d','c','b','a'])s	w	x	r
d	4	81	1	51
c	46	46	3	91
b	1	56	92	66
a	6	28	84	27
行和列同时重置索引
s.reindex(index=['d','c','b','a'],columns=['r','x','w','s'])r	x	w	s
d	51	1	81	4
c	91	3	46	46
b	66	92	56	1
a	27	84	28	6
http://www.lryc.cn/news/65557.html

相关文章:

  • 使用rasterio裁剪遥感影像
  • BetaFlight统一硬件配置文件研读之set命令
  • QT+OpenGL高级数据和高级GLSL
  • 接口测试之Jmeter+Ant+Jenkins接口自动化测试平台
  • FPGA设计中锁存器产生、避免与消除
  • 一份标准的软件测试方案模板
  • 【C++】-对于自定义类型的输入输出运算符重载
  • (详解)js中什么是宏任务、微任务?宏任务、微任务有哪些?又是怎么执行的?
  • Okta 即代码:云原生时代的身份管理
  • 数据结构(六)—— 二叉树(7)构建二叉树
  • 安装适用于Linux的Windows11子系统(WSL2)
  • 使用Spring的五大类注解读取和存储Bean
  • Vue3通透教程【十一】初探TypeScript
  • Linux环境安装iperf3(网络性能测试工具)
  • 回顾第一章
  • Jupyter Notebook入门教程
  • 独立按键识别
  • 【论文阅读】AlphaFold2阅读笔记
  • 机器学习基础知识之数据归一化
  • QCC51XX---pydbg_cmd集合
  • camx 马达的MSM_ACTUATOR_WRITE_DAC 操作
  • 【无人机】无人机平台的非移动 GPS 干扰器进行位置估计的多种传感器融合算法的性能分析(Matlab代码实现)
  • 一篇文章搞定《RecyclerView缓存复用机制》
  • Elasticsearch概述
  • 停车场收费系统
  • nodejs+vue+elementui学生毕业生离校系统
  • 儿童用灯哪个品牌好?推荐专业的儿童护眼台灯
  • 探究Android插件化开发的新思路——Shadow插件化框架
  • SimpleDateFormat和DateTimeFormatter的区别及使用详解
  • 边缘人工智能——nanodet模型实践指引,从标注数据集到实现部署文件