【发布时间】:2017-08-10 08:43:00
【问题描述】:
我是 Python 新手,我注意到 print() 这样的基本函数中有一些奇怪的地方
让代码解释一下。我想将观察的所有异常值保存在列表中。所以我写了以下sn-p:
#import numpy as np
def compute_outliers(obs):
outliers=[]
q1 = np.percentile(obs, 25)
q3 = np.percentile(obs, 75)
iqr = q3 - q1
print('q1: ', q1)
print('q3: ', q3)
lower_limit = q1 - 1.5 * iqr
upper_limit = q3 + 1.5 * iqr
for i in obs:
if i < lower_limit or i > upper_limit:
outliers.append(i)
return outliers
outliers = compute_outliers(data)
其中 data 是来自 pandas 库的 DataFrame 对象的一般特征(在“列”的意义上)。
现在,如果我录音
for i in outliers:
print(i)
输出没问题:
20.0
0.0
17.6
2.7
18.9
0.0
18.0
同时,如果我输入:
print(outliers)
这是输出:
[20.0, 0.0, 17.600000000000001, 2.7000000000000002, 18.899999999999999, 0.0, 18.0]
您可以看到值(第三个、第四个、第五个)是“脏”的。我应该简单地使用第一个代码进行打印,但我很好奇所有这些是如何工作的,所以我想知道为什么会发生这种情况。
编辑
我认为完成这个问题有助于了解如何“解决”这个问题,因此打印正确值的列表。你能帮忙吗?
【问题讨论】: