You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用Seaborn或Matplotlib为表格两列绘制并列柱状图

解决方法

问题根源

你的代码有两个关键错误:

  • y = 'Quantities,Revenues'不符合seaborn的参数规则,catplot的y参数只能接收单个列名,无法直接传入多个列。
  • 你指定了hue='Details',但你的数据表中并没有这一列,参数错误会导致整体解析异常,进而引发类似无法识别Country的报错。

修复步骤

要实现每个国家数量与收入的并列柱状图,需要先把宽格式数据转成长格式,再用catplot绘图:

  1. 转换数据格式
    用pandas的melt函数,将Quantities和Revenues两列合并为指标列和数值列:
import seaborn as sns
import pandas as pd
import matplotlib.pyplot as plt

# 转换宽表为长表
dj_melted = dj.melt(
    id_vars='Country',  # 保留的分组列
    value_vars=['Quantities', 'Revenues'],  # 需要转换的列
    var_name='Metric',  # 新的指标列名(区分数量/收入)
    value_name='Value'  # 新的数值列名
)
  1. 绘制并列柱状图
    用转换后的数据绘图,通过hue区分不同指标:
sns.catplot(kind='bar', data=dj_melted, x='Country', y='Value', hue='Metric')
plt.show()

额外检查

如果还是提示无法识别Country,请确认:

  • 数据框dj中确实存在名为Country的列,检查列名是否有拼写错误、空格或大小写差异。
  • 可以执行print(dj.columns)查看所有列名,确保和代码中的'Country'完全一致。

内容的提问来源于stack exchange,提问作者user20030574

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.07 10:40:51