Barplot为 - :'str'和'float'返回不支持的操作数类型

时间:2017-10-18 07:05:20

标签: python pandas matplotlib bar-chart

我尝试使用以下代码绘制pivot_table的条形图:

fig=plt.figure(figsize=(10,10))
ax1=fig.add_subplot(111)

ax1.bar(Products.index,Products["Amount"].values)

数据透视表就像:

                                      Amount
Material                             
454T006S R 167 134:11                0.000000
3457T006S R IE216 167 246:1          4.500000
67T009S R 1510K304:1              36.000000
7676009S R IE216 1510K304:1        30.500000
676T012S 167 246:1                  1.000000
2324T012S R 1510 111                6.000000
1516T012S R 1510 151               50.500000
1516T012S R 1510 20:1               26.500000

但它返回:

  

不支持的操作数类型 - :'str'和'float'

我做错了什么?

1 个答案:

答案 0 :(得分:2)

问题是您的索引值为strings

我认为最简单的是使用pandas.DataFrame.plot.bar

Products["Amount"].plot.bar()

您可以将字符串的值映射到range,绘制范围并最后添加xticks

fig=plt.figure(figsize=(10,10))
ax1=fig.add_subplot(111)

idx=Products.index.tolist()
x = range(len(idx))

plt.bar(x, Products["Amount"].values)
plt.xticks(x, idx, rotation=90)
plt.show()

类似的解决方案是reset index,默认情况下为index

fig=plt.figure(figsize=(10,10))
ax1=fig.add_subplot(111)

Products = Products.reset_index()
plt.bar(Products.index, Products["Amount"].values)
plt.xticks(Products.index, Products['Material'], rotation=90)
plt.show()