Gấu trúc - Làm sạch dữ liệu có định dạng sai


Dữ liệu có định dạng sai

Các ô có dữ liệu sai định dạng có thể gây khó khăn, hoặc thậm chí không thể phân tích dữ liệu.

Để khắc phục, bạn có hai tùy chọn: loại bỏ các hàng hoặc chuyển đổi tất cả các ô trong cột thành cùng một định dạng.


Chuyển đổi thành một định dạng đúng

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

Hãy thử chuyển đổi tất cả các ô trong cột 'Ngày' thành ngày tháng.

Pandas có một to_datetime()phương pháp cho việc này:

Thí dụ

Chuyển đổi sang ngày:

import pandas as pd

df = pd.read_csv('data.csv')

df['Date'] = pd.to_datetime(df['Date'])

print(df.to_string())

Kết quả:

      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 cố định, nhưng ngày trống trong hàng 22 có giá trị NaT (Không phải Thời gian), hay nói cách khác là một giá trị trống. Một cách để xử lý các giá trị trống đơn giản là xóa toàn bộ hàng.


w3schools CERTIFIED . 2021

Được chứng nhận!

Hoàn thành các mô-đun Pandas, làm bài tập, làm bài kiểm tra và bạn sẽ được chứng nhận w3schools!

$ 10 ĐĂNG KÝ

Xóa 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, giá trị này có thể được xử lý như một giá trị NULL và chúng ta có thể loại bỏ hàng bằng cách sử dụng dropna()phương thức này.

Thí dụ

Loại bỏ các hàng có giá trị NULL trong cột "Ngày":

df.dropna(subset=['Date'], inplace = True)