Hướng dẫn how does python handle empty dataframe? - python xử lý khung dữ liệu trống như thế nào?

Để xem liệu DataFrame có trống không, tôi lập luận rằng người ta nên kiểm tra độ dài của chỉ mục cột của DataFrame:length of a dataframe's columns index:

if len[df.columns] == 0: 1

Reason:

Theo API tham chiếu Pandas, có một sự khác biệt giữa:

  • một khung dữ liệu trống với 0 hàng và 0 cột
  • một khung dữ liệu trống với các hàng chứa
    In [1]: import pandas as pd
            df1 = pd.DataFrame[]
            df1
    Out[1]: Empty DataFrame
            Columns: []
            Index: []
    
    In [2]: len[df1.index]  # or len[df1]
    Out[2]: 0
    
    In [3]: df1.empty
    Out[3]: True
    
    2 do đó ít nhất 1 cột

Có thể cho rằng, họ không giống nhau. Các câu trả lời khác không chính xác trong đó

In [1]: import pandas as pd
        df1 = pd.DataFrame[]
        df1
Out[1]: Empty DataFrame
        Columns: []
        Index: []

In [2]: len[df1.index]  # or len[df1]
Out[2]: 0

In [3]: df1.empty
Out[3]: True
3,
In [1]: import pandas as pd
        df1 = pd.DataFrame[]
        df1
Out[1]: Empty DataFrame
        Columns: []
        Index: []

In [2]: len[df1.index]  # or len[df1]
Out[2]: 0

In [3]: df1.empty
Out[3]: True
4 hoặc
In [1]: import pandas as pd
        df1 = pd.DataFrame[]
        df1
Out[1]: Empty DataFrame
        Columns: []
        Index: []

In [2]: len[df1.index]  # or len[df1]
Out[2]: 0

In [3]: df1.empty
Out[3]: True
5 không phân biệt và chỉ số trả lại là 0 và trống là đúng trong cả hai trường hợp.index is 0 and empty is True in both cases.

Ví dụ

Ví dụ 1: Một khung dữ liệu trống với 0 hàng và 0 cột

In [1]: import pandas as pd
        df1 = pd.DataFrame[]
        df1
Out[1]: Empty DataFrame
        Columns: []
        Index: []

In [2]: len[df1.index]  # or len[df1]
Out[2]: 0

In [3]: df1.empty
Out[3]: True

Ví dụ 2: Một khung dữ liệu được đổ thành 0 hàng nhưng vẫn giữ lại các cột

In [1]: import pandas as pd
        df1 = pd.DataFrame[]
        df1
Out[1]: Empty DataFrame
        Columns: []
        Index: []

In [2]: len[df1.index]  # or len[df1]
Out[2]: 0

In [3]: df1.empty
Out[3]: True
6

In [4]: df2 = pd.DataFrame[{'AA' : [1, 2, 3], 'BB' : [11, 22, 33]}]
        df2
Out[4]:    AA  BB
        0   1  11
        1   2  22
        2   3  33

In [5]: df2 = df2[df2['AA'] == 5]
        df2
Out[5]: Empty DataFrame
        Columns: [AA, BB]
        Index: []

In [6]: len[df2.index]  # or len[df2]
Out[6]: 0

In [7]: df2.empty
Out[7]: True

Bây giờ, xây dựng trên các ví dụ trước, trong đó chỉ mục là 0 và trống là đúng. Khi đọc độ dài của chỉ mục cột cho DataFrame DF1 được tải đầu tiên, nó sẽ trả về 0 cột để chứng minh rằng nó thực sự trống.length of the columns index for the first loaded dataframe df1, it returns 0 columns to prove that it is indeed empty.

In [8]: len[df1.columns]
Out[8]: 0

In [9]: len[df2.columns]
Out[9]: 2

Quan trọng, trong khi df2 DataFrame thứ hai không chứa dữ liệu, nó không hoàn toàn trống vì nó trả về số lượng cột trống vẫn tồn tại., while the second dataframe df2 contains no data, it is not completely empty because it returns the amount of empty columns that persist.

Tại sao nó quan trọng

Hãy thêm một cột mới vào các khung dữ liệu này để hiểu ý nghĩa:

# As expected, the empty column displays 1 series
In [10]: df1['CC'] = [111, 222, 333]
         df1
Out[10]:    CC
         0 111
         1 222
         2 333
In [11]: len[df1.columns]
Out[11]: 1

# Note the persisting series with rows containing `NaN` values in df2
In [12]: df2['CC'] = [111, 222, 333]
         df2
Out[12]:    AA  BB   CC
         0 NaN NaN  111
         1 NaN NaN  222
         2 NaN NaN  333
In [13]: len[df2.columns]
Out[13]: 3

Rõ ràng là các cột ban đầu trong DF2 đã bề mặt lại. Do đó, thay vào đó, nên đọc độ dài của chỉ mục các cột với

In [1]: import pandas as pd
        df1 = pd.DataFrame[]
        df1
Out[1]: Empty DataFrame
        Columns: []
        Index: []

In [2]: len[df1.index]  # or len[df1]
Out[2]: 0

In [3]: df1.empty
Out[3]: True
7 để xem liệu dữ liệu có trống không.length of the columns index with
In [1]: import pandas as pd
        df1 = pd.DataFrame[]
        df1
Out[1]: Empty DataFrame
        Columns: []
        Index: []

In [2]: len[df1.index]  # or len[df1]
Out[2]: 0

In [3]: df1.empty
Out[3]: True
7 to see if a dataframe is empty.

Giải pháp thực tế

# New dataframe df
In [1]: df = pd.DataFrame[{'AA' : [1, 2, 3], 'BB' : [11, 22, 33]}]
        df
Out[1]:    AA  BB
        0   1  11
        1   2  22
        2   3  33

# This data manipulation approach results in an empty df
# because of a subset of values that are not available [`NaN`]
In [2]: df = df[df['AA'] == 5]
        df
Out[2]: Empty DataFrame
        Columns: [AA, BB]
        Index: []

# NOTE: the df is empty, BUT the columns are persistent
In [3]: len[df.columns]
Out[3]: 2

# And accordingly, the other answers on this page
In [4]: len[df.index]  # or len[df]
Out[4]: 0

In [5]: df.empty
Out[5]: True
# SOLUTION: conditionally check for empty columns
In [6]: if len[df.columns] != 0:  # 

Bài Viết Liên Quan

Chủ Đề