Làm sạch dữ liệu: Dữ liệu bị thiếu
Bài học 6 trên 19 trong khóa học Phân tích dữ liệu với pandas của Coddy.
Thông thường, tệp CSV có dữ liệu bị thiếu, tên cột không chính xác, dữ liệu trùng lặp, giá trị không chính xác và kiểu dữ liệu không chính xác. Module Pandas có đầy đủ công cụ để xử lý những vấn đề này.
Dữ liệu bị thiếu
Để kiểm tra một giá trị có bị thiếu hay không:
df.isna()Để biết mỗi cột có bao nhiêu giá trị bị thiếu:
df.isna().sum()Hàm (function) isna() chuyển tất cả giá trị thành true hoặc false (có bị thiếu hay không), rồi áp dụng phép tính. sum() sẽ tính true là 1 và false là 0.
Để lặp qua các cột và số lượng giá trị bị thiếu trong từng cột, hãy dùng phương thức items() như với từ điển (dù đây là một đối tượng Series của Pandas):
for column, missing_num in df.isna().sum().items():
print(column, missing_num)Để điền tất cả giá trị bị thiếu trong toàn bộ khung dữ liệu, hãy dùng phương thức fillna():
df = df.fillna("some value")Để chỉ điền giá trị bị thiếu trong một cột, hãy dùng hàm fillna() trên cột đó:
df["some_column"] = df["some_column"].fillna("some value")Bạn cũng có thể xóa tất cả các hàng có giá trị bị thiếu:
df = df.dropna()Thử thách
DễTệp CSV missing.csv có dữ liệu lộn xộn.
Đây là 5 dòng đầu tiên của tệp:
ID,COUNTRY,COLOR,SKILL,SKILL_POINTS,UTILIZATION,IS_VALID
1,France,Signal violet,marksmanship,14,0.1924,1
1,France,Signal violet,marksmanship,14,0.1924,1
2,Solomon Islands,Pearl violet,,4,,1
3,Germany,,calligraphy,12,0.88646,0Hãy làm sạch dữ liệu:
- Điền giá trị còn thiếu vào tất cả cột có hơn
2giá trị còn thiếu bằng giá trịMissing - Xóa tất cả các hàng còn lại có giá trị còn thiếu.
Để xem tiến độ, hãy in ra df: print(df)
Lưu kết quả cuối cùng vào biến df.
Đừng in ra df nếu muốn vượt qua test case!
Tự làm thử
# pandas đã được nhập với tên pd
df = pd.read_csv("./missing.csv")
# Viết code bên dưới
Tất cả bài học trong Phân tích dữ liệu với pandas
4Phân tích dữ liệu với Pandas
Thống kê mô tảNhóm và tổng hợp dữ liệuCác phép tổng hợp khác nhauHợp nhất và nối2Làm việc với DataFrame
Tìm hiểu về DataFrameTruy cập dữ liệuLàm sạch dữ liệu: Dữ liệu bị thiếuLàm sạch dữ liệu: Các công cụ khácTự luyện tập: Trình biên dịch Python online