Рядом с деревом для его отображения можно использовать модуль Python Graph networkx .
import matplotlib.pyplot as plt
import networkx as nx
import csv
G=nx.DiGraph()
lables = {}
edge=[]
with open('test.csv') as f:
reader = csv.reader(f)
next(reader) # skip the first line in the input file
for i,row in enumerate(reader):
print(row)
lables[row[2]] = row[0]
if i!= 0:
edge.append((row[2],row[3]))
G.add_edges_from(edge)
# positions for all nodes
pos = nx.spring_layout(G)
# nodes
nx.draw_networkx_nodes(G, pos,node_size=1000)
# edges
nx.draw_networkx_edges(G, pos, with_labels = False ,width=6)
# labels
nx.draw_networkx_labels(G, pos,lables,font_size=16)
plt.axis('off')
plt.show()