Pandas实现单元格与分组聚合值运算的优化方法
优化实现方案
方案1:使用pandas原生groupby.transform(推荐,无需额外依赖)
transform 方法会将分组聚合后的结果按原数据的行顺序映射返回,不需要额外的表合并、临时列删除操作,代码更简洁,大数据量下性能远高于merge方案。
示例代码如下:
import pandas as pd # 生成示例数据 df=pd.DataFrame({'Month':['October','October','October','November','November'], 'Apples Sold':[3,4,5,1,5]}) # 先计算分组均值避免重复聚合,性能更优 month_mean = df.groupby('Month')['Apples Sold'].transform('mean') df['variaton_month'] = (df['Apples Sold'] - month_mean) / month_mean
方案2:超大数据量场景使用Polars
如果你的数据集达到千万行及以上规模,可以使用Polars库,其并行计算特性会比pandas有3~10倍的性能提升,示例代码如下:
import polars as pl # 生成示例数据 df = pl.DataFrame({'Month':['October','October','October','November','November'], 'Apples Sold':[3,4,5,1,5]}) # 分组计算并新增列 df = df.with_columns( ((pl.col('Apples Sold') - pl.col('Apples Sold').mean().over('Month')) / pl.col('Apples Sold').mean().over('Month')) .alias('variaton_month') )
内容的提问来源于stack exchange,提问作者jmauricio
相关产品推荐
相关产品推荐

