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

如何从DataFrame中读取数据至Plotly Express旭日图?

解决Plotly旭日图动态读取单行DataFrame数值的问题

问题场景

你有一个单行CSV文件,读取为DataFrame后,希望动态提取数值生成Plotly Express旭日图,而非硬编码数值数组。

关键解决步骤

你的DataFrame仅包含一行数据,所有列的数值顺序与你定义的categories完全对应,直接提取这一行的所有值转为列表即可:

  1. 动态提取数值列表:
    使用df.iloc[0].tolist()获取第一行的所有值并转为列表,或用df.values.flatten().tolist()扁平化提取,两种方式都能得到与categories匹配的数值数组。

  2. 替换硬编码的values参数:
    将提取到的动态数值列表传入px.sunburst的values参数即可。

完整代码示例

import pandas as pd
import plotly.express as px

# 读取CSV为DataFrame
df = pd.read_csv("JobCompletion.csv")

# 定义类别和父节点(保持原有定义)
categories = ["Total","Completed","Unsuccessful","Failed","Timeout","Cancelled"]
parent = ["","Total","Total","Unsuccessful","Unsuccessful","Unsuccessful"]

# 动态提取数值列表
dynamic_values = df.iloc[0].tolist()

# 生成旭日图
fig = px.sunburst(
    df,
    names = categories,
    parents = parent,
    values = dynamic_values,
    branchvalues = 'total'
)

# 显示图表
fig.show()

额外说明

  • df.iloc[0]选取DataFrame的第一行(索引为0的行),.tolist()将该行的Series转为Python列表,顺序与categories完全匹配,确保数值对应正确。
  • 只要后续CSV的列顺序不变,即使数值更新,这段代码也能自动获取最新数据,无需手动修改数值数组。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.27 20:12:09