使用Pandas分组后用Seaborn绘制箱线图无输出,求解决
问题分析与修正方案
你的代码存在几个关键问题导致无法生成箱线图,以下是具体问题和修正后的代码:
关键错误点
- 无需提前分组:Seaborn的
boxplot可直接接收原始DataFrame,通过指定x和y参数自动完成分组,提前用groupby得到的GroupBy对象无法被boxplot正确解析。 - 参数使用错误:
x参数应传入列名字符串("Day of Week"),若要指定星期的显示顺序,需用order参数传入列表,而非把列表传给x。 - 标签格式错误:
set()方法中的xlabel和ylabel需传入字符串,而非列表。 - 冗余代码与拼写错误:
box_plt.plot()是多余的,Seaborn绘制后已生成图表;plot.show()应为plt.show(),模块名拼写错误。
修正后的代码
import pandas as pd import seaborn as sb import matplotlib.pyplot as plt # 读取数据(替换为你的实际文件路径) scooters = pd.read_csv("你的数据集路径.csv") # pd.read_csv返回的就是DataFrame,无需额外转换 df = scooters # 指定x为星期列,y为时长列,order控制星期的显示顺序 box_plt = sb.boxplot(data=df, x="Day of Week", y="Trip Duration", order=['mon', 'tue', 'wed', 'thu', 'fri', 'sat', 'sun']) # 设置坐标轴标签 box_plt.set(xlabel="Day of Week", ylabel="Trip Duration") # 显示图表 plt.show()
补充说明
如果你的"Day of Week"列中的值不是['mon', 'tue', ...]这种格式,需确保order参数中的值和列中的实际值完全匹配,否则对应星期的箱线图不会显示。
内容的提问来源于stack exchange,提问作者SVK
相关产品推荐
相关产品推荐

