Làm thế nào để kiểm tra xem một con gấu trúc DataFrame
có trống không? Trong trường hợp của tôi, tôi muốn in một số tin nhắn trong thiết bị đầu cuối nếu DataFrame
trống.
Làm thế nào để kiểm tra xem một con gấu trúc DataFrame
có trống không? Trong trường hợp của tôi, tôi muốn in một số tin nhắn trong thiết bị đầu cuối nếu DataFrame
trống.
Câu trả lời:
Bạn có thể sử dụng thuộc tính df.empty
để kiểm tra xem nó có trống hay không:
if df.empty:
print('DataFrame is empty!')
Nguồn: Tài liệu về gấu trúc
Tôi sử dụng len
chức năng. Nó nhanh hơn nhiều empty
. len(df.index)
thậm chí còn nhanh hơn
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(10000, 4), columns=list('ABCD'))
def empty(df):
return df.empty
def lenz(df):
return len(df) == 0
def lenzi(df):
return len(df.index) == 0
'''
%timeit empty(df)
%timeit lenz(df)
%timeit lenzi(df)
10000 loops, best of 3: 13.9 µs per loop
100000 loops, best of 3: 2.34 µs per loop
1000000 loops, best of 3: 695 ns per loop
len on index seems to be faster
'''
Tôi thích đi theo con đường dài. Đây là những kiểm tra tôi làm theo để tránh sử dụng mệnh đề thử ngoại trừ -
Đây DATA
là biến nghi ngờ -
DATA is not None and isinstance(DATA, pd.DataFrame) and not DATA.empty
try/except
rẻ và if
đắt tiền. Python không phải là Java hay C; ở đây thật dễ dàng để yêu cầu sự tha thứ hơn là sự cho phép
Dường như định nghĩa trống được chấp nhận trong luồng này là một khung dữ liệu chỉ có các hàng bằng không. Nhưng có một sự khác biệt giữa một khung dữ liệu trống với các hàng bằng 0 và các cột bằng 0 và một khung dữ liệu trống có các hàng bằng 0 và ít nhất một cột . Trong mỗi trường hợp, độ dài của chỉ mục là 0 và rỗng = Đúng như được hiển thị ở đây:
Ví dụ 1: 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)
Out[2]: 0
In [3]: df1.empty
Out[3]: True
Ví dụ 2: khung dữ liệu trống có 0 hàng và ít nhất 1 cột
In [4]: df2 = pd.DataFrame({'AA' : [], 'BB' : []})
df2
Out[4]: Empty DataFrame
Columns: [AA, BB]
Index: []
In [5]: len(df2.index)
Out[5]: 0
In [6]: df2.empty
Out[6]: True
Một cách để phân biệt giữa một khung dữ liệu trống các tiêu đề và dữ liệu hoặc chỉ trống dữ liệu là kiểm tra độ dài của chỉ mục cột . Khung dữ liệu được tải đầu tiên trả về các cột bằng 0, khung dữ liệu thứ hai trả về số lượng cột trống.
In [7]: len(df1.columns)
Out[7]: 0
In [8]: len(df2.columns)
Out[8]: 2
1) Nếu DataFrame có các giá trị Nan và Non Null và bạn muốn tìm xem liệu DataFrame trống hay không thì thử mã này. 2) khi tình huống này có thể xảy ra? Tình huống này xảy ra khi một hàm duy nhất được sử dụng để vẽ nhiều hơn một DataFrame được truyền dưới dạng tham số. Trong tình huống như vậy, hàm cố gắng vẽ đồ thị dữ liệu khi DataFrame trống và do đó vẽ một hình trống!. Sẽ có ý nghĩa nếu chỉ hiển thị thông báo 'DataFrame không có dữ liệu'. 3) tại sao? nếu DataFrame trống (nghĩa là không chứa dữ liệu nào cả. Cho bạn DataFrame với các giá trị Nan được coi là không trống) thì không nên âm mưu mà đưa ra một thông điệp: Giả sử chúng ta có hai DataFrames df1 và df2. Hàm myfunc lấy bất kỳ DataFrame nào (df1 và df2 trong trường hợp này) và in một thông báo nếu DataFrame trống (thay vì âm mưu):
df1 df2
col1 col2 col1 col2
Nan 2 Nan Nan
2 Nan Nan Nan
và chức năng:
def myfunc(df):
if (df.count().sum())>0: ##count the total number of non Nan values.Equal to 0 if DataFrame is empty
print('not empty')
df.plot(kind='barh')
else:
display a message instead of plotting if it is empty
print('empty')