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

Python中遍历Series计算百分比并绘制柱状图的实现问题

解决方案

方法1:使用pandas向量化运算(推荐)

pandas支持直接对整个Series做批量运算,不需要写循环,代码更简洁效率也更高:

import pandas as pd
data = pd.array([ 6.95, 84.38, 11.82,  2.47,  1.12])
ser = pd.Series(data, index = ['wine', 'beer', 'vodka', 'champagne', 'brandy'])
# 直接计算占总和的百分比,保留2位小数
pct_ser = (ser / ser.sum() * 100).round(2)
# 绘制百分比柱状图
pct_ser.plot(kind='bar')

输出的pct_ser就是带原有索引的Series类型,可直接调用绘图方法。

方法2:按原有循环逻辑修改

如果一定要用循环实现,需要先把每次循环计算的百分比值存入列表,循环结束后再统一转为Series,保留原始索引:

pct_list = []
sum_val = ser.sum()
for i in ser.values:
    pct = i / sum_val * 100
    pct_list.append(pct.round(2))
# 把百分比列表转为带原始索引的Series
pct_ser = pd.Series(pct_list, index=ser.index)
pct_ser.plot(kind='bar')

原来的代码报错是因为每次循环得到的pct都是单个浮点数,没有把所有结果聚合为序列类型,自然无法调用plot方法。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 08:15:04