如何计算DataFrame指定列均值并排除特定异常值
排除特定异常值计算DataFrame列均值的实现方法
场景说明
需要计算DataFrame df_cleaned 中trans_quantity列的均值,但要排除异常值10,000,且不能修改原DataFrame中的数据。当前直接调用.mean()的代码会包含该异常值,需要调整实现逻辑。
解决方案
以下几种方法都能实现需求,且不会改动原数据:
布尔索引过滤法
先通过布尔条件筛选出不等于异常值的行,再计算均值:# 注意:如果trans_quantity是数值类型,异常值应为10000(无逗号),去掉引号即可 avg_num_items = df_cleaned[df_cleaned['trans_quantity'] != '10,000']['trans_quantity'].mean()loc索引筛选法
使用loc同时指定行条件和列名,逻辑更清晰:avg_num_items = df_cleaned.loc[df_cleaned['trans_quantity'] != '10,000', 'trans_quantity'].mean()query方法过滤法
适合更复杂的过滤条件,语法更接近自然语言:avg_num_items = df_cleaned.query("trans_quantity != '10,000'")['trans_quantity'].mean()
注意事项
如果trans_quantity列是数值类型,异常值10,000通常会存储为10000(无逗号格式),此时需要把代码中的'10,000'改为10000(去掉引号)。
内容的提问来源于stack exchange,提问作者Ellendejefferes
相关产品推荐
相关产品推荐

