0

我正在尝试使用 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
4

1 回答 1

1

也许在这里有点晚了,但我只是做了类似的事情。您的第二个示例需要将多个列作为数组提交,然后您返回的 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 将列放入元组列表中。

于 2017-09-02T11:04:46.810 回答