前言
通过绘制桑基图来呈现不同时期用户的状态变更~
代码
import pandas as pd
data = pd.read_excel('data-2.xlsx', sheet_name = 'Sheet2')
# 取桑基图的节点
node = list()
each_node = list()
for i in data['col1']:
each_node.append(i)
for i in data['col2']:
each_node.append(i)
each_node = list(set(each_node))
for j in each_node:
if j in ['2019回流期','2019睡眠期','2019衰退期','2019成长期-重启','2019成长期-起步',
'2020回流期','2020睡眠期','2020衰退期','2020成长期-重启','2020成长期-起步',
'2021回流期','2021睡眠期','2021衰退期','2021成长期-重启','2021成长期-起步']:
continue
dic = {}
dic['name'] = j
node.append(dic)
# 取桑基图的边
link = list()
for i in data.values.tolist():
dic={}
dic['source'] = i[0]
dic['target'] = i[1]
dic['value'] = i[2]
link.append(dic)
from pyecharts import options as opts
from pyecharts.charts import Sankey
pic = (
Sankey(init_opts=opts.InitOpts(width='1200px',height='600px')).add('',
node,
link,
node_width=30, node_gap=10, node_align="left",
linestyle_opt=opts.LineStyleOpts(opacity = 0.3, curve = 0.5, color = 'source'),
label_opts=opts.LabelOpts(position = 'right'),
)
)
pic.render_notebook()