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

如何在Plotly的瀑布图中正确添加总计数值列

Plotly瀑布图总计列异常问题解决方法

问题原因

有两个核心错误导致总计列识别失败:

  • 源数据的deal value (USD)列带$符号和.千分位分隔符,读入后为字符串类型,Plotly无法识别为数值做累加计算
  • 源数据Measure列的Total值末尾带多余空格,无法和Plotly要求的总计标识匹配,被识别为普通相对值项

调整后代码

import pandas as pd
import plotly.graph_objs as go

df = pd.read_excel('C:/Users/Usuario/Desktop/python/HP/waterfall.xlsx')

# 清洗金额列:去除货币符号、千分位符,转成数值类型
df['deal value (USD)'] = df['deal value (USD)'].str.replace('$', '', regex=False)\
                                               .str.replace('.', '', regex=False)\
                                               .astype(int)

# 清洗Measure列:去除首尾空格、统一小写,避免匹配异常
df['Measure'] = df['Measure'].str.strip().str.lower()

x = df['DealID']
y = df['deal value (USD)']
measure = df['Measure']
# 格式化展示文本,和原数据的美元+点千分位格式保持一致
text = '$' + df['deal value (USD)'].apply(lambda num: f"{num:,}".replace(',', '.'))

fig = go.Figure(go.Waterfall(
    measure=measure,
    x=x,
    y=y,
    text=text,
    textposition="outside" # 可选配置:数值标签放在柱子外侧更清晰
))

# 可选布局调整
fig.update_layout(
    title="西门子季度交易金额统计",
    yaxis_title="交易金额(USD)"
)

fig.show()

补充说明

  • 可执行print(df['Measure'].unique())检查清洗后的数据是否包含total标识,执行print(df['deal value (USD)'].dtype)确认金额列已转为数值类型
  • 如果修改源数据直接将金额列存为纯数值、Measure列的总计项改为无空格的total,可省去代码里的清洗步骤

内容的提问来源于stack exchange,提问作者daniel.hillow

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 19:36:01