python - 针对在单个列中发现的离群值删除数据集的整行

标签 python pandas dataframe outliers

我目前正尝试使用中值绝对偏差法从我的数据集中删除离群值。

为此,我按照@tanemaki 在Detect and exclude outliers in Pandas data frame 中给出的说明进行操作。 ,这样可以删除包含至少一个离群值的整行。

在我链接的帖子中,提出了同样的问题,但没有得到回答。

问题是我只想在单个列中搜索异常值

因此,例如,我的数据框如下所示:


          Temperature    Date       
    1        24.72        2.3        
    2        25.76        4.6        
    3        25.42        7.0        
    4        40.31        9.3        
    5        26.21       15.6
    6        26.59       17.9        
 

例如数据中有两个'异常:

  • 第[4]行的温度值
  • 第 [5] 行中的日期值

因此,我想要的是离群值函数只“注意到”温度列中的异常,并删除其对应的行。

我使用的离群值代码是:

df=pd.read_excel(r'/home/.../myfile.xlsx')
from scipy import stats
df[pd.isnull(df)]=0
dfn=df[(np.abs(stats.zscore(df))<4).all(axis=1)] #@taneski
print(dfn)

我生成的数据框目前看起来像:


          Temperature    Date       
    1        24.72        2.3        
    2        25.76        4.6        
    3        25.42        7.0               
    6        26.59       17.9        

如果我没有传达我的信息,期望的输出将是:


          Temperature    Date       
    1        24.72        2.3        
    2        25.76        4.6        
    3        25.42        7.0  
    5        26.21       15.6         
    6        26.59       17.9        

任何指针都会有很大帮助。谢谢!

最佳答案

您始终可以将 stats.zscore 操作限制在 Temperature 列而不是整个 df 上。可能像这样:

In [573]: dfn = df[(np.abs(stats.zscore(df['Temperature']))<4)]                                                                                                                                             

In [574]: dfn                                                                                                                                                                                               
Out[574]: 
   Temperature  Date
1        24.72   2.3
2        25.76   4.6
3        25.42   7.0
5        26.21  15.6
6        26.59  17.9

关于python - 针对在单个列中发现的离群值删除数据集的整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61815114/

相关文章:

python - 查找两个不同数据框列之间的部分匹配,并在找到匹配时分配值

python - 如何提高Python中for循环的性能

python - flask "hello world"无法在 Debug模式下运行

python - 通过 int 从 DatetimeIndex 转换为 datetime64[s] 而不除以 1e9 可能吗?

python - 每两列的总和并在 Pandas 数据框中留下一列

python - 使用 Pandas 从另一个数据帧中删除一个数据帧

python - TreeViewColumn 标题中的 PyGTK 条目小部件

python - 从给定的 numpy 数组创建 block 对角 numpy 数组

python - 将列表设置为 Pandas 数据框列中的值

python - 当模式出现在另一列中时更改两列的值