Как проверить, DataFrame
пуста ли панда ? В моем случае я хочу напечатать какое-нибудь сообщение в терминале, если DataFrame
оно пустое.
Как проверить, DataFrame
пуста ли панда ? В моем случае я хочу напечатать какое-нибудь сообщение в терминале, если DataFrame
оно пустое.
Ответы:
Вы можете использовать атрибут, df.empty
чтобы проверить, является ли он пустым или нет:
if df.empty:
print('DataFrame is empty!')
Источник: Документация Панд
Я использую len
функцию. Это намного быстрее, чем empty
. len(df.index)
еще быстрее.
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
'''
Я предпочитаю идти по длинному маршруту. Вот те проверки, которые я выполняю, чтобы избежать использования условия try-exc
Вот DATA
подозрительная переменная -
DATA is not None and isinstance(DATA, pd.DataFrame) and not DATA.empty
Похоже, что принятое определение пустого в этом потоке является кадром данных только с нулевыми строками. Но существует различие между пустым фреймом данных с нулевыми строками и нулевыми столбцами и пустым фреймом данных с нулевыми строками и хотя бы одним столбцом . В каждом случае длина индекса равна 0 и пусто = True, как показано здесь:
Пример 1: пустой фрейм данных с 0 строками и 0 столбцами
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
Пример 2: пустой фрейм данных с 0 строками и хотя бы 1 столбцом
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
Один из способов различить фрейм данных, который не содержит заголовков и данных или просто не содержит данных, состоит в проверке длины индекса столбца . Первый загруженный фрейм данных возвращает ноль столбцов, второй фрейм данных возвращает количество пустых столбцов.
In [7]: len(df1.columns)
Out[7]: 0
In [8]: len(df2.columns)
Out[8]: 2
1) Если DataFrame имеет значения Nan и Non Null, и вы хотите узнать, является ли DataFrame пусто или нет, попробуйте этот код. 2) когда такая ситуация может случиться? Такая ситуация возникает, когда одна функция используется для построения нескольких DataFrame. которые передаются в качестве параметра. В такой ситуации функция пытается построить данные даже когда DataFrame пуст и, таким образом, построить пустую фигуру !. Это будет иметь смысл, если просто отобразить сообщение «DataFrame не имеет данных». 3) почему? если DataFrame пуст (т. е. не содержат данных вообще. Имейте в виду DataFrame со значениями Nan считается не пустым) тогда желательно не строить сюжет, а выложить сообщение: Предположим, у нас есть два DataFrames df1 и df2. Функция myfunc принимает любой DataFrame (в данном случае df1 и df2) и печатает сообщение если DataFrame пуст (вместо построения графика):
df1 df2
col1 col2 col1 col2
Nan 2 Nan Nan
2 Nan Nan Nan
и функция:
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')