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

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.kler.cn/a/16892.html

相关文章:

  • jmeter常用配置元件介绍总结之定时器
  • springboot 之 整合springdoc2.6 (swagger 3)
  • 以往运维岗本人面试真题分享
  • 基于promtail+loki+grafana搭建日志系统
  • c#使用COM接口设置excel单元格宽高匹配图片,如何计算?
  • JUC-locks锁
  • 【WAF】雷池waf升级体验
  • IT行业里的热门技术和项目分享
  • RabbitMQ死信队列延迟交换机
  • java对BigDecimal数字位数验证
  • 【五一创作】医院手术室麻醉管理系统概述和功能 SQLServer 2008 R2
  • 轻松打造自己的聊天机器人:JAVA版ChatGPT
  • 表索引(索引的设计原则)详解
  • AI奇点将至 如何成为人工智能驱动型公司
  • 图像超分辨率简单介绍
  • DataEase 数据源插件分享 - 时序数据库 InfluxDB
  • 『python爬虫』05. requests模块入门(保姆级图文)
  • 2023爱分析·低代码开发平台市场厂商评估报告:数聚股份
  • 259页11万字智慧水利建设项目解决方案
  • vue项目为例解决element ui 时间选择器 picker使用样式穿透不起作用问题
  • 简明 JDBC 数据访问操作库:JdbcHelper(一)
  • Redis的哨兵和集群模式
  • Figma快速转换为Sketch文件格式的方法
  • 【软考高级】2017年系统分析师论文真题
  • ChatGPT根据销售数据、客户反馈、财务报告,自动生成报告,并根据不同利益方的需要和偏好进行调整?
  • Spring 5 笔记 - 入门与IOC