pandas用正态分布的方法。查找指定列异常值,并打印所在的行的全部信息但异常值用红色显示
时间: 2024-05-16 21:14:22 浏览: 135
可以使用`pandas`和`matplotlib`库来实现。
首先,读取数据文件,假设数据文件名为`data.csv`,然后选择需要使用的列,假设需要使用的列名为`col_name`:
```python
import pandas as pd
import matplotlib.pyplot as plt
# 读取数据文件
data = pd.read_csv("data.csv")
# 选择需要使用的列
col_name = "col_name"
col_data = data[col_name]
```
接下来,使用正态分布的方法来检测异常值,并将其标记为红色:
```python
# 计算均值和标准差
mean = col_data.mean()
std = col_data.std()
# 计算上下界
upper_bound = mean + 3 * std
lower_bound = mean - 3 * std
# 标记异常值为红色
fig, ax = plt.subplots()
ax.plot(col_data, 'bo')
ax.plot([0, len(col_data)], [upper_bound, upper_bound], 'r--')
ax.plot([0, len(col_data)], [lower_bound, lower_bound], 'r--')
# 打印异常值所在的行的全部信息
for i in range(len(col_data)):
if col_data[i] > upper_bound or col_data[i] < lower_bound:
print("Row " + str(i) + ":")
print(data.iloc[i])
```
其中`data.iloc[i]`表示数据中第`i`行的全部信息。如果需要将异常值所在的行的全部信息保存到文件中,可以使用`to_csv`方法:
```python
# 打印异常值所在的行的全部信息,并保存到文件中
with open("output.csv", "w") as f:
for i in range(len(col_data)):
if col_data[i] > upper_bound or col_data[i] < lower_bound:
print("Row " + str(i) + ":")
print(data.iloc[i])
data.iloc[i].to_csv(f)
```
这样就可以找到指定列的异常值,并将其标记为红色,并且打印或保存异常值所在的行的全部信息。
阅读全文