我尝试使用以下代码绘制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'
我做错了什么?
答案 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()