Tính thống nhất

Làm sạch dữ liệu với Python

Adel Nehme

VP of AI Curriculum, DataCamp

Trong chương này

 

 

 

 

 

 

Chương 3 - Vấn đề dữ liệu nâng cao

Làm sạch dữ liệu với Python

Ràng buộc khoảng dữ liệu

range_examples

Làm sạch dữ liệu với Python

Tính thống nhất

Cột Đơn vị
Temperature 32°C cũng là 89.6°F
Weight 70 Kg cũng là 11 st.
Date 26-11-2019 cũng là 26, November, 2019
Money 100$ cũng là 10763.90¥
Làm sạch dữ liệu với Python

Ví dụ

temperatures = pd.read_csv('temperature.csv')
temperatures.head()
       Date  Temperature
0  03.03.19         14.0
1  04.03.19         15.0
2  05.03.19         18.0
3  06.03.19         16.0
4  07.03.19         62.6
Làm sạch dữ liệu với Python

Ví dụ

temperatures = pd.read_csv('temperature.csv')
temperatures.head()
       Date  Temperature
0  03.03.19         14.0
1  04.03.19         15.0
2  05.03.19         18.0
3  06.03.19         16.0
4  07.03.19         62.6   <--
Làm sạch dữ liệu với Python

Ví dụ

# Import matplotlib
import matplotlib.pyplot as plt

# Tạo biểu đồ phân tán plt.scatter(x = 'Date', y = 'Temperature', data = temperatures)
# Tạo tiêu đề, nhãn trục x và y plt.title('Temperature in Celsius March 2019 - NYC') plt.xlabel('Dates') plt.ylabel('Temperature in Celsius')
# Hiển thị biểu đồ plt.show()
Làm sạch dữ liệu với Python

Làm sạch dữ liệu với Python

Làm sạch dữ liệu với Python

Xử lý dữ liệu nhiệt độ

$$C = (F - 32) \times \frac{5}{9}$$

 

temp_fah = temperatures.loc[temperatures['Temperature'] > 40, 'Temperature']

temp_cels = (temp_fah - 32) * (5/9)
temperatures.loc[temperatures['Temperature'] > 40, 'Temperature'] = temp_cels
# Kiểm tra chuyển đổi đúng
assert temperatures['Temperature'].max() < 40
Làm sạch dữ liệu với Python

Xử lý dữ liệu ngày tháng

birthdays.head()
          Birthday First name Last name
0         27/27/19      Rowan     Nunez
1         03-29-19      Brynn      Yang
2  March 3rd, 2019     Sophia    Reilly
3         24-03-19     Deacon    Prince
4         06-03-19   Griffith      Neal
Làm sạch dữ liệu với Python

Xử lý dữ liệu ngày tháng

birthdays.head()

Bảng hiển thị đầu ra của tập birthdays - một hàng có định dạng tháng/ngày/năm; một hàng viết đầy đủ; một hàng rõ ràng sai khi lặp ngày hai lần.

Làm sạch dữ liệu với Python

Định dạng datetime

datetime hữu ích để biểu diễn ngày tháng

Date định dạng datetime
25-12-2019 %d-%m-%Y
December 25th 2019 %c
12-25-2019 %m-%d-%Y
... ...

pandas.to_datetime()

  • Tự nhận diện hầu hết định dạng
  • Đôi khi lỗi với định dạng sai hoặc lạ
Làm sạch dữ liệu với Python

Xử lý dữ liệu ngày tháng

# Chuyển sang datetime - nhưng sẽ lỗi!
birthdays['Birthday'] = pd.to_datetime(birthdays['Birthday'])
ValueError: month must be in 1..12
# Cách này sẽ chạy!
birthdays['Birthday'] = pd.to_datetime(birthdays['Birthday'],
                                       # Trả về NA cho hàng chuyển đổi thất bại
                                       errors = 'coerce')
Làm sạch dữ liệu với Python

Xử lý dữ liệu ngày tháng

birthdays.head()
    Birthday First name Last name
0        NaT      Rowan     Nunez
1 2019-03-29      Brynn      Yang
2 2019-03-03     Sophia    Reilly
3 2019-03-24     Deacon    Prince
4 2019-06-03   Griffith      Neal
Làm sạch dữ liệu với Python

Xử lý dữ liệu ngày tháng

birthdays['Birthday'] = birthdays['Birthday'].dt.strftime("%d-%m-%Y")
birthdays.head()
     Birthday First name Last name
0         NaT      Rowan     Nunez
1  29-03-2019      Brynn      Yang
2  03-03-2019     Sophia    Reilly
3  24-03-2019     Deacon    Prince
4  03-06-2019   Griffith      Neal
Làm sạch dữ liệu với Python

Xử lý ngày tháng mơ hồ

 

Ngày 2019-03-08 là tháng 8 hay tháng 3?

   

  • Đổi thành NA và xử lý phù hợp
  • Suy ra định dạng từ nguồn dữ liệu
  • Suy ra từ dữ liệu trước/sau trong DataFrame
Làm sạch dữ liệu với Python

Vamos praticar!

Làm sạch dữ liệu với Python

Preparing Video For Download...