एक ही आकृति में विभिन्न DataFrames प्लॉट करें


92

मेरे पास कई वर्षों के तापमान रिकॉर्ड के साथ एक तापमान फ़ाइल है, नीचे दिए गए प्रारूप में:

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

हर साल अलग-अलग संख्या, रिकॉर्ड का समय होता है, इसलिए पंडों के डेटाइमाइंडिस सभी अलग-अलग होते हैं।

मैं तुलना करने के लिए एक ही आंकड़े में अलग-अलग वर्ष के डेटा को प्लॉट करना चाहता हूं। X- अक्ष जनवरी से दिसंबर है, Y- अक्ष तापमान है। मै यह कैसे कर सकता हूँ?

जवाबों:


30

हालांकि चांग का जवाब बताता है कि एक ही आकृति पर कई बार साजिश कैसे की जाती है, इस मामले में आप एक groupbyऔर unstackआईएनजी का उपयोग करके इस मामले में बेहतर हो सकते हैं:

(मान लें कि आपके पास डेटाफ़्रेम में यह पहले से ही डेटटाइम इंडेक्स के साथ है)

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

अब (हर साल एक अलग लाइन के रूप में) प्लॉट करना आसान है:

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

338

प्रयत्न:

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

1
यदि यह ipython नोटबुक पर है, तो इसे कैसे प्राप्त करें? क्या कोई होल्ड या शो फंक्शन है जो सभी सेटिंग्स सेट होने के बाद ही ग्राफ को प्रिंट करता है?
डायनेशेंग

1
सेट करें %matplotlib inlineकि आप अपना आयात कहाँ करते हैं ताकि आपके विज़ुअलाइज़ेशन iPython पुस्तिकाओं के अंदर दिखाई दें।
हसन बेग

1
कोई सुराग कि यह कैसे काम करेगा 3 से अधिक डेटाफ्रेम थे?
आरपीटी

ये अद्भुत है। मैं कैसे 3 से अधिक dfs के साथ करने के लिए जवाब देंगे
adivis12

3
क्या आप सुनिश्चित हैं कि यह किसी भी प्रकार के लिए काम करता है plot(), अर्थात् जब भी किसी प्रकार के विनिर्देशों को plotफ़ंक्शन में तर्क के रूप में पारित किया जाता है ?
१५

26

यदि आप एक जयुपर / Ipython नोटबुक चला रहे हैं और उपयोग करने में समस्या हो रही है;

ax = df1.plot()

df2.plot(ax=ax)

एक ही सेल के अंदर कमांड चलाएँ !! यह किसी कारण के लिए अभ्यस्त है, जब वे अनुक्रमिक कोशिकाओं में अलग हो जाते हैं। मेरे लिए कम से कम।


6

कई डेटाफ़्रेम के लिए ऐसा करने के लिए, आप उन पर लूप के लिए कर सकते हैं:

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

बस @ adivis12 उत्तर बढ़ाने के लिए, आपको ifकथन करने की आवश्यकता नहीं है । इसे इस तरह लगाएं:

fig, ax = plt.subplots()
for BAR in dict_of_dfs.keys():
    dict_of_dfs[BAR].plot(ax=ax)
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.