Pandas - 修复错误数据
错误数据
"错误数据" 不一定是指 "空单元格" 或 "错误格式",它可能只是错误的,例如,如果有人输入了 "199" 而不是 "1.99"。
有时,您可以通过查看数据集来发现错误数据,因为您对它应该是什么有预期。
如果您查看我们的数据集,您会发现第 7 行的持续时间为 450,但所有其他行的持续时间都在 30 到 60 之间。
它不一定是错误的,但考虑到这是一个人的锻炼课程的数据集,我们得出结论,这个人并没有锻炼 450 分钟。
Duration Date Pulse Maxpulse Calories
0 60 '2020/12/01' 110 130 409.1
1 60 '2020/12/02' 117 145 479.0
2 60 '2020/12/03' 103 135 340.0
3 45 '2020/12/04' 109 175 282.4
4 45 '2020/12/05' 117 148 406.0
5 60 '2020/12/06' 102 127 300.0
6 60 '2020/12/07' 110 136 374.0
7 450 '2020/12/08' 104 134 253.3
8 30 '2020/12/09' 109 133 195.1
9 60 '2020/12/10' 98 124 269.0
10 60 '2020/12/11' 103 147 329.3
11 60 '2020/12/12' 100 120 250.7
12 60 '2020/12/12' 100 120 250.7
13 60 '2020/12/13' 106 128 345.3
14 60 '2020/12/14' 104 132 379.3
15 60 '2020/12/15' 98 123 275.0
16 60 '2020/12/16' 98 120 215.2
17 60 '2020/12/17' 100 120 300.0
18 45 '2020/12/18' 90 112 NaN
19 60 '2020/12/19' 103 123 323.0
20 45 '2020/12/20' 97 125 243.0
21 60 '2020/12/21' 108 131 364.2
22 45 NaN 100 119 282.0
23 60 '2020/12/23' 130 101 300.0
24 45 '2020/12/24' 105 132 246.0
25 60 '2020/12/25' 102 126 334.5
26 60 20201226 100 120 250.0
27 60 '2020/12/27' 92 118 241.0
28 60 '2020/12/28' 103 132 NaN
29 60 '2020/12/29' 100 132 280.0
30 60 '2020/12/30' 102 129 380.3
31 60 '2020/12/31' 92 115 243.0
我们如何修复错误的值,例如第 7 行 "持续时间" 的值?
替换值
修复错误值的一种方法是用其他东西替换它们。
在我们的示例中,它很可能是一个输入错误,值应该是 "45" 而不是 "450",我们可以将 "45" 插入到第 7 行。
对于小型数据集,您可能能够逐个替换错误数据,但对于大型数据集则不行。
要替换大型数据集中的错误数据,您可以创建一些规则,例如,为合法值设置一些边界,并替换任何超出边界的的值。
示例
遍历 "持续时间" 列中的所有值。
如果值大于 120,则将其设置为 120
for x in df.index
if df.loc[x, "Duration"] > 120
df.loc[x, "Duration"] = 120
自己尝试 »
删除行
处理错误数据的另一种方法是删除包含错误数据所在的行。
这样,您就不必找出用什么来替换它们,而且很有可能您不需要它们来进行分析。
示例
删除 "持续时间" 大于 120 的行
for x in df.index
if df.loc[x, "Duration"] > 120
df.drop(x, inplace = True)
自己尝试 »