python如何在csv文件中添加通过3sigam判定来离散点异常,并且画出来
时间: 2023-12-10 12:37:53 浏览: 22
可以使用 Pandas 和 Matplotlib 库来实现。首先,读取 csv 文件并将数据存储在 Pandas 的 DataFrame 中:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 读取 csv 文件
data = pd.read_csv('data.csv')
# 将数据存储在 DataFrame 中
df = pd.DataFrame(data)
```
接下来,使用 3sigma 判定法来判断离散点异常,并将其标记为 True:
```python
# 计算均值和标准差
mean = df['value'].mean()
std = df['value'].std()
# 通过 3sigma 判定法来判断离散点异常
df['is_outlier'] = abs(df['value'] - mean) > 3 * std
```
最后,使用 Matplotlib 库来画出离散点异常的散点图:
```python
# 将异常点标记为红色
plt.scatter(df.index, df['value'], c=df['is_outlier'].map({True: 'red', False: 'blue'}))
# 添加图例
plt.legend(handles=[mpatches.Patch(color='red', label='Outlier'), mpatches.Patch(color='blue', label='Normal')])
plt.show()
```
完整代码如下:
```python
import pandas as pd
import matplotlib.pyplot as plt
import matplotlib.patches as mpatches
# 读取 csv 文件
data = pd.read_csv('data.csv')
# 将数据存储在 DataFrame 中
df = pd.DataFrame(data)
# 计算均值和标准差
mean = df['value'].mean()
std = df['value'].std()
# 通过 3sigma 判定法来判断离散点异常
df['is_outlier'] = abs(df['value'] - mean) > 3 * std
# 将异常点标记为红色
plt.scatter(df.index, df['value'], c=df['is_outlier'].map({True: 'red', False: 'blue'}))
# 添加图例
plt.legend(handles=[mpatches.Patch(color='red', label='Outlier'), mpatches.Patch(color='blue', label='Normal')])
plt.show()
```
其中,假设 csv 文件中有一列名为 value 的数据。可以根据自己的实际情况进行修改。