Python 删除单个列中发现的异常值数据集的整行
我目前正在尝试使用中位数绝对偏差方法从数据集中删除异常值 为此,我按照中@tanemaki给出的说明进行操作,它允许删除至少包含一个离群值的整行 在我链接的帖子中,有人问了同样的问题,但没有得到回答 问题是我只希望在单个列中搜索异常值 例如,我的数据框看起来像:Python 删除单个列中发现的异常值数据集的整行,python,pandas,dataframe,outliers,Python,Pandas,Dataframe,Outliers,我目前正在尝试使用中位数绝对偏差方法从数据集中删除异常值 为此,我按照中@tanemaki给出的说明进行操作,它允许删除至少包含一个离群值的整行 在我链接的帖子中,有人问了同样的问题,但没有得到回答 问题是我只希望在单个列中搜索异常值 例如,我的数据框看起来像: 温度日期 1 24.72 2.3 2 25.76 4.6 3 25.42 7.0 4 4
温度日期
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)
如果我没有传达我的信息,所需的输出将是:
温度日期
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
In[573]:dfn=df[(np.abs(stats.zscore(df['Temperature']))目前,您正在计算整个数据帧的zscore,然后用这些计算出的分数过滤数据帧;您要做的就是将相同的想法应用于一列
而不是
dfn=df[(np.abs(stats.zscore(df))您如何做同样的事情,但是在为两列而不是一列查找异常值的基础上?我尝试了(['Temperature'],['Date']),但没有运气。谢谢!您可以这样做:df[(df['Temperature']<4)&df['Date'='2020-05-20')]
。这将基于这两个条件创建数据框。原始答案中的解决方案是否取决于具体情况或其他情况?我正在尝试将其用于另一个列数较高且不起作用的电子表格(我编辑了带有此问题的帖子)你的答案中的解决方案是有条件的还是有条件的?我正在尝试将它用于另一个列数较多的电子表格,但它不起作用(我编辑了带有该问题的帖子)