我想繪製{a,b}對的年度使用線圖。如何繪製使用熊貓的年度數據集?
X軸應該是年,y軸應該是使用。
這是我的數據集。如果在對沒有重複a, b
VS year
a b year usage
a2 10104 2011 7.292787
a0 10104 2012 43.545533
b0 12011 2009 96.130359
b1 12011 2009 7.658487
b1 14102 2010 6.975572
我想繪製{a,b}對的年度使用線圖。如何繪製使用熊貓的年度數據集?
X軸應該是年,y軸應該是使用。
這是我的數據集。如果在對沒有重複a, b
VS year
a b year usage
a2 10104 2011 7.292787
a0 10104 2012 43.545533
b0 12011 2009 96.130359
b1 12011 2009 7.658487
b1 14102 2010 6.975572
使用pivot_table
重新排列數據,使得我有在列a
和b
和在索引year
組合。
但是,一旦我們調整了可能會丟失數據。通過將interpolate
與index
參數一起使用,我們使用內插值填充缺失數據,同時保持與索引值的相對變化成比例。這在索引值不是統一分開時很重要,例如[2005, 2006, 2008]
。如果索引統一分開,那麼使用index
不會造成傷害,因爲它與默認值相同。
d1 = df.pivot_table('usage', 'year', ['a', 'b']).interpolate('index')
d1.index = pd.PeriodIndex(d1.index, freq='A')
d1.plot()
迴應@ jezrael的評論
是有益的觀察什麼數據看起來不interpolate
d1 = df.pivot_table('usage', 'year', ['a', 'b'])
d1.index = pd.PeriodIndex(d1.index, freq='A')
d1
a a0 a2 b0 b1
b 10104 10104 12011 12011 14102
year
2009 NaN NaN 96.130359 7.658487 NaN
2010 NaN NaN NaN NaN 6.975572
2011 NaN 7.292787 NaN NaN NaN
2012 43.545533 NaN NaN NaN NaN
在這種情況下,我們不要」看看會發生什麼。但是我想到有更多的數據可以在稀疏數據之間看到NaN
的差距。而不是向前填充,我們可以按比例填充。
d1 = df.pivot_table('usage', 'year', ['a', 'b']).interpolate('index')
d1.index = pd.PeriodIndex(d1.index, freq='A')
d1
a a0 a2 b0 b1
b 10104 10104 12011 12011 14102
year
2009 NaN NaN 96.130359 7.658487 NaN
2010 NaN NaN 96.130359 7.658487 6.975572
2011 NaN 7.292787 96.130359 7.658487 6.975572
2012 43.545533 7.292787 96.130359 7.658487 6.975572
現在再說一遍,這將只顯示更多數據的好處。就這些數據而言,我們只能觀察到有限的前向加註。
關於mean
請注意,我用pivot_table
和東西pivot_table
手柄之一是,如果有是index/column
規範內重複。它將聚合所有與aggfunc
單元格相關的值。默認情況下,該功能是mean
。但是,在這種情況下,根據已提交的數據,沒有重複的組合。因此,沒有發生聚合。
太棒了!但我的x軸(年)顯示「0.0 0.5 1.0 ... + 2.009e3」。我如何將其更改爲顯示年份? – planaria
@planaria我已更新我的帖子。 – piRSquared
謝謝。你保存我的數據! – planaria