Tế bào trống
Các ô trống có khả năng cho bạn một kết quả sai khi bạn phân tích dữ liệu.
Xóa hàng
Một cách để đối phó với các ô trống là loại bỏ các hàng có chứa các ô trống.
Điều này thường ổn, vì các bộ dữ liệu có thể rất lớn và việc loại bỏ một vài hàng sẽ không có tác động lớn đến kết quả.
Thí dụ
Trả về một khung dữ liệu mới mà không có ô trống:
nhập khẩu gấu trúc dưới dạng 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ề một DataFrame mới và sẽ không thay đổi bản gốc. By default, the dropna[]
method returns a new DataFrame, and will not change the original.
Nếu bạn muốn thay đổi DataFrame gốc, hãy sử dụng đối số inplace = True
:
Thí dụ
Trả về một khung dữ liệu mới mà không có ô trống:
nhập khẩu gấu trúc dưới dạng PD
df = pd.read_csv ['data.csv']
new_df = df.dropna []
Hãy tự mình thử »
Hãy tự mình thử »
Lưu ý: Theo mặc định, phương thức dropna[]
trả về một DataFrame mới và sẽ không thay đổi bản gốc. Now, the dropna[inplace = True]
will NOT return a new DataFrame, but it will remove all rows containing NULL values from the original DataFrame.
Nếu bạn muốn thay đổi DataFrame gốc, hãy sử dụng đối số inplace = True
:
Xóa tất cả các hàng bằng các giá trị null:
df.dropna [tại chỗ = true]
in [df.to_string []]]
Thí dụ
Trả về một khung dữ liệu mới mà không có ô trống:
nhập khẩu gấu trúc dưới dạng PD
df = pd.read_csv ['data.csv']
new_df = df.dropna []
Hãy tự mình thử »
Lưu ý: Theo mặc định, phương thức dropna[]
trả về một 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
:
Xóa tất cả các hàng bằng các giá trị null:
Thí dụ
Trả về một khung dữ liệu mới mà không có ô trống:
nhập khẩu gấu trúc dưới dạng PD
df = pd.read_csv ['data.csv']
new_df = df.dropna []
Hãy tự mình thử »
Lưu ý: Theo mặc định, phương thức dropna[]
trả về một 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
:
Xóa tất cả các hàng bằng các giá trị null:
Thí dụ
Trả về một khung dữ liệu mới mà không có ô trống:
nhập khẩu gấu trúc dưới dạng PD
df = pd.read_csv ['data.csv']
new_df = df.dropna []
Hãy tự mình thử »
Hãy tự mình thử »
Lưu ý: Theo mặc định, phương thức dropna[]
trả về một DataFrame mới và sẽ không thay đổi bản gốc. = the average value [the sum of all values divided by number of
values].
Thí dụ
Trả về một khung dữ liệu mới mà không có ô trống:
nhập khẩu gấu trúc dưới dạng PD
df = pd.read_csv ['data.csv']
new_df = df.dropna []
Hãy tự mình thử »
Hãy tự mình thử »
Lưu ý: Theo mặc định, phương thức dropna[]
trả về một DataFrame mới và sẽ không thay đổi bản gốc. = the value in the middle, after you have sorted all values
ascending.
Thí dụ
Nếu bạn muốn thay đổi DataFrame gốc, hãy sử dụng đối số inplace = True
:
nhập khẩu gấu trúc dưới dạng PD
df = pd.read_csv ['data.csv']
new_df = df.dropna []
Hãy tự mình thử »
Hãy tự mình thử »
Lưu ý: Theo mặc định, phương thức dropna[]
trả về một DataFrame mới và sẽ không thay đổi bản gốc. = the value that appears most frequently.
Nếu bạn muốn thay đổi DataFrame gốc, hãy sử dụng đối số inplace = True
:
Xóa tất cả các hàng bằng các giá trị null:
df = pd.DataFrame[{
'A': range[5],
'B': ['foo', '', 'bar', '', 'xyz']
}]
df
A B
0 0 foo
1 1
2 2 bar
3 3
4 4 xyz
df['B'].astype[bool]
0 True
1 False
2 True
3 False
4 True
Name: B, dtype: bool
df[df['B'].astype[bool]]
A B
0 0 foo
2 2 bar
4 4 xyz
df.dropna [tại chỗ = true]
df[df['B'].str.strip[].astype[bool]]
A B
0 0 foo
2 2 bar
4 4 xyz
Nhanh hơn bạn nghĩ
df['B'].astype[bool]
0 True
1 False
2 True
3 False
4 True
Name: B, dtype: bool
df[df['B'].astype[bool]]
A B
0 0 foo
2 2 bar
4 4 xyz
3 là một hoạt động vector hóa, điều này nhanh hơn mọi tùy chọn được trình bày cho đến nay.Ít nhất, từ các bài kiểm tra của tôi.Ymmv.Đây là một so sánh thời gian, tôi đã ném vào một số phương pháp khác mà tôi có thể nghĩ đến.
Mã điểm chuẩn, để tham khảo:
import pandas as pd
import perfplot
df1 = pd.DataFrame[{
'A': range[5],
'B': ['foo', '', 'bar', '', 'xyz']
}]
perfplot.show[
setup=lambda n: pd.concat[[df1] * n, ignore_index=True],
kernels=[
lambda df: df[df['B'].astype[bool]],
lambda df: df[df['B'] != ''],
lambda df: df[df['B'].replace['', np.nan].notna[]], # optimized 1-col
lambda df: df.replace[{'B': {'': np.nan}}].dropna[subset=['B']],
],
labels=['astype', "!= ''", "replace + notna", "replace + dropna", ],
n_range=[2**k for k in range[1, 15]],
xlabel='N',
logx=True,
logy=True,
equality_check=pd.DataFrame.equals]