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

如何在pandas中基于单列不同值区间创建饼图?

pandas基于单列数值区间分箱绘制饼图

实现整体分为三步:加载/构造数据、按指定规则对数值列分箱打分类标签、统计各分类计数后绘制饼图。

完整实现代码

import pandas as pd
import matplotlib.pyplot as plt

# 1. 构造示例数据
df = pd.DataFrame({
    'City': ['abc', 'mno', 'xyz', 'uvw', 'def'],
    'Population': [5000, 2000, 7000, 9000, 11000]
})

# 2. 按人口区间规则分箱
# 定义区间边界:负无穷到5000,5000到10000,10000到正无穷
bins = [-float('inf'), 5000, 10000, float('inf')]
category_labels = [
    'underpopulated(人口不足)',
    'moderate-populated(人口适中)',
    'overpopulated(人口过剩)'
]
# right=False设置区间为左闭右开,匹配规则 [负无穷,5000)、[5000,10000)、[10000,正无穷)
# 若需要严格遵循「<5000、5000<P<10000、>10000」的规则(排除等于5000、10000的边界值),可先过滤掉Population等于边界值的行再分箱
df['pop_category'] = pd.cut(
    df['Population'],
    bins=bins,
    labels=category_labels,
    right=False
)

# 3. 统计各分类数量并绘制饼图
category_stats = df['pop_category'].value_counts()
plt.figure(figsize=(6, 6))
plt.pie(
    category_stats,
    labels=category_stats.index,
    autopct='%1.1f%%', # 饼图显示百分比
    startangle=90
)
plt.axis('equal') # 强制饼图为正圆形
plt.title('城市人口区间分布')
plt.show()

运行结果说明

基于提供的示例数据运行后,各分类统计结果如下:

  • underpopulated(人口不足):共1个城市(mno,人口2000)
  • moderate-populated(人口适中):共3个城市(abc、xyz、uvw,因左闭右开规则5000被划入该分类,可根据实际业务需求调整边界包含逻辑)
  • overpopulated(人口过剩):共1个城市(def,人口11000)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 00:48:20