使用Pandas DataFrame调用Matplotlib绘制柱状图时高度异常问题排查
问题原因及解决办法
你的问题和Pandas的float64数据类型完全无关,核心错误是调用了sum(price)——这个操作会把price列的所有数值求和,得到一个单一的总数值。当你把这个单一值传给plt.bar()的y参数时,Matplotlib会给每个x轴的customer_id都使用这个相同的总和值,所以所有柱子高度完全一致。
修正后的代码
把sum(price)换成price即可,直接传入整个列的数值:
pandas_df.dtypes display(pandas_df ) customer_id = pandas_df['customer_id'] price = pandas_df['sum(price)'] plt.bar(customer_id, price) # 去掉sum() plt.show()
补充说明
你手动用列表绘制正常,是因为你传入的是每个元素对应的数值列表,而不是单一的求和值。只要直接传入Pandas的Series(也就是price变量),Matplotlib会自动遍历每个元素和对应的customer_id匹配,画出正确的柱状图。
内容的提问来源于stack exchange,提问作者adam sara
相关产品推荐
相关产品推荐

