একই চিত্রে বিভিন্ন ডেটা ফ্রেম প্লট করুন


95

নীচের মত ফর্ম্যাটে আমার কাছে বেশ কয়েক বছরের তাপমাত্রার রেকর্ড সহ একটি তাপমাত্রার ফাইল রয়েছে:

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

প্রতিবছর আলাদা আলাদা সংখ্যা, রেকর্ডের সময় থাকে, তাই পান্ডাসের ডেটটাইমइন্ডিসগুলি আলাদা।

তুলনা করার জন্য আমি একই চিত্রে বিভিন্ন বছরের ডেটা প্লট করতে চাই। এক্স-অক্ষটি জানু থেকে ডিসেম্বর, ওয়াই-অক্ষটি তাপমাত্রা। আমি কীভাবে এটি করা উচিত?

উত্তর:


29

যদিও চ্যাং এর উত্তর ব্যাখ্যা করে যে একই চিত্রটিতে একাধিকবার কীভাবে চক্রান্ত করা যায়, এই ক্ষেত্রে আপনি একটি ব্যবহার করতে পারেন 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()

349

চেষ্টা করুন:

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

4
যদি এটি আইপথন নোটবুকে থাকে তবে কীভাবে এটি অর্জন করবেন? কোনও হোল্ড বা শো ফাংশন রয়েছে যা সমস্ত সেটিংস সেট হয়ে যাওয়ার পরে গ্রাফটি মুদ্রণ করে?
দিয়ানশেং

4
%matplotlib inlineআপনি কোথায় আপনার আমদানি করেন তা সেট করুন যাতে আপনার ভিজ্যুয়ালাইজেশন আইপাইথন নোটবুকের ভিতরে প্রদর্শিত হয়।
হাসান বৈগ

4
এটি কীভাবে কাজ করবে সে সম্পর্কে কোনও সূত্র কি 3 টিরও বেশি ডেটাফ্রেম রয়েছে?
আরপিটি

এটা চমৎকার. আমি 3 ডিএফএস
adivis12

4
আপনার জন্য এই কাজ নিশ্চিত কোনো ধরনের এর plot(), যথা যখনই বিবরণীর কোন প্রকার মধ্যে আর্গুমেন্ট হিসাবে পাস করা হয় plotফাংশন আছে?
জেনেটে

27

আপনি যদি জুপিটার / আইপাইথন নোটবুক চালাচ্ছেন এবং ব্যবহারে সমস্যা হচ্ছে;

ax = df1.plot()

df2.plot(ax=ax)

একই কক্ষের ভিতরে কমান্ড চালাও !! এটি কোনও কারণেই কাজ করবে না যখন তারা ক্রমযুক্ত কক্ষে বিভক্ত হয় separated আমার পক্ষে অন্তত।


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)
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.