Làm sạch dữ liệu
Làm sạch dữ liệu có nghĩa là sửa dữ liệu xấu trong tập dữ liệu của bạn.
Dữ liệu xấu có thể là:
- Tế bào trống
- Dữ liệu ở định dạng sai
- Dữ liệu sai
- Sao chép
Trong hướng dẫn này, bạn sẽ học cách đối phó với tất cả chúng.
Bộ dữ liệu của chúng tôi
Trong các chương tiếp theo, chúng tôi sẽ sử dụng bộ dữ liệu này:
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 2020/12/26 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
Bộ dữ liệu chứa một số ô trống ["Ngày" ở hàng 22 và "calo" trong hàng 18 và 28].
Bộ dữ liệu chứa định dạng sai ["Ngày" trong hàng 26].
Bộ dữ liệu chứa dữ liệu sai ["thời lượng" trong hàng 7].
Bộ dữ liệu chứa các bản sao [hàng 11 và 12].
Dữ liệu có định dạng sai
Các ô có dữ liệu có định dạng sai có thể gây khó khăn, hoặc thậm chí là không thể phân tích dữ liệu.
Để sửa nó, bạn có hai tùy chọn: Xóa các hàng hoặc chuyển đổi tất cả các ô trong các cột thành cùng một định dạng.
Chuyển đổi thành một định dạng chính xác
Trong khung dữ liệu của chúng tôi, chúng tôi có hai ô có định dạng sai. Kiểm tra hàng 22 và 26, cột 'Ngày' phải là một chuỗi đại diện cho một ngày:
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
Chúng ta hãy cố gắng chuyển đổi tất cả các ô trong cột 'Ngày' thành ngày.
Pandas có phương pháp to_datetime[]
cho việc này:
Thí dụ
Chuyển đổi đến ngày:
nhập khẩu gấu trúc dưới dạng PD
df = pd.read_csv ['data.csv']
df ['date'] = pd.to_dateTime [df ['date']]]
in [df.to_string []]]
Hãy tự mình thử »
Result:
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 NaT 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 '2020/12/26' 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
Như bạn có thể thấy từ kết quả, ngày trong hàng 26 đã được sửa, nhưng ngày trống trong hàng 22 có giá trị NAT [không phải thời gian], nói cách khác là một giá trị trống. Một cách để đối phó với các giá trị trống chỉ đơn giản là loại bỏ toàn bộ hàng.
Loại bỏ hàng
Kết quả từ việc chuyển đổi trong ví dụ trên đã cho chúng ta một giá trị NAT, có thể được xử lý dưới dạng giá trị null và chúng ta có thể loại bỏ hàng bằng cách sử dụng phương thức dropna[]
.
Thí dụ
Chuyển đổi đến ngày:
nhập khẩu gấu trúc dưới dạng PD
Hãy tự mình thử »