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

如何用Python创建展示Pandas数据所有取值路径的类决策树图?

实现方案:展示所有组合路径的层级可视化图

完全可以实现这种需求,不需要构建统计模型,只需通过统计数据组合的数量,再用可视化库生成层级有向图即可。下面是具体的实现步骤和代码示例:

核心思路

  1. 统计每个层级组合的观测数量:
    • 顶层:每个product的总观测数
    • 中间层:每个product-color组合的观测数
    • 底层:每个product-color-type组合的观测数
  2. 用可视化库构建有向图,按product → color → type的层级关系连接节点,每个节点显示对应名称和计数。

代码实现(基于Graphviz)

Graphviz是生成层级图的理想工具,可视化效果接近决策树样式,步骤如下:

1. 安装依赖

首先安装Python库和系统依赖:

pip install graphviz

注意:需要在系统中安装Graphviz二进制文件,例如Ubuntu执行sudo apt install graphviz,Windows可从官网下载安装包。

2. 完整代码

import pandas as pd
from graphviz import Digraph

# 示例数据(替换为你的实际DataFrame)
data = {
    'product': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
    'color': ['blue', 'red', 'red', 'red', 'red', 'green', 'yellow', 'yellow', 'blue'],
    'type': [2, 3, 1, 1, 2, 5, 1, 2, 3]
}
df = pd.DataFrame(data)

# 统计各层级的观测数量
# 1. Product层级计数
product_counts = df['product'].value_counts().reset_index()
product_counts.columns = ['product', 'count']

# 2. Product-Color层级计数
color_counts = df.groupby(['product', 'color']).size().reset_index(name='count')

# 3. Product-Color-Type层级计数
type_counts = df.groupby(['product', 'color', 'type']).size().reset_index(name='count')

# 创建有向图对象
dot = Digraph(format='png')
dot.attr(rankdir='TB', size='8,10')  # TB表示从上到下排列,调整图的大小

# 添加Product节点
for _, row in product_counts.iterrows():
    node_id = f"prod_{row['product']}"
    dot.node(node_id, label=f"{row['product']}\n({row['count']})", shape='ellipse')

# 添加Color节点并连接到对应Product
for _, row in color_counts.iterrows():
    prod_node_id = f"prod_{row['product']}"
    color_node_id = f"color_{row['product']}_{row['color']}"
    dot.node(color_node_id, label=f"{row['color']}\n({row['count']})", shape='ellipse')
    dot.edge(prod_node_id, color_node_id)

# 添加Type节点并连接到对应Color
for _, row in type_counts.iterrows():
    color_node_id = f"color_{row['product']}_{row['color']}"
    type_node_id = f"type_{row['product']}_{row['color']}_{row['type']}"
    dot.node(type_node_id, label=f"{row['type']}\n({row['count']})", shape='box')
    dot.edge(color_node_id, type_node_id)

# 保存并打开可视化图
dot.render('product_path_tree', view=True)

效果说明

  • 生成的图会以从上到下的层级展示所有存在的product→color→type路径
  • 每个节点会显示对应的值和该组合的观测数量
  • 不同层级的节点用不同形状区分(椭圆表示分类节点,方框表示最终类型节点),路径关系用箭头清晰连接

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 07:07:32