2

我有以下熊猫Series(实际上是value_counts()在某个列上运行的输出 - “Tipo de vivienda” - a DataFrame

在此处输入图像描述

使用 Seaborn、Bokeh 等可视化库。我可以直接在这个系列上形成条形图,无需额外的争论或转换。然而对于d3py,条形图只能从 DataFrames 生成(我相信)。所以我将系列转换为DataFrame

在此处输入图像描述

然后我开始绘制条形图:

p = d3py.PandasFigure(v_as_df)

此时,我需要告诉 d3py 我想要一个条形图。我还需要告诉它列的标题,这就是事情失败的地方。打电话v_as_df.columns()给我:

Index([u'Tipo de vivienda'], dtype='object')

有点猜测列名是什么,我尝试:

p += d3py.Bar('', 'Tipo de vivienda') # x, y

...但是当我打电话时什么都没有显示p.show(),我猜这是因为我没有一个 true DataFrame,而是一个Series这样的演员。

打电话DataFrame()Series不是走错路了?

  • 蟒蛇:2.7.11
  • 熊猫:0.18.0
4

1 回答 1

1

我不认为将 Series 转换为 DataFrame 会产生任何问题。

然而这看起来不对

p += d3py.Bar('', 'Tipo de vivienda') # x, y

空字符串可能是错误的来源。

您的 DataFrame 由一个索引('casa')和一列('Tipo de vivienda')组成

您正在为您x的参数传递一个空字符串,因此 d3py 会查找名称为 '' 的列,但没有找到它,但失败了。

解决方案: 1. 检查 d3py 的文档,了解如何将索引作为图表的值传递 2. 执行以下操作:

v_as_df = v_as_df.reset_index()  # Transform your index into a column
print v_as_df.columns
### WILL output something like :**['index', 'Tipo de vivienda']**

then :
p = d3py.PandasFigure(v_as_df)
# adapt *'index'* with whatever you get from printing v_as_df.columns above
p += d3py.Bar('index', 'Tipo de vivienda') 
于 2016-04-01T07:27:55.057 回答