[python] 팬더 DataFrame이 비어 있는지 확인하는 방법은 무엇입니까?

팬더 DataFrame가 비어 있는지 확인하는 방법 ? 내 경우에는 DataFrame비어있는 경우 터미널에 메시지를 인쇄하고 싶습니다 .



답변

이 속성 df.empty을 사용하여 비어 있는지 여부를 확인할 수 있습니다 .

if df.empty:
    print('DataFrame is empty!')

출처 : Pandas Documentation


답변

나는 그 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-except 절을 사용하지 않기 위해 수행하는 검사입니다.

  1. 변수가 없음이 아닌지 확인
  2. 그런 다음 데이터 프레임인지 확인하고
  3. 비어 있지 않은지 확인하십시오

여기 DATA용의자 변수가 있습니다-

DATA is not None and isinstance(DATA, pd.DataFrame) and not DATA.empty


답변

이 스레드에서 승인 된 empty의 정의는 행이 0 인 데이터 프레임 인 것으로 보입니다. 그러나 0 행과 0 열이 있는 빈 데이터 프레임과 0 행과 1 개 이상의 열이 있는 빈 데이터 프레임 사이에는 차이가 있습니다. 각각의 경우 색인의 길이는 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

을 구분하는 한 가지 방법 헤더와 데이터의 비어 dataframe 하거나 데이터 비우기는 것입니다 열 인덱스의 길이를 테스트합니다 . 첫 번째로로드 된 데이터 프레임은 0 개의 열을 반환하고 두 번째 데이터 프레임은 빈 열의 수를 반환합니다.

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이 비어있는 경우 (즉, 데이터가 전혀 포함되지 않은 경우) Nan 값으로 DataFrame을 염두에 두십시오.
비어 있지 않은 것으로 간주되는 경우) 플롯하지 않고 메시지를 작성하는 것이 바람직합니다.
두 개의 DataFrame 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')


답변