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

Python使用pandas如何绘制仅包含人数小于50的直方图?

原写法不生效的核心原因

你之前尝试的df[df['people'] < 50].hist()没有达到预期,本质是方法的调用对象不对:

  • 这个写法是先筛选出people值小于50的整行子集,再对这个子集(也就是一个完整的DataFrame)调用.hist()方法
  • pandas中DataFrame对象的.hist()方法,默认会为数据集内所有数值列逐个生成直方图,不是只针对people列,自然没法得到你想要的、仅针对people列筛选后的单张分布直方图
正确实现逻辑

核心顺序是:先完成行筛选,再从筛选后的结果中取出你要绘图的people列,最后对这列Series对象调用直方图方法。

  • 易读的分步写法:
    # 第一步:筛选出people列值小于50的所有行
    filtered_df = df[df['people'] < 50]
    # 第二步:从筛选结果中取出people列,绘制直方图
    filtered_df['people'].hist()
    
  • 等价的单行紧凑写法:
    df[df['people'] < 50]['people'].hist()
    
  • 可读性更强的pandas原生筛选写法(避免多层方括号嵌套):
    df.query("people < 50")['people'].hist()
    
常见排查项

如果调整后还是没法正常出图,检查两个高频踩坑点:

  • 确认people列的数据类型:如果导入CSV时该列被识别为字符串类型,< 50的数值比较逻辑会完全失效。可以先通过df['people'] = pd.to_numeric(df['people'], errors='coerce')将列转为数值型,自动把无法转换的无效值识别为缺失值后,再做筛选逻辑
  • 如果是在.py脚本中运行代码,记得在绘图代码后补充plt.show(),才能正常弹出展示绘制的图表,Jupyter这类交互环境下则不需要额外写这行

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.23 00:45:04