pandas中使用std()函数时要额外注意的一个参数

std()是计算标准差的函数,使用时要额外注意ddof这个参数:

在ddof = 0时,计算的是总体标准偏差,标准差公式根号内除以 n。
在ddof = 1时,计算的是样本标准差,标准差公式根号内除以 (n-1)。

代码示例
ddof=0

>>> np.std([1,2,3])
0.81649658092772603

ddof=1

>>> np.std([1,2,3])
1
### 使用 Pandas DataFrame 剔除异常点的方法 在数据分析过程中,检测并移除异常值是一个常见的需求。以下是几种常用的技术来实现这一目标。 #### 方法一:基于标准差的异常值剔除 可以利用数值的标准差范围定义正常值区间,并排除超出该区间的值。 ```python import pandas as pd import numpy as np # 创建示例数据框 data = {'A': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 100]} df = pd.DataFrame(data) # 计算均值和标准差 mean_A = df['A'].mean() std_A = df['A'].std() # 定义阈值为均值加减 n 倍标准差 (n=3 是常见选择) lower_bound = mean_A - 3 * std_A upper_bound = mean_A + 3 * std_A # 过滤掉不在范围内的值 filtered_df = df[(df['A'] >= lower_bound) & (df['A'] <= upper_bound)] print(filtered_df) ``` 这种方法假设数据服从正态分布[^1]。 #### 方法二:基于四分位数(IQR)的异常值剔除 通过计算上下四分位数之间的距离(即 IQR),设定合理的边界条件以过滤异常值。 ```python Q1 = df['A'].quantile(0.25) Q3 = df['A'].quantile(0.75) IQR = Q3 - Q1 filter_condition = (df['A'] >= Q1 - 1.5 * IQR) & (df['A'] <= Q3 + 1.5 * IQR) cleaned_data = df.loc[filter_condition] print(cleaned_data) ``` 此方法不依赖于具体分布形式,在实际应用中更为稳健[^2]。 #### 方法三:自定义函数结合 `apply` 实现复杂逻辑判断 如果需要更灵活的方式处理不同列或者引入额外参数,则可考虑编写自定义函数配合 `.apply()` 来完成任务。 例如下面展示了一个简单的例子用于演示如何传递多个参数给测试函数: ```python def test(value, min_val, max_val): return min_val <= value <= max_val result = df.apply(lambda row: test(row['A'], 1, 10), axis=1) final_df = df[result] print(final_df) ``` 这里采用了 lambda 函数简化调用过程的同也实现了向量化的操作效率提升。 对于某些特定场景下可能还需要综合运用多种策略才能达到最佳效果;另外值得注意的是当面对多维特征空间单独考察每一维度可能会遗漏潜在的相关关系影响最终判定准确性因此建议视具体情况而定选用合适方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值