2015-11-19 49 views
0

我想創建一個使用Python和Pygal庫的XY圖表。源數據包含在一個包含三列的CSV文件中; ID,投資組合和價值。不幸的是我只能繪製一個座標軸,我懷疑這是一個數組問題。任何人都可以將我指向正確的方向嗎?我需要使用numpy嗎?謝謝!如何在python熊貓中傳遞數組來繪製兩個座標軸?

import pygal 
import pandas as pd 
data = pd.read_csv("profit.csv") 
data.columns = ["ID", "Portfolio", "Value"] 
xy_chart = pygal.XY() 

xy_chart.add('Portfolio', data['Portfolio','Value'] << I suspect this is wrong 
) 
xy_chart.render_in_browser() 

隨着

import pygal 
import pandas as pd 
data = pd.read_csv("profit.csv") 
data.columns = ["ID", "Portfolio", "Value"] 
xy_chart = pygal.XY() 

xy_chart.add('Portfolio', data['Portfolio'] 
) 
xy_chart.render_in_browser() 

我得到:

與一系列水平的數據點/值的曲線圖。即它具有X值但不具有Y值。

有了:

import pygal 
import pandas as pd 
data = pd.read_csv("profit.csv") 
data.columns = ["ID", "Portfolio", "Value"] 
xy_chart = pygal.XY() 

xy_chart.add('Portfolio', data['Portfolio','Value'] 
) 
xy_chart.render_in_browser() 

我得到:

KeyError: ('Portfolio', 'Value') 

的樣本數據:

ID Portfolio Value 
1 1 -2560.042036 
2 2 1208.106958 
3 3 5702.386949 
4 4 -8827.63913 
5 5 -3881.665733 
6 6 5951.602484 
+0

請詳細說明。 「*我只能繪製一個軸*」,你究竟意味着什麼?對方會發生什麼?它沒有出現嗎?它覆蓋前一個嗎?它會導致錯誤嗎?如果是這樣,錯誤是什麼? –

+0

謝謝,我試圖添加更多的細節。我也嘗試上傳圖片,但它返回了一個錯誤。設想一個具有X和Y軸的圖形,但所有數據點都是在Y = 0處沿着X軸。 – Edmund

+0

我對'pygal'不熟悉,但是[看看文檔](http://www.pygal.org/en/latest/documentation/types/xy.html)?看起來你可以添加一個通用的二維散點圖,方法是在「pygal.XY.add」中添加一個2元素元組列表。即在'add()'裏面試試'zip(data ['Portfolio'],data ['Value'])''。 –

回答

0

也許有點晚了這裏,但我只是做了類似的事情。你的第二個例子需要將多個列作爲數組交付,然後你需要將返回的DataFrame轉換爲元組列表。

import pygal 
import pandas as pd 
data = pd.read_csv("profit.csv") 
data.columns = ["ID", "Portfolio", "Value"] 

points = data[['Portfolio','Value']].to_records(index=False).tolist() 

xy_chart = pygal.XY() 
xy_chart.add('Portfolio', points) 
xy_chart.render_in_browser() 

熊貓或pygal API可能會有更優雅的用途來將列轉換爲元組列表。

相關問題