Pandas - Dọn dẹp ô trống
Ô trống
Các ô trống có thể cho bạn kết quả sai khi phân tích dữ liệu.
Xóa hàng
Một cách để xử lý các ô trống là loại bỏ các hàng chứa ô trống.
Điều này thường ổn vì các tập dữ liệu có thể rất lớn và việc xóa một vài hàng sẽ không ảnh hưởng lớn đến kết quả.
Ví dụ
Trả về Khung dữ liệu mới không có ô trống:
import pandas as pd
df = pd.read_csv('data.csv')
new_df = df.dropna()
print(new_df.to_string())
Hãy tự mình thử » Lưu ý: Theo mặc định, phương thức dropna()
trả về DataFrame mới và sẽ không thay đổi bản gốc.
Nếu bạn muốn thay đổi DataFrame gốc, hãy sử dụng đối số inplace = True
:
Ví dụ
Xóa tất cả các hàng có giá trị NULL:
import pandas as pd
df = pd.read_csv('data.csv')
df.dropna(inplace = True)
print(df.to_string())
Hãy tự mình thử » Lưu ý: Bây giờ, dropna(inplace = True)
sẽ KHÔNG trả về DataFrame mới, nhưng nó sẽ xóa tất cả các hàng chứa giá trị NULL khỏi DataFrame ban đầu.
Thay thế các giá trị trống
Một cách khác để xử lý các ô trống là chèn một giá trị mới thay thế.
Bằng cách này bạn không phải xóa toàn bộ hàng chỉ vì một số ô trống.
Phương thức fillna()
cho phép chúng ta thay thế các ô trống bằng một giá trị:
Ví dụ
Thay thế giá trị NULL bằng số 130:
import pandas as pd
df = pd.read_csv('data.csv')
df.fillna(130, inplace = True)
Hãy tự mình thử »Chỉ thay thế cho các cột được chỉ định
Ví dụ trên thay thế tất cả các ô trống trong toàn bộ Data Frame.
Để chỉ thay thế các giá trị trống cho một cột, hãy chỉ định tên cột cho DataFrame:
Ví dụ
Thay thế giá trị NULL trong cột "Calo" bằng số 130:
import pandas as pd
df = pd.read_csv('data.csv')
df["Calories"].fillna(130, inplace = True)
Hãy tự mình thử »Được chứng nhận!
$10 ĐĂNG KÝ
Thay thế bằng cách sử dụng giá trị trung bình, trung vị hoặc chế độ
Một cách phổ biến để thay thế các ô trống là tính giá trị trung bình, trung vị hoặc chế độ của cột.
Pandas sử dụng các phương thức mean()
median()
và mode()
để tính các giá trị tương ứng cho một cột được chỉ định:
Ví dụ
Tính MEAN và thay thế bất kỳ giá trị trống nào bằng nó:
import pandas as pd
df = pd.read_csv('data.csv')
x = df["Calories"].mean()
df["Calories"].fillna(x, inplace = True)
Hãy tự mình thử »Giá trị trung bình = giá trị trung bình (tổng của tất cả các giá trị chia cho số lượng giá trị).
Ví dụ
Tính toán MEDIAN và thay thế bất kỳ giá trị trống nào bằng nó:
import pandas as pd
df = pd.read_csv('data.csv')
x = df["Calories"].median()
df["Calories"].fillna(x, inplace = True)
Hãy tự mình thử »Trung vị = giá trị ở giữa, sau khi bạn đã sắp xếp tất cả các giá trị tăng dần.
Ví dụ
Tính MODE và thay thế mọi giá trị trống bằng nó:
import pandas as pd
df = pd.read_csv('data.csv')
x = df["Calories"].mode()[0]
df["Calories"].fillna(x, inplace = True)
Hãy tự mình thử »Chế độ = giá trị xuất hiện thường xuyên nhất.