Python数据分组计算利器:Transform函数

使用Python进行数据清洗时,需要对数据进行分组计算,一般使用’goupby+计算函数’,但是返回的结果并不是原来表格的格式。或者是使用遍历的方式,将每组计算的结果返回到原表格中。

Transform是Pandas中的一个函数,它用于在dataframe中对数据进行转换或操作,并且按照原来的Dataframe格式输出结果。transform函数通常用于按照分组的方式对数据进行操作,例如对每个组进行标准化、填充缺失值等。

PS: 虽然标准化、缺失值填充现在都有sklearn都有对应的函数,但是直接调用Transform还是目前了解到的最方便的分组处理方法。

语法参数介绍

df.transform(func, axis=0, *args, **kwargs)

其中,

  • 参数func是一个函数,它定义了对数据进行的操作,可以是一个内置函数或用户自定义函数;
  • 参数axis指定了操作的方向,可以是0表示对列进行操作,1表示对行进行操作,默认值为0。
  • 另外,还可以使用可选参数*args和****kwargs**传递给func函数。

常用的内置函数介绍:

函数名称解释
sum()对数据进行求和操作。
mean()对数据进行求平均值操作。
median()对数据进行求中位数操作。
min()对数据进行求最小值操作。
max()对数据进行求最大值操作。
count()对数据进行计数操作。
cumsum()对数据进行累计求和操作。
cumprod()对数据进行累计乘积操作。
cummax()对数据进行累计最大值操作。
cummin()对数据进行累计最小值操作。
rank()对数据进行排名操作。
diff()对数据进行差分操作。
pct_change()对数据进行百分比变化操作。

使用代码案例

import pandas as pd
import numpy as np

# 创建一个数据框
df = pd.DataFrame({'group': ['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C'],
                   'data': [1, 2, 3, 4, 5, 6, 7, np.nan, 9]})

# 对数据框按照分组进行标准化
df['data_standardized'] = df.groupby('group')['data'].transform(lambda x: (x - np.mean(x)) / np.std(x))

# 对数据框按照分组,取该组最后一个值
df['data_last'] = df.groupby('group')['data'].transform('last')

# 对数据框按照分组,对空值进行平均值填充
df['data_filled'] = df.groupby('group')['data'].transform(lambda x: x.fillna(x.mean()))

# 打印输出结果
print(df)

在这里插入图片描述

Labmda Vs 内置函数 该使用哪个更好?

#labmda 
df['lam_sum_by_group'] = df.groupby('group')['data'].transform(lambda x: x.sum())
#直接调用内置函数
df['sum_by_group'] = df.groupby('group')['data'].transform('sum')
#结果查看
df

在这里插入图片描述
最后结果是一致的。 两种方法的作用是相同的,都是对"df"按照"group"进行分组,然后在每个组内计算"data"列的和。

两者的区别在于函数的传递方式。

使用lambda函数可以更加灵活的操作,包括使用任意的Python表达式和语句和自定义函数。而调用内置函数只能使用原本系统定义好的函数。但是,在性能上,使用内置函数要比使用lambda函数更加高效。具体使用哪种方式需要根据实际情况进行选择。

参考资料;
这个总结的也很全面:【Python】Pandas中的宝藏函数-transform()

  • 6
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值