如何使用seaborn绘制各车辆对应人员数量的折线图
正确实现方案
你需要先完成分组统计得到每辆车对应的id计数,再将统计结果传入seaborn绘图,不要直接在绘图函数内写未基于DataFrame的统计逻辑。
具体实现代码
import seaborn as sns import matplotlib.pyplot as plt # 1. 按car分组统计每个分组下的id数量 car_id_count = df.groupby('car', as_index=False)['id'].count().rename(columns={'id': 'id_total'}) # 2. 基于统计结果绘制折线图,加marker可以更清晰展示每个车辆对应的数值点 sns.lineplot(x='car', y='id_total', data=car_id_count, marker='o') plt.show()
结果说明
统计得到的car_id_count完全匹配你预期的数值:
- car=1时,id_total=2
- car=2时,id_total=3
原代码错误原因
你之前写的y='car'.count()是直接对Python字符串'car'做长度计算,返回固定值3,完全没有读取DataFrame内的数据,自然无法得到正确结果。
补充提示:如果car列是离散分类值,建议绘图前先将car列转为字符串类型
car_id_count['car'] = car_id_count['car'].astype(str),避免x轴自动生成不存在的中间数值刻度。
内容的提问来源于stack exchange,提问作者vegiv
相关产品推荐
相关产品推荐

