如何用Python创建展示Pandas数据所有取值路径的类决策树图?
实现方案:展示所有组合路径的层级可视化图
完全可以实现这种需求,不需要构建统计模型,只需通过统计数据组合的数量,再用可视化库生成层级有向图即可。下面是具体的实现步骤和代码示例:
核心思路
- 统计每个层级组合的观测数量:
- 顶层:每个
product的总观测数 - 中间层:每个
product-color组合的观测数 - 底层:每个
product-color-type组合的观测数
- 顶层:每个
- 用可视化库构建有向图,按
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
相关产品推荐
相关产品推荐

