Pandas - 修復錯誤資料
錯誤資料
"錯誤資料" 不一定就是“空單元格”或“格式錯誤”,它也可能就是資料本身錯了,例如,有人輸入了“1.99”而不是“199”。
有時,透過檢視資料集,你就能發現錯誤資料,因為你對它應該是什麼樣子有所預期。
如果我們檢視資料集,你會發現第 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 行的“Duration”?
替換值
修復錯誤值的一種方法是用其他值來替換它們。
在我們的例子中,這很可能是一個輸入錯誤,該值應該是“45”而不是“450”,我們可以直接在第 7 行插入“45”。
對於小型資料集,你可能可以逐個替換錯誤資料,但對於大型資料集則不行。
對於大型資料集,你可以建立一些規則來替換錯誤資料,例如,為合法值設定一些邊界,然後替換任何超出邊界的值。
示例
迴圈遍歷“Duration”列中的所有值。
如果值大於 120,則將其設定為 120
for x in df.index
if df.loc[x, "Duration"] > 120
df.loc[x, "Duration"] = 120
自己動手試一試 »
刪除行
處理錯誤資料的另一種方法是刪除包含錯誤資料的行。
這樣你就無需弄清楚用什麼來替換它們,而且很可能你不需要它們來做分析。
示例
刪除“Duration”大於 120 的行
for x in df.index
if df.loc[x, "Duration"] > 120
df.drop(x, inplace = True)
自己動手試一試 »