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

如何在Streamlit指标UI中计算并展示百分比列的总和/平均值

问题与解决方案:Streamlit中展示Pandas百分比数据的总计/平均值

问题描述

我有一个包含百分比列的Pandas DataFrame,想要在Streamlit的Metrics组件中展示这些百分比的总和或平均值。我尝试了以下代码,但输出不符合预期:

# 计算顶部分析数据
total_investment = df['Investment']

total1,total2,total3,total4,total5=st.columns(5,gap='small')
with total1:
    st.info('Sum Investment',icon="💰")
    st.metric(label="Sum TZS",value=f"{total_investment}")

运行后得到的结果是直接输出了整个Investment列的数据,而非计算后的总和或平均值。

解决方案

要正确计算并展示百分比数据的总计或平均值,按以下步骤操作:

1. 确保数据类型正确

如果Investment列是带百分号的字符串格式,先转换为数值类型:

# 处理带%的字符串列,转换为小数形式的数值
df['Investment'] = df['Investment'].str.replace('%', '').astype(float) / 100

2. 计算总和或平均值

使用Pandas的聚合函数完成计算:

  • 计算百分比总和:
total_investment = df['Investment'].sum()
  • 计算百分比平均值:
avg_investment = df['Investment'].mean()

3. 在Streamlit中格式化展示

将计算结果格式化为易读的百分比形式,再传入Metrics组件:

# 计算总和并格式化显示
total_investment = df['Investment'].sum()
formatted_total = f"{total_investment * 100:.2f}%"

total1,total2,total3,total4,total5=st.columns(5,gap='small')
with total1:
    st.info('投资占比总和',icon="💰")
    st.metric(label="总和", value=formatted_total)

# 计算平均值并格式化显示
avg_investment = df['Investment'].mean()
formatted_avg = f"{avg_investment * 100:.2f}%"

with total2:
    st.info('投资占比平均值',icon="📊")
    st.metric(label="平均值", value=formatted_avg)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 22:47:43