gpt4 book ai didi

python - 根据百分位数从 Pandas 数据框中排除数据

转载 作者:太空宇宙 更新时间:2023-11-04 01:03:59 25 4
gpt4 key购买 nike

在生成散点图之前,我在尝试使用 Python 删除一些数据异常值时遇到了困难。我有一个使用 pandas 导入的 n x 43 数据框。我已经弄清楚如何确定异常值的阈值并将其应用于数据框,这样我现在就有了一些 bool 值,这些值对应于数据是否应该包含在散点图中。然而,我仍然坚持如何使用这些信息来排除适当的数据点。

到目前为止我的代码:

def identify_outliers(self,parameters_file):
data=pandas.read_csv(parameters_file) #import data
header=data.keys() #get header
quantiles = data.quantile([0.25,0.75],1) #determine thresholds for all data
for i in range(len(header)):
qnt_i = quantiles[header[i]].as_matrix() #get handle to quantiles
#for specific column of data
#identify data points that fall outside this range
boolean_data=data[header[i]].between(qnt_i[0],qnt_i[1])
for j in range(len(boolean_data)): #attempt to use boolean values to filter
#data to only include 'True' (doesn't work)
if boolean_data[j]:
print data[header[i]]

这是使用 pandas.read_csv 导入的一段数据

(v1).Kcat   (v1).km     (v11).k1
1.22E-02 1.20E-02 1.72E-06
0.0122441 1.42E-02 1.61E-06
1.04E-02 1.01E-02 1.00E-06
0.0136581 0.0185623 5.01158
0.0113221 0.0221445 0.0785929
0.506949 0.01 1.35E-06
1.16567 0.0141031 168.078
0.01 0.0100055 1.25E-06
0.0351003 153.682 163.082
0.0129821 0.0164996 0.0560866

有没有人建议我如何过滤“数据”以删除所有不在指定范围内的值。

最佳答案

这是一个仅基于前 5 行的较小数据框。

df

v1 v2 v3
0 0.012200 0.012000 0.000002
1 0.012244 0.014200 0.000002
2 0.010400 0.010100 0.000001
3 0.013658 0.018562 5.011580
4 0.011322 0.022145 0.078593

这里的掩码仅选择第 25 个和第 75 个百分位数之间的值。请注意,此语法有些精确,因此请注意括号等。

 ( df > df.quantile(.25) ) & ( df < df.quantile(.75) )

v1 v2 v3
0 True True True
1 True True True
2 False False False
3 True False False
4 False False True

顺便说一句,这是基于列的。我只是快速浏览了您的代码,无法轻易判断百分位数度量是针对每列还是针对 3 列的组合。对于整个数据框,您可以执行以下操作:

( df > df.stack().quantile(.25) ) & ( df < df.stack().quantile(.75) )

关于python - 根据百分位数从 Pandas 数据框中排除数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31478420/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com