Python中基于列筛选绘制汽车品牌Rev.per.mile箱线图遇阻求助
解决方案
你的代码问题出在构造uru数据框时的逻辑错误,导致数据不匹配:
- 原代码中
Manufacturer列赋值的是包含所有列的筛选后DataFrame,而非单独的Manufacturer列 Rev.per.mile取的是整个数据集的列,和筛选后的Manufacturer行数不一致,无法正确生成有效数据框
以下是两种可行的修正方案:
方案一:直接筛选原数据后绘图
这是最简洁的方式,无需额外构造新数据框:
# 筛选目标品牌的行 filtered_cars = cars[cars['Manufacturer'].isin(['Audi', 'Suzuki', 'Toyota'])] # 绘制箱线图 sns.boxplot(data=filtered_cars, x='Manufacturer', y='Rev.per.mile')
方案二:正确构造新数据框
如果你需要单独生成uru数据框,确保两列都取筛选后的对应行:
# 用loc精准筛选行和列 uru = cars.loc[ cars['Manufacturer'].isin(['Audi', 'Suzuki', 'Toyota']), ['Manufacturer', 'Rev.per.mile'] ] # 绘制箱线图 sns.boxplot(data=uru, x='Manufacturer', y='Rev.per.mile')
额外处理(可选)
如果Rev.per.mile存在缺失值,可添加dropna()避免绘图异常:
filtered_cars = cars[cars['Manufacturer'].isin(['Audi', 'Suzuki', 'Toyota'])].dropna(subset=['Rev.per.mile'])
内容的提问来源于stack exchange,提问作者autopilot1
相关产品推荐
相关产品推荐

