【问题标题】:How to detect and remove outliers in dataframe如何检测和删除数据框中的异常值
【发布时间】:2021-11-25 01:46:55
【问题描述】:

我有一个数据集 this

{'SYMBOL': {0: 'BAF180', 1: 'ACTL6A', 2: 'DMAP1', 3: 'C1orf149', 4: 'YEATS4'}, '基因名称': {0 : ';PB1;BAF180;MGC156155;MGC156156;PBRM1;', 1: ';ACTL6A;ACTL6;BAF53A;MGC5382;', 2: ';DMAP1;DKFZp686L09142;DNMAP1;DNMTAP1;FLJ11543;KIAA1425;EAF2;SWC4;' , 3: ';FLJ11730;CDABP0189;C1orf149;NY-SAR-91;RP3-423B22.2;Eaf6;', 4: ';YEATS4;4930573H17Rik;B230215M10Rik;GAS41;NUBI-1;YAF9;'}, '说明':{0:'多溴 1',1:'BAF 复合物 53 kDa 亚基|BAF53|BRG1 相关因子|肌动蛋白相关蛋白|hArpN β;肌动蛋白样6A',2:'DNA甲基转移酶1相关蛋白1; DNMT1相关蛋白1',3:'假设蛋白LOC64769|肉瘤抗原NY-SAR-91;染色体 1 开放阅读框 149',4:'NuMA 结合蛋白 1|神经胶质瘤扩增序列 41; YEATS 域包含 4'}, 'G.O. PROCESS':{0:'转录',1:'转录',2:'转录',3:'转录',4:'转录'},'TurboSEQUESTScore':{0:70.29,1:80.29,2: 34.18, 3: 30.32, 4: 40.18}, '覆盖率%': {0: 6.7, 1: 28.0, 2: 10.7, 3: 24.2, 4: 21.1}, 'KD': {0: 183572.3, 1: 47430.4 , 2: 52959.9, 3: 21501.9, 4: 26482.7}, '基因库登录号': {0: 30794372, 1: 4757718, 2: 13123776, 3: 29164895, 4: 5729838}, 'MS/MS 肽号' :{0:'9(9 0 0 0 0)',1:'9(9 0 0 0 0)',2:'4(3 0 0 1 0)',3:'3(3 0 0 0 0)', 4: '4 (4 0 0 0 0)'}}

我想使用 3 倍的标准差作为异常值的阈值来检测和删除列 TurboSEQUESTScore 上的异常值我该怎么做?这是我尝试过的。

dataframe的名字是rename_df

z_scores = stats.zscore(rename_df['TurboSEQUESTScore'])
abs_z_scores = np.abs(z_scores)
filtered_entries = (abs_z_scores < 3).all(axis=None)

我似乎没有正确解决这个问题。

【问题讨论】:

  • 请将您的数据框样本粘贴为文本,而不是图像。
  • 我刚做了,不确定它看起来不错还是可读
  • 使用print(df.head().to_dict())。这将显示复制/粘贴 JSON。
  • 另外,您遇到了什么问题:获取 stddev 或修剪异常值,或两者兼而有之?
  • 修剪异常值

标签: python pandas dataframe


【解决方案1】:

您只是正确地接近它,但只需将布尔值 abs_z_scores &lt; 3 传递给您的数据框,即 rename_df[(abs_z_scores &lt; 3)],以获取所需的数据框,然后将其存储在您选择的任何变量中。

这将在一行中完成工作并且更具可读性-

import numpy as np
from scipy import stats
filtered_rename_df = rename_df[(np.abs(stats.zscore(rename_df["TurboSEQUESTScore"])) < 3)]

在使用z-score 删除异常值后,您将获得一个名为filtered_rename_df 的新数据框,其中包含过滤后的条目

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-10-26
    • 2018-10-08
    • 1970-01-01
    • 2020-10-12
    • 2018-03-04
    • 2021-03-24
    • 1970-01-01
    • 2022-12-22
    相关资源
    最近更新 更多