pandas 0.23 - 13. Working with missing data

लापता डेटा के साथ काम करना




pandas

लापता डेटा के साथ काम करना

इस खंड में, हम पंडों में लापता (एनए के रूप में संदर्भित) मूल्यों पर भी चर्चा करेंगे।

ध्यान दें

अनुपस्थित डेटा को निरूपित करने के लिए NaN आंतरिक रूप से उपयोग करने का विकल्प काफी हद तक सादगी और प्रदर्शन कारणों से था। यह उदाहरण के लिए, scikits.timeseries के MaskedArray दृष्टिकोण से अलग है। हम उम्मीद कर रहे हैं कि NumPy जल्द ही एक देशी NA प्रकार का समाधान (R के समान) प्रदर्शन करने में सक्षम होगा जो पांडा में इस्तेमाल होने के लिए पर्याप्त है।

कुछ उन्नत रणनीतियों के लिए cookbook की cookbook देखें।

डेटा की मूल बातें गुम

कब / क्यों डेटा गायब हो जाता है?

कुछ हमारे लापता होने के उपयोग से वंचित हो सकते हैं। "लापता" से हमारा तात्पर्य NA ("उपलब्ध नहीं") या "जो भी कारण से मौजूद नहीं है" से है। कई डेटा सेट बस गायब डेटा के साथ आते हैं, या तो यह मौजूद है और इसे एकत्र नहीं किया गया था या यह कभी अस्तित्व में नहीं था। उदाहरण के लिए, वित्तीय समय श्रृंखला के संग्रह में, कुछ समय श्रृंखला विभिन्न तिथियों पर शुरू हो सकती है। इस प्रकार, प्रारंभ तिथि से पहले के मूल्यों को आमतौर पर लापता के रूप में चिह्नित किया जाएगा।

पांडा में, सबसे आम तरीकों में से एक है जो लापता डेटा को डेटा सेट में पेश किया जाता है, रीइंडेक्सिंग द्वारा होता है। उदाहरण के लिए:

In [1]: df = pd.DataFrame(np.random.randn(5, 3), index=['a', 'c', 'e', 'f', 'h'],
   ...:                   columns=['one', 'two', 'three'])
   ...: 

In [2]: df['four'] = 'bar'

In [3]: df['five'] = df['one'] > 0

In [4]: df
Out[4]: 
        one       two     three four   five
a -0.166778  0.501113 -0.355322  bar  False
c -0.337890  0.580967  0.983801  bar  False
e  0.057802  0.761948 -0.712964  bar   True
f -0.443160 -0.974602  1.047704  bar  False
h -0.717852 -1.053898 -0.019369  bar  False

In [5]: df2 = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])

In [6]: df2
Out[6]: 
        one       two     three four   five
a -0.166778  0.501113 -0.355322  bar  False
b       NaN       NaN       NaN  NaN    NaN
c -0.337890  0.580967  0.983801  bar  False
d       NaN       NaN       NaN  NaN    NaN
e  0.057802  0.761948 -0.712964  bar   True
f -0.443160 -0.974602  1.047704  bar  False
g       NaN       NaN       NaN  NaN    NaN
h -0.717852 -1.053898 -0.019369  bar  False

मान "लापता"

जैसा कि डेटा कई आकृतियों और रूपों में आता है, पांडा का उद्देश्य गायब डेटा को संभालने के संबंध में लचीला होना है। जबकि NaN कम्प्यूटेशनल गति और सुविधा के कारणों के लिए डिफ़ॉल्ट लापता मान मार्कर है, हमें विभिन्न प्रकारों के डेटा के साथ आसानी से इस मूल्य का पता लगाने में सक्षम होने की आवश्यकता है: फ्लोटिंग पॉइंट, पूर्णांक, बूलियन और सामान्य ऑब्जेक्ट। कई मामलों में, हालांकि, पायथन None भी उत्पन्न None होगा और हम यह भी विचार करना चाहते हैं कि "गायब" या "उपलब्ध नहीं है" या "एनए"।

ध्यान दें

यदि आप गणना में inf और -inf को "NA" pandas.options.mode.use_inf_as_na = True चाहते हैं, तो आप pandas.options.mode.use_inf_as_na = True सेट कर सकते हैं।

लापता मानों का पता लगाने को आसान बनाने के लिए (और अलग-अलग सरणी dtypes में), पांडा isna() और notna() फ़ंक्शंस प्रदान करते हैं, जो श्रृंखला और डेटाफ़्रेम ऑब्जेक्ट्स पर भी विधि हैं:

In [7]: df2['one']
Out[7]: 
a   -0.166778
b         NaN
c   -0.337890
d         NaN
e    0.057802
f   -0.443160
g         NaN
h   -0.717852
Name: one, dtype: float64

In [8]: pd.isna(df2['one'])