कैसे जांच करें कि क्या एक पांडा डेटाफ़्रेम खाली है?


296

कैसे जांच करें कि क्या एक पांडा DataFrameखाली है? मेरे मामले में मैं टर्मिनल में कुछ संदेश प्रिंट करना चाहता हूं यदि DataFrameखाली है।


2
लेन () काम नहीं करता है? इसे खाली डेटाफ्रेम के लिए 0 वापस करना चाहिए।
विकेश जसवाल

जवाबों:


462

df.emptyयह खाली है या नहीं, यह जांचने के लिए आप विशेषता का उपयोग कर सकते हैं :

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

स्रोत: पंडों का प्रलेखन


3
यह एक शर्म की तरह लगता है, क्योंकि आपको यह जानना आवश्यक है कि df एक pd.DataFrame है। मैं pd.DataFrame पर बूल () लागू नहीं करने के लिए प्रेरणा जानना चाहूंगा।
परिमाण

17
@ क्वेंट - डॉक्युमेंट में इस बात पर चर्चा है कि बूल यहां डेटाफ्रेम के लिए त्रुटि क्यों उठाता है: लिंक । उद्धरण: "क्या यह सच होना चाहिए क्योंकि यह शून्य-लंबाई नहीं है। गलत क्योंकि गलत मूल्य हैं; यह स्पष्ट नहीं है, इसलिए इसके बजाय, पांडा एक मूल्य बढ़ाता है"
बिज

56

मैं lenफ़ंक्शन का उपयोग करता हूं । इससे बहुत तेज है emptylen(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
एक DataFrame, len (df.index) == 0 या len (df.columns) == 0 के कारण रिक्त हो सकता है।
मार्क होर्वाथ

9

मैं लंबा रास्ता तय करना पसंद करता हूं। ये चेक मैं एक प्रयास को छोड़कर खंड का उपयोग करने से बचने के लिए कर रहे हैं -

  1. जाँच करें कि चर कोई नहीं है
  2. फिर जांचें कि क्या इसका डेटाफ्रेम और है
  3. सुनिश्चित करें कि इसकी खाली नहीं

यहाँ, DATAसंदिग्ध चर है -

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

2
यह निरर्थक और बुरा अभ्यास है अगर यह उम्मीद की जाती है कि चर एक DataFrame होगा (जो कि ओपी का अर्थ है) जो कि खाली है या जिसमें पंक्तियाँ हैं। यदि यह एक DF नहीं है (या यदि यह कोई नहीं है), एक अपवाद फेंक दिया जाना चाहिए क्योंकि कुछ गलत हो गया कहीं।
fgblomqvist

पायथन में, try/exceptसस्ता है और ifमहंगा है। पायथन न तो जावा है और न ही सी; यहाँ अनुमति की तुलना में क्षमा माँगना आसान है
निक मरीनकिस

4

ऐसा प्रतीत होता है कि इस धागे में खाली की परिभाषा केवल शून्य पंक्तियों के साथ एक डेटाफ्रेम है। लेकिन शून्य पंक्तियों और शून्य स्तंभों के साथ एक खाली डेटाफ़्रेम और शून्य पंक्तियों के साथ एक खाली डेटाफ़्रेम और कम से कम एक स्तंभ के बीच एक अंतर है । प्रत्येक मामले में सूचकांक की लंबाई 0 है और खाली = सच जैसा कि यहां दिखाया गया है:

उदाहरण 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 है कि हेडर और डेटा की खाली या सिर्फ आंकड़ों के खाली करने के लिए है स्तंभ अनुक्रमणिका की लंबाई का परीक्षण । पहला लोड किया गया डेटाफ्रेम शून्य कॉलम देता है, दूसरा डेटाफ्रेम खाली कॉलमों की संख्या लौटाता है।

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 खाली है (अर्थात सभी में कोई डेटा नहीं है। तो आप NanF मान के साथ DataFrame करें 
को गैर रिक्त माना जाता है) तो यह साजिश रचने के लिए वांछनीय नहीं है लेकिन एक संदेश बाहर रखा गया है:
मान लीजिए कि हमारे पास दो DataFrames df1 और df2 हैं।
फ़ंक्शन myfunc किसी भी DataFrame (df1 और df2 को इस मामले में) लेता है और एक संदेश प्रिंट करता है 
यदि कोई डेटाफ़्रेम खाली है (प्लॉटिंग के बजाय):
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')

हालांकि यह कोड प्रश्न को हल कर सकता है, जिसमें यह भी बताया गया है कि यह समस्या कैसे और क्यों हल करती है, इससे वास्तव में आपके पोस्ट की गुणवत्ता को बेहतर बनाने में मदद मिलेगी, और संभवतः अधिक वोटों का परिणाम होगा। याद रखें कि आप भविष्य में पाठकों के लिए सवाल का जवाब दे रहे हैं, न कि केवल उस व्यक्ति से जो अब पूछ रहा है। कृपया स्पष्टीकरण जोड़ने के लिए अपने उत्तर को संपादित करें और संकेत दें कि क्या सीमाएँ और मान्यताएँ लागू होती हैं। समीक्षा से
डबल-बीप
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.