dataframe如何进行异常值处理
时间: 2023-09-15 14:16:35 浏览: 89
Task3 特征工程
DataFrame可以使用以下方法进行异常值处理:
1. 基于标准差的方法:使用标准差来判断数据是否属于正常范围。可以使用Pandas中的std()函数来计算标准差,并根据数据的均值和标准差来确定异常值的范围。例如,可以使用以下代码将超过2个标准差的值设为NaN:
```python
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'B': [5, 8, 7, 6, 2, 1, 3, 4, 9, 10]})
mean = np.mean(df['A'])
std = np.std(df['A'])
df['A'] = np.where(df['A'] > mean + 2*std, np.nan, df['A'])
```
2. 基于箱线图的方法:使用箱线图来识别异常值,箱线图可以使用Pandas中的boxplot()函数来绘制。箱线图展示了数据的中位数、上下四分位数、最小值和最大值,通过观察数据是否在箱线范围内来判断是否存在异常值。
```python
import pandas as pd
df = pd.DataFrame({'A': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'B': [5, 8, 7, 6, 2, 1, 3, 4, 9, 10]})
q1 = df.quantile(0.25)
q3 = df.quantile(0.75)
iqr = q3 - q1
df = df[~((df < (q1 - 1.5 * iqr)) | (df > (q3 + 1.5 * iqr))).any(axis=1)]
```
3. 基于域值的方法:使用预定义的域值来判断数据是否为异常值。例如,可以根据业务需求,将超过某个阈值的数据设置为NaN。可以使用Pandas中的where()函数来实现。
```python
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 2, 3, 4, 5, 6, 7, 8, 9, 10],
'B': [5, 8, 7, 6, 2, 1, 3, 4, 9, 10]})
df['A'] = np.where(df['A'] > 8, np.nan, df['A'])
```
阅读全文