pandas的DataFrame.describe()是否会默认忽略异常值?
核心结论
df.describe()默认不会忽略任何异常值,如果你需要基于过滤后的数据生成统计摘要,提前做zscore筛选是必要操作,不会重复。
df.describe()的计算逻辑
它输出的最小值、四分位数、中位数、最大值、均值、标准差等所有统计指标,都是基于当前DataFrame列的全部非空值计算的,没有内置任何离群值过滤规则,不管数值偏离群体多远都会被纳入计算。
对比无差异的原因
你给seaborn箱线图设置的「忽略异常值」,本质是调用showfliers=False参数,这个设置仅控制不绘制超出须线范围的离群点,不会改变箱线本身的计算逻辑:默认箱线的箱体、须线都是基于全量数据的四分位数、1.5倍IQR规则计算的,和df.describe()的分位数计算数据源一致,自然看不出差异。
操作建议
如果你希望统计摘要和箱线图都对应过滤异常值后的数据集,需要先完成zscore筛选、移除异常值后,再分别运行df.describe()和绘制箱线图,pandas不会自动完成异常值过滤步骤,无需担心重复操作。
内容的提问来源于stack exchange,提问作者sudden_clarity_clarence
相关产品推荐
相关产品推荐

