如何将列名应用于通过DataFrame.value_counts()

时间:2016-03-30 22:36:58

标签: python pandas dataframe d3py

我有以下pandas Series(实际上是在某列上运行value_counts()的输出 - " Tipo de vivienda" - DataFrame

enter image description here

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

enter image description here

然后我开始绘制条形图:

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()时没有显示任何内容,我猜它是因为我没有真正的DataFrame,而是{{1}这样就是这样的。

Series上调用DataFrame()的方法是错误的吗?

  • Python:2.7.11
  • pandas:0.18.0

1 个答案:

答案 0 :(得分:1)

我不认为将系列视为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')