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


296

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


2
len ()이 작동하지 않습니까? 빈 데이터 프레임의 경우 0을 반환해야합니다.
VIKASH JAISWAL

답변:


462

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

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

출처 : Pandas Documentation


3
df가 pd.DataFrame이라는 것을 알아야하기 때문에 부끄러운 것 같습니다. pd.DataFrame에서 bool ()을 구현하지 않는 동기를 알고 싶습니다.
Quant

17
- @Quant 문서는 이유에 대한 논의가 부울는 : 여기 dataframe에 대한 오류가 발생합니다 링크를 . 인용구 : "길이가 0이 아니기 때문에 참이어야합니까? 틀린 값이 있기 때문에 틀렸습니까? 확실하지 않습니다. 대신 팬더는 ValueError를 발생시킵니다"
Bij

56

나는 그 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
'''

7
len (df.index) == 0 또는 len (df.columns) == 0 때문에 DataFrame이 비어있을 수 있습니다.
Mark Horvath

9

나는 긴 길을가는 것을 선호합니다. 다음은 try-except 절을 사용하지 않기 위해 수행하는 검사입니다.

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

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

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

2
변수가 비어 있거나 행이있는 DataFrame (OP가 의미하는 것)이 될 것으로 예상되는 경우 이는 중복되고 나쁜 습관입니다. DF가 아닌 경우 (또는없는 경우) 어딘가에 문제가 발생하여 예외가 발생해야합니다.
fgblomqvist

파이썬에서는 try/except싸고 if비싸다. 파이썬은 자바도 아니고 C도 아니다. 여기입니다 권한보다 용서를 요청하기 쉬운
닉 Marinakis

4

이 스레드에서 승인 된 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
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')

이 코드가 문제를 해결하는 방법과 이유에 대한 설명포함 하여 질문을 해결할 수는 있지만 게시물의 품질을 향상시키는 데 도움이되며 더 많은 투표를 할 수 있습니다. 지금 질문하는 사람뿐만 아니라 앞으로 독자들에게 질문에 대답하고 있음을 기억하십시오. 제발 편집 설명을 추가하고 제한 및 가정이 적용 무엇의 표시를 제공하는 답변을. 검토에서
이중 경고음
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.