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 ได้อย่างไร
ได้รับการรับรอง!
$10 ลงทะเบียน
การแทนที่ค่า
วิธีหนึ่งในการแก้ไขค่าที่ไม่ถูกต้องคือการแทนที่ด้วยค่าอื่น
ในตัวอย่างของเรา มีความเป็นไปได้สูงที่จะพิมพ์ผิด และค่าควรเป็น "45" แทนที่จะเป็น "450" และเราสามารถแทรก "45" ในแถวที่ 7 ได้:
ตัวอย่าง
ตั้งค่า "ระยะเวลา" = 45 ในแถวที่ 7:
df.loc[7, 'Duration'] = 45
สำหรับชุดข้อมูลขนาดเล็ก คุณอาจสามารถแทนที่ข้อมูลที่ไม่ถูกต้องได้ทีละชุด แต่ไม่ใช่สำหรับชุดข้อมูลขนาดใหญ่
ในการแทนที่ข้อมูลที่ไม่ถูกต้องสำหรับชุดข้อมูลที่ใหญ่ขึ้น คุณสามารถสร้างกฎเกณฑ์บางอย่างได้ เช่น กำหนดขอบเขตสำหรับค่าทางกฎหมาย และแทนที่ค่าใดๆ ที่อยู่นอกขอบเขต
ตัวอย่าง
วนซ้ำค่าทั้งหมดในคอลัมน์ "ระยะเวลา"
หากค่ามากกว่า 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)