python 找到箱型图异常值并用均值替换
时间: 2023-09-15 12:20:05 浏览: 170
可以使用 pandas 和 numpy 库来实现。
首先,读取数据并绘制箱型图:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 读取数据
df = pd.read_csv('data.csv')
# 绘制箱型图
plt.boxplot(df['value'])
plt.show()
```
然后,计算箱型图的上下限:
```python
# 计算上下限
Q1 = np.percentile(df['value'], 25)
Q3 = np.percentile(df['value'], 75)
IQR = Q3 - Q1
lower_limit = Q1 - 1.5 * IQR
upper_limit = Q3 + 1.5 * IQR
```
接下来,找到异常值并用均值替换:
```python
# 找到异常值并用均值替换
outliers = (df['value'] < lower_limit) | (df['value'] > upper_limit)
df.loc[outliers, 'value'] = df['value'].mean()
```
最后,重新绘制箱型图:
```python
# 重新绘制箱型图
plt.boxplot(df['value'])
plt.show()
```
完整代码如下:
```python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
# 读取数据
df = pd.read_csv('data.csv')
# 绘制箱型图
plt.boxplot(df['value'])
plt.show()
# 计算上下限
Q1 = np.percentile(df['value'], 25)
Q3 = np.percentile(df['value'], 75)
IQR = Q3 - Q1
lower_limit = Q1 - 1.5 * IQR
upper_limit = Q3 + 1.5 * IQR
# 找到异常值并用均值替换
outliers = (df['value'] < lower_limit) | (df['value'] > upper_limit)
df.loc[outliers, 'value'] = df['value'].mean()
# 重新绘制箱型图
plt.boxplot(df['value'])
plt.show()
```
阅读全文