Farklı DataFrame'leri aynı şekle çizin


93

Aşağıdaki formatta, uzun yıllar sıcaklık kayıtları içeren bir sıcaklık dosyam var:

2012-04-12,16:13:09,20.6
2012-04-12,17:13:09,20.9
2012-04-12,18:13:09,20.6
2007-05-12,19:13:09,5.4
2007-05-12,20:13:09,20.6
2007-05-12,20:13:09,20.6
2005-08-11,11:13:09,20.6
2005-08-11,11:13:09,17.5
2005-08-13,07:13:09,20.6
2006-04-13,01:13:09,20.6

Her yıl farklı sayılara, kayıtların zamanına sahiptir, bu nedenle pandaların tarih-saat göstergelerinin tümü farklıdır.

Karşılaştırmak için farklı yılın verilerini aynı şekilde grafiğe dökmek istiyorum. X ekseni Ocak ila Aralık arasıdır, Y ekseni sıcaklıktır. Bunu nasıl yapmalıyım?

Yanıtlar:


29

Chang'ın cevabı aynı şekle birden çok kez nasıl çizileceğini açıklasa da, bu durumda a groupbyve unstacking kullanarak bu durumda daha iyi durumda olabilirsiniz :

(Dataframe'de buna sahip olduğunuzu varsayarak, datetime indeksi zaten var)

In [1]: df
Out[1]:
            value  
datetime                         
2010-01-01      1  
2010-02-01      1  
2009-01-01      1  

# create additional month and year columns for convenience
df['Month'] = map(lambda x: x.month, df.index)
df['Year'] = map(lambda x: x.year, df.index)    

In [5]: df.groupby(['Month','Year']).mean().unstack()
Out[5]:
       value      
Year    2009  2010
Month             
1          1     1
2        NaN     1

Şimdi çizmek kolaydır (her yıl ayrı bir satır olarak):

df.groupby(['Month','Year']).mean().unstack().plot()

346

Deneyin:

ax = df1.plot()
df2.plot(ax=ax)

1
ipython dizüstü bilgisayardaysa, nasıl başarılır? Grafiği yalnızca tüm ayarlar yapıldıktan sonra yazdıran bir bekletme veya gösterme işlevi var mı?
Diansheng

1
%matplotlib inlineGörselleştirmelerinizin iPython dizüstü bilgisayarlarda görünmesi için içe aktarımlarınızı nerede yaptığınızı ayarlayın .
Hassan Baig

1
Bunun nasıl çalışacağına dair bir ipucu var mı, 3'ten fazla veri çerçevesi vardı?
RPT

Bu harika. 3'ten fazla dfs ile nasıl yapılacağını cevaplayacağım
adivis12

3
Bunun herhangi bir tür için plot(), yani plotişleve bağımsız değişken olarak herhangi bir özellik türü iletildiğinde işe yaradığından emin misiniz ?
gented

27

Çalışan bir Jupyter / Ipython dizüstü bilgisayarınız varsa ve kullanımda sorun yaşıyorsanız;

ax = df1.plot()

df2.plot(ax=ax)

Komutu aynı hücrenin içinde çalıştırın !! Sıralı hücrelere ayrıldıklarında bazı nedenlerden dolayı işe yaramaz. En azından benim için.


6

Bunu birden çok veri çerçevesi için yapmak için, bunların üzerinde bir for döngüsü yapabilirsiniz:

fig = plt.figure(num=None, figsize=(10, 8))
ax = dict_of_dfs['FOO'].column.plot()
for BAR in dict_of_dfs.keys():
    if BAR == 'FOO':
        pass
    else:
        dict_of_dfs[BAR].column.plot(ax=ax)

0

Sadece @ adivis12 cevabını geliştirmek için ififadeyi yapmanız gerekmez . Şöyle ifade et:

fig, ax = plt.subplots()
for BAR in dict_of_dfs.keys():
    dict_of_dfs[BAR].plot(ax=ax)
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.