2013-05-09 10 views
7

मैं Matplotlib का उपयोग कर टाइम्सरीज़ डेटा प्लॉट कर रहा हूं और कुछ डेटा अनुक्रम में गायब हैं। Matplotlib implicitly में अगला संगत डेटा बिंदु अगले में शामिल होता है। लेकिन अगर डेटा गुम हो जाता है, तो साजिश बदसूरत लगती है। निम्नलिखित साजिश प्राप्त की गई है। enter image description hereMatplotlib डेटा खोने के लिए इंटरपोलेशन हटाएं

यह देखा जा सकता है कि 30 अप्रैल के पास, डेटा गायब है और Matplotlib अंक में शामिल हो जाता है। इसके अलावा निम्न छवि डेटा की स्कैटर प्लॉट है। स्कैटर प्लॉट इस गलती को कवर करता है, लेकिन फिर इस मामले में संगत डेटा पॉइंट संयुक्त नहीं होंगे। इसके अलावा, बड़ी संख्या में डेटा पॉइंट शामिल होने के कारण स्कैटर प्लॉट बहुत धीमा है। enter image description here

ऐसी समस्याओं के लिए अनुशंसित समाधान क्या है।

उत्तर

8

आप की पहचान कर सकते हैं जहां ब्रेक अंक होना चाहिए आप या तो:

  1. तोड़ डेटा और अंतराल में प्रत्येक डेटा में हाथ से 'अनुभाग
  2. डालने np.nan साजिश

उदाहरण के लिए देखें Plot periodic trajectories

आप scatter का ही प्रभाव प्राप्त कर सकते हैं

ax.plot(x, y, linestyle='none', marker='o') 
+0

पांडों का उपयोग करके समाप्त हुआ जो NaN –

+0

@ निपुनबात्रा डालेगा यदि आपने कुछ अलग किया है तो आपको इसे उत्तर के रूप में लिखना चाहिए और अपना उत्तर स्वीकार करना चाहिए। – tacaswell

4

के साथ पिछले जवाब का कहना है के रूप में, आप Nans कहां लगाना चाहिए (यदि आप आकार या स्वतंत्र रूप से प्रत्येक बिंदु के रंग पैमाने पर नहीं करना चाहते हैं) वहाँ कोई डेटा नहीं है यह उत्तर पांडस के लिए विशिष्ट है, और बताता है कि यह आसानी से कैसे प्राप्त किया जा सकता है। कोई एक:

  • Series.resample() या
  • Series.reindex()

सरल विधि का उपयोग करने के resample() है। नियमित रूप से स्थानांतरित डेटा के लिए यह सबसे संक्षिप्त तरीका है। तो ऊपर दिए गए उदाहरण में, यदि आपके पास उदा। 5 मिनट का डेटा, बस data.resample("5 min") करें। यह गुम मूल्यों में 'डेटा' (NaN के बराबर समतुल्य) के साथ अपना डेटा सेट वापस कर देगा।

एकमात्र मामला जहां यह बहुत अच्छा काम नहीं करता है वह तब होता है जब आपके नमूने नियमित रूप से नहीं होते हैं।

विकल्प reindex() है, जो आदेशित (लेकिन गैर-समय-श्रृंखला) डेटा के लिए भी काम करता है। तो उदाहरण के लिए, यदि आपके पास 0 से 100 से पूर्णांक के साथ अनुक्रमित डेटा सेट था, लेकिन कुछ गायब नमूने के साथ, आप data.reindex([0:100]) कर सकते थे। pandas.date_range() फ़ंक्शन में तर्क के रूप में गुजरकर आप के व्यवहार को reindex के साथ दोहरा सकते हैं।

संबंधित मुद्दे