2014-10-20 100 views
2

我想從一個熊貓數據幀,看起來像下面創建一個單一的時間序列圖:複雜的數據框與熊貓/ Matplotlib繪製

*sample of a simplified version of my dataframe:* 

index to_network count 
201401 net_1   100 
201401 net_2   200 
201401 net_3   150 
201402 net_1   300 
201402 net_2   250 
201403 net_1   175 

最後,最終的圖形應該是一個時間序列(x軸是索引,y軸是'count'),並且每行都是to_network列中的網絡(例如,一行應該是net_1)。

我一直在閱讀'python for data analysis'一書,但他們似乎並不複雜。

回答

2

它工作嗎?

df.groupby('to_network').count.plot() 

如果你想正確地顯示日期,你可以嘗試:

df.index=pd.to_datetime(df.index,format='%Y%m') 
1

要回答你的問題,我在筆記本上這裏已經檢查:http://nbviewer.ipython.org/github/ericmjl/Stack-Overflow-Answers/blob/master/20141020%20Complex%20Pandas%20Plotting/Untitled0.ipynb

的核心思想是做一個groupby,然後繪製只有你感興趣的列

守則還粘貼了以下位置:

df = pd.read_csv("data.csv") 
df.groupby("to_network")['count'].plot() 

此外,一定要在丹尼爾的貢獻,在那裏你格式化正確索引添加:

df.index=pd.to_datetime(df.index,format='%Y%m') 

對於歸屬問題,除了在此引用它外,我還提出了她的答案。

我希望這回答了這個問題;如果有,請接受答案!

1

情節在大熊貓的默認行爲是使用索引爲x軸和繪製每列一行。所以你想重塑你的數據框來反映這個結構。你可以做到以下幾點:

df.pivot_table(index='index', columns = 'to_network', values = 'count', aggfunc = 'sum').plot() 

這將轉動您的DF(這是從長遠格式ALA ggplot樣式)到從中大熊貓默認打印行爲將產生每個網絡類型有一個符合你期望的結果框架索引作爲x軸並計爲值。