2013-05-09 10 views
7

Matplotlib kullanarak zaman çizelgeleri verilerini çiziyorum ve veride bazı veriler eksik. Matplotlib dolaylı olarak 'a son bitişik veri noktasını bir diğerine ekler. Ancak veriler eksik olduğunda, arsa çirkin görünüyor. Aşağıdaki elde edilen arsadır. enter image description hereMatplotlib eksik veriler için enterpolasyonu kaldır

30 Nisan işaretinin yakınında verilerin eksik olduğu ve Matplotlib'in noktaları birleştirdiği görülebilir. Ayrıca, aşağıdaki görüntü verilerin dağılım grafiğidir. Dağılım grafiği bu hatayı kapatır, ancak bu durumda bitişik veri noktaları ortak olmaz. Ayrıca, çok sayıda veri noktası dikkate alındığında dağılım grafiği çok yavaştır. enter image description here

Bu tür sorunlar için önerilen çözüm nedir?

cevap

8

mola noktaları Ya olması gereken yerde sen saptayabilirseniz:

  1. mola verileri ve boşlukları verilerde elle her 'bölümünü'
  2. insert np.nan çizmek

Örneğin bkz. Plot periodic trajectories.

önceki cevabı söylediği gibi, nereye NaN'ler eklemek gerekir

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

NaN –

+0

@NipunBatra'yı yerleştiren Pandalar kullanarak sona erdi Eğer farklı bir şey yaptıysanız, bunu bir cevap olarak yazmalı ve kendi cevabınızı kabul etmelisiniz. – tacaswell

4

ile (eğer boyutu veya bağımsız olarak her noktanın rengini ölçeklemek istemiyorsanız) Sen scatter aynı etkiyi elde edebilirsiniz orada veri yok. Bu cevap Pandas'a özgüdür ve bunun nasıl kolayca gerçekleştirilebileceğini açıklar. Ya: kullanımı

  • Series.resample() veya
  • Series.reindex()

basit yöntemi resample() olup. Bu düzenli aralıklı veri için en özlü yoludur. Yani yukarıdaki örneğinizde, ör. 5 dakika veri, sadece data.resample("5 min") yapın. Bu, veri setinizi eksik değerlerdeki 'NaT' (NaN zaman eşdeğeri) ile döndürecektir.

Bunun işe yaramadığı tek örnek, numuneleriniz düzenli aralıklı olmadığında gerçekleşir.

Alternatif, sıralı (ancak zaman dizisi olmayan) veriler için de çalışan reindex()'dur. Örneğin, 0 .. 100'den tamsayılarla dizinlenmiş bir veri kümeniz varsa, ancak birkaç eksik örnekle data.reindex([0:100]) yapabilirsiniz. işlevini bağımsız değişken olarak ileterek'un reindex numaralı davranışını da yineleyebilirsiniz.