[英]Plotting pandas dataframe with years
error Months Year
0 15.198688 Jan 2011.0
1 13.793969 Jan_Feb 2011.0
2 15.171848 Jan_Mar 2011.0
3 5.779007 Jan_Apr 2011.0
4 1.615044 Jan_May 2011.0
5 1.536096 Jan_Jun 2011.0
6 1.159742 Jan_Jul 2011.0
0 1.697396 Jan 2012.0
1 5.149847 Jan_Feb 2012.0
2 0.876639 Jan_Mar 2012.0
3 1.865001 Jan_Apr 2012.0
4 0.333077 Jan_May 2012.0
5 2.056728 Jan_Jun 2012.0
0 9.676028 Jan 2013.0
1 3.919200 Jan_Feb 2013.0
2 4.171534 Jan_Mar 2013.0
3 2.318090 Jan_Apr 2013.0
4 0.786901 Jan_May 2013.0
5 0.936041 Jan_Jun 2013.0
6 0.115029 Jan_Jul 2013.0
有沒有辦法繪制上面的 Pandas 數據框,以便該圖有 3 條線(3 個獨特年份中的每一年一條)。 Y 軸具有“錯誤”列,X 軸顯示月份。 傳說應該是3年:2011年、2012年、2013年
對於 X 軸,如果月份是“Jan_Feb”,則標簽應僅顯示“Feb”。 如果月份是“Jan”,則標簽應顯示“Jan”
我試過 df.plot(),但它在一個圖中繪制了所有內容
您可以先進行一些數據清理 - 將years
為int
並將months
轉換為fillna
正確排序的ordered categorical
,然后按pivot
重塑,如有必要,將NaN
替換為某個值,例如0
由fillna
:
df.Year = df.Year.astype(int)
df.Months = df.Months.str[-3:].astype('category',
ordered=True,
categories=['Jan','Feb','Mar','Apr','May','Jun','Jul'])
df = df.pivot(index='Months', columns='Year', values='error').fillna(0)
print (df)
Year 2011 2012 2013
Months
Jan 15.198688 1.697396 9.676028
Feb 13.793969 5.149847 3.919200
Mar 15.171848 0.876639 4.171534
Apr 5.779007 1.865001 2.318090
May 1.615044 0.333077 0.786901
Jun 1.536096 2.056728 0.936041
Jul 1.159742 0.000000 0.115029
df.plot()
正確排序的另一種可能解決方案是按list
的有序月份reindex
:
df.Year = df.Year.astype(int)
df.Months = df.Months.str[-3:]
df = df.pivot(index='Months', columns='Year', values='error')
.fillna(0)
.reindex(['Jan','Feb','Mar','Apr','May','Jun','Jul'])
print (df)
Year 2011 2012 2013
Months
Jan 15.198688 1.697396 9.676028
Feb 13.793969 5.149847 3.919200
Mar 15.171848 0.876639 4.171534
Apr 5.779007 1.865001 2.318090
May 1.615044 0.333077 0.786901
Jun 1.536096 2.056728 0.936041
Jul 1.159742 0.000000 0.115029
請注意,在此數據集中,可以從索引中識別月份,即。 [0..6]
[Jan..Jul]
[0..6]
-> [Jan..Jul]
,應使用以下代碼生成所需的圖:
plt = df.pivot(values='error', columns='Year').plot()
但是,現在 x 軸刻度文本是數字。 我們可以使用以下方法解決該問題:
plt.set_xticklabels(['Jan','Feb','Mar','Apr','May','Jun','Jul'])
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.