如何从DataFrame中读取数据至Plotly Express旭日图?
解决Plotly旭日图动态读取单行DataFrame数值的问题
问题场景
你有一个单行CSV文件,读取为DataFrame后,希望动态提取数值生成Plotly Express旭日图,而非硬编码数值数组。
关键解决步骤
你的DataFrame仅包含一行数据,所有列的数值顺序与你定义的categories完全对应,直接提取这一行的所有值转为列表即可:
动态提取数值列表:
使用df.iloc[0].tolist()获取第一行的所有值并转为列表,或用df.values.flatten().tolist()扁平化提取,两种方式都能得到与categories匹配的数值数组。替换硬编码的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
相关产品推荐
相关产品推荐

