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

如何用Python Pandas绘制价格占比直方图(附示例数据)

绘制价格区间占比的横向直方图

数据准备

先把你的表格数据整理成可处理格式,用Python的pandas加载:

import pandas as pd

# 构造数据
data = {
    'item': ['H1', 'H2', 'H3', 'H4', 'H5', 'H6'],
    'CAR_PRIC1': [17400.00, 35450.00, 55780.00, 78500.00, 25609.55, 96000.00],
    'Car_PRICE2': [18400.00, 27400.00, 57400.00, 37400.00, 77400.00, 97400.00]
}
df = pd.DataFrame(data)

合并价格数据

将两列价格合并,统计所有订单的价格分布:

# 合并两列价格,得到全部订单的价格列表
all_prices = pd.concat([df['CAR_PRIC1'], df['Car_PRICE2']], ignore_index=True)
total_orders = len(all_prices)  # 总订单数

定义价格区间

根据数据范围自定义区间,这里按2万为间隔划分:

# 定义价格区间与对应标签
bins = [0, 20000, 40000, 60000, 80000, 100000]
labels = ['0-2万', '2-4万', '4-6万', '6-8万', '8-10万']

# 对所有价格做区间分组
price_bins = pd.cut(all_prices, bins=bins, labels=labels, right=False)

计算区间占比

统计各区间订单数,转换为百分比:

# 统计区间订单数,计算占比(保留两位小数)
bin_counts = price_bins.value_counts().sort_index()
bin_percentages = (bin_counts / total_orders * 100).round(2)

绘制横向直方图

用matplotlib生成符合要求的图形:

import matplotlib.pyplot as plt

plt.figure(figsize=(8, 5))
# 绘制横向条形图(对应需求的直方图效果)
bars = plt.barh(bin_percentages.index, bin_percentages.values, color='#1f77b4')

# 给条形添加百分比标签
for bar in bars:
    width = bar.get_width()
    plt.text(width + 0.5, bar.get_y() + bar.get_height()/2, 
             f'{width}%', ha='left', va='center')

# 设置坐标轴与标题
plt.xlabel('订单占总订单的百分比')
plt.ylabel('价格区间')
plt.title('各价格区间订单占比分布')
plt.xlim(0, max(bin_percentages.values) + 5)  # 预留空间显示标签
plt.tight_layout()
plt.show()

效果说明

运行代码后会生成横向直方图:Y轴为自定义的价格区间,X轴为对应区间的订单占比,每个条形旁标注具体百分比数值。若需调整区间划分,修改bins和labels参数即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 21:02:10