Hướng dẫn how do you remove blank rows from a dataframe in python? - làm cách nào để xóa các hàng trống khỏi khung dữ liệu trong python?


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.

Hướng dẫn how do you remove blank rows from a dataframe in python? - làm cách nào để xóa các hàng trống khỏi khung dữ liệu trong python?

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)