【发布时间】:2017-12-26 23:14:03
【问题描述】:
我有一个包含两列的数据框:
'Transmission' (object)
'City MPG (FT1)' (int64)
箱线图显示,一些异常值的传输是有价值的。手动 5 速(“变速器”列中的一种变速器类型)有很多异常值。
我想通过检查分位数的值来删除具有异常值的行。
q_99 = data["City MPG (FT1)"].quantile(0.99)
q_1 = data["City MPG (FT1)"].quantile(0.01)
然后像这样检查具有异常值的行:
data[(data["City MPG (FT1)"] > q_99) | (data["City MPG (FT1)"] < q_1)]
所以每一个高于 0.99 分位数的值和低于 0.01 分位数的每一个值。但是这种方式很容易从“传输”列中获取没有相关传输的异常值。如何添加条件以及删除这些行的代码是什么?
编辑: 我不能发布整个 DF,因为它有 32k 行,显示太多了。 以下是 Dataframe 的前 10 行:
data = pd.DataFrame({'Transmission':['Manual 5-Speed',
'Manual 5-Speed',
'Manual 5-Speed',
'Manual 5-Speed',
'Automatic 3-Speed',
'Automatic 3-Speed',
'Automatic 3-Speed',
'Automatic 3-Speed',
'Automatic 3-Speed',
'Automatic 3-Speed'],
'City MPG (FT1)':[17,17,18,
18,18,18,
13,13,15,16]})
【问题讨论】:
-
您介意与我们分享您原始 df 的一部分吗?可能是
df.to_dict()。谢谢 -
是的,我会的。但我只会向你们展示其中的一部分,因为它有 32k 行。
-
请检查您的
data第二列有 9 个元素,而第一列有 10 个元素。然后你的数据在分位数之外没有值 -
请更正
data[(data["City MPG (FT1)"] > q_100) | (data["City MPG (FT1)"] < q_0)]中的拼写错误 -
无论如何,除了错别字,对我来说它是有效的。我的意思是我可以看到两列