如何在python pandas中传递一个数组来绘制两个轴?

时间:2015-11-19 19:52:38

标签: python arrays numpy pygal

我正在尝试使用Python和Pygal库创建XY图表。源数据包含在具有三列的CSV文件中; ID,投资组合和价值。不幸的是,我只能绘制一个轴,我怀疑它是阵列的一个问题。谁能指出我正确的方向?我需要使用numpy吗?谢谢!

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

1 个答案:

答案 0 :(得分: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()

可能会更优雅地使用pandas或pygal API将列添加到元组列表中。