【Python】使用pyecharts制作桑基图
提示:基于pyecharts和pandas,本文详细而全面的讲解了从数据处理到桑基图制作的整个过程
文章目录
- 前言
- 一、pyecharts是什么?
- 二、使用步骤
- 1.引入库
- 2.读入数据
- 3.数据处理
- 4.制作桑基图
- 5.完整代码如下
- 总结
前言
桑基图作为一种流程图表,具有直观性、可视化效果好、易于比较、可交互性和可扩展性等优点,可以帮助人们更好地理解和处理数据,同时还可以在各个领域中发挥重要的作用。
不同于其他介绍桑基图的文档,本文档从数据处理到桑基图制作提供指导,可以帮助大家非常方便的制作桑基图。
一、pyecharts是什么?
Pyecharts 是一种基于 Python 语言的数据可视化库,它能够生成丰富、交互式和动态的图表。具有许多优点:
- 容易上手:Pyecharts 设计简洁,易于理解和学习。即使你没有编程经验,也可以在很短的时间内创建出高质量的图表。
- 多样化的图表类型:Pyecharts 支持多种类型的图表,包括折线图、柱状图、饼图、散点图、地图等。此外,Pyecharts还支持组合图表,你可以将多个图表组合在一起,以呈现更多样的数据。
- 丰富的图表样式:Pyecharts支持多种图表样式,包括颜色、标签、标题等。这些样式可以根据你的需求进行自定义,以创造出符合你品牌形象或主题的图表。
- 交互式:Pyecharts 提供了丰富的交互功能,如鼠标滑过提示、缩放、拖动、选取、联动等,可以帮助你更加直观地分析和呈现数据。
- 可视化效果高:Pyecharts 的图表效果非常好,支持高清分辨率和无损缩放,可以呈现出非常美观、清晰的图表。
- 可扩展性:Pyecharts 可以与多个 Python 库集成,如 Pandas、NumPy、Jupyter Notebook 等,也可以支持多个数据格式,如 CSV、JSON、Excel 等。
二、使用步骤
1.引入库
代码如下(示例):
import pandas as pd
from pyecharts.charts import Sankey
from pyecharts import options as opts
import warnings
warnings.filterwarnings("ignore")
2.读入数据
代码如下(示例):
data=pd.read_csv(r'test1.csv',encoding='gbk')
print(data.head())
运行得到如下结果:
示例数据,代表不同id的用户于某天在某个购物网站的访问行为
3.数据处理
比如我们想要制作用户访问行为的桑基图,查看用户的行为情况。首先将以上数据处理成制作桑基图的数据格式
1.数据转置
代码如下(示例):
data_pivot = pd.pivot(data,index=['report_day','distinct_id'],columns='rank_view',values='rank_event_category_name')
data_pivot.reset_index(inplace=True)
data_copy=data_pivot.copy()
print(data_copy)
运行得到如下结果:
2.缺失值处理
代码如下(示例):
for columns in data_copy.iloc[:,1:]:data_copy[columns].fillna(str(columns)+'-'+'流失',inplace=True)
print(data_copy)
运行得到如下结果:
3.交换两列的位置
代码如下(示例):
temp=data_copy['distinct_id']
data_copy.drop(['distinct_id'],axis=1,inplace=True)
data_copy['distinct_id']=temp
print(data_copy)
运行得到如下结果:
4.移除不需要的字段
代码如下(示例):
data_copy=data_copy.drop(['report_day'],axis=1)
data_copy.reset_index(drop=True,inplace=True)
print(data_copy)
运行得到如下结果:
4.制作桑基图
根据以上处理后的数据,制作桑基图并保存
1.数据转置
代码如下(示例):
#名称列表
lis=data_copy.columns.tolist()[:-1]
lis1=lis[:-1]
lis2=lis[1:]
data2=pd.DataFrame()
for i in zip(lis1,lis2):datai=data_copy.pivot_table('distinct_id',index=list(i),aggfunc='count').reset_index()datai.columns=[0,1,2]data2=pd.concat([data2,datai])#生成Nodes数据
nodes=[]
nodes.append({'name': '1-home_page'})for value in data2.iloc[:,1].unique():dic={}dic['name']=valuenodes.append(dic)linkes=[]
for i in data2.values:dic={}dic['source']=i[0]dic['target']=i[1]dic['value']=i[2]linkes.append(dic)#作图
pic=(Sankey(init_opts=opts.InitOpts(width="2400px", height="1200px",theme='westeros'))#Sankey().add('',nodes,linkes,linestyle_opt=opts.LineStyleOpts(opacity=0.3,curve=0.5,color='source'),label_opts=opts.LabelOpts(position='top'),node_gap=30,).set_global_opts(title_opts=opts.TitleOpts(title='用户着行为路径图'))
)
pic.render('用户着行为路径图.html')
运行得到如下结果:
5.完整代码如下
代码如下(示例):
import pandas as pd
from pyecharts.charts import Sankey
from pyecharts import options as opts
import warnings
warnings.filterwarnings("ignore")data=pd.read_csv(r'test1.csv',encoding='gbk')data_pivot = pd.pivot(data,index=['report_day','distinct_id'],columns='rank_view',values='rank_event_category_name')
data_pivot.reset_index(inplace=True)
data_copy=data_pivot.copy()#缺失值处理
for columns in data_copy.iloc[:,1:]:data_copy[columns].fillna(str(columns)+'-'+'流失',inplace=True)#交换两列的位置
temp=data_copy['distinct_id']
data_copy.drop(['distinct_id'],axis=1,inplace=True)
data_copy['distinct_id']=tempdata_copy=data_copy.drop(['report_day'],axis=1)
data_copy.reset_index(drop=True,inplace=True)
print(data_copy)
#
#名称列表
lis=data_copy.columns.tolist()[:-1]
lis1=lis[:-1]
lis2=lis[1:]
data2=pd.DataFrame()
for i in zip(lis1,lis2):datai=data_copy.pivot_table('distinct_id',index=list(i),aggfunc='count').reset_index()datai.columns=[0,1,2]data2=pd.concat([data2,datai])#生成Nodes数据
nodes=[]
nodes.append({'name': '1-home_page'})for value in data2.iloc[:,1].unique():dic={}dic['name']=valuenodes.append(dic)linkes=[]
for i in data2.values:dic={}dic['source']=i[0]dic['target']=i[1]dic['value']=i[2]linkes.append(dic)#作图
pic=(Sankey(init_opts=opts.InitOpts(width="2400px", height="1200px",theme='westeros'))#Sankey().add('',nodes,linkes,linestyle_opt=opts.LineStyleOpts(opacity=0.3,curve=0.5,color='source'),label_opts=opts.LabelOpts(position='top'),node_gap=30,).set_global_opts(title_opts=opts.TitleOpts(title='用户着行为路径图'))
)
pic.render('用户着行为路径图.html')
总结
以上就是今天要讲的内容,基于以上步骤,相信大家一定能够制作出自己需求的桑基图。
创作不易,如果觉得有用的话,还请点个赞哦,笔芯!
【Python】使用pyecharts制作桑基图相关推荐
- Python图形系列之桑基图
Python图形之桑基图 工作过程中,上司曾经发了一个下面的图问是否可以做一个这样的图,当时刚刚培训完大数据的我四处询问童鞋也没有问出这个图到底怎么做,偶然的一天,在读公众号的时候看到了一篇用pyth ...
- pyecharts画桑基图,保存为html和png问题
pyecharts画桑基图 怎么安装所需要的资源,可以参见https://blog.csdn.net/snwang_miss/article/details/117804005. 按照教程画桑基图,发 ...
- Python使用pyecharts库制作桑基图
桑基图不是特别常见的图表,一般是用于具有流向关系的数据可视化,比如购买链路/路径,可以清晰地知道顾客一二三四单分别买了什么: 数据格式 桑基图需要两组数据 数据节点(nodes),数据格式如下: [ ...
- python制作桑基图_Python制作桑基图
这张图是不是十分的漂亮呢?今天偶然间看到一张十分炫酷的图,深深地被它妖艳炫酷的的外表所迷惑,查了许多资料之后,得知它叫"桑基图".古人云:"桑吉桑吉,高贵美丽" ...
- pyechart数据可视化丨制作桑基图(sankey)的最简单方法
前言 最近在分析超期库存数据, 每天4万条左右, 数据的特点是有很多分类变量, 为了展现这些变量的关系, 想到了桑吉图. Pyechart官网上有关于桑基图的案例, 但是如何用日常使用的excel数据 ...
- python画简单图片-Python绘制“高颜值”桑基图
请看以下图片: 相信许多小伙伴第一眼就会被它美丽的外表所吸引,由此引发一连串的惊叹: "这个图叫什么???" "这个图真好看!!!怎么画啊?" 为了满足大家的好 ...
- 用python可以画的可爱的图形_利用Python绘制诱人的桑基图
作者:小z 来源:数据不吹牛 大家好,我是小z~ 最近,不止一次收到群里小伙伴的截图追问: "这个图叫什么???" "这个图真好看!!!怎么画啊?" 小z本没有 ...
- 用Python绘制诱人的桑基图,一眼看透熬夜和狗粮的秘密...
↑ 关注 + 置顶 ~ 别错过小z的有趣内容 大家好,我是小z~ 最近,不止一次收到群里小伙伴的截图追问: "这个图叫什么???" "这个图真好看!!!怎么画啊?&quo ...
- 用python画太阳花原理_用Python绘制诱人的桑基图,一眼看透熬夜和狗粮的秘密
最近,不止一次收到群里小伙伴的截图追问: "这个图叫什么???" "这个图真好看!!!怎么画啊?" 问的人多了,也便有了干货. 此图姓桑名基,平素不喜露面.奈何 ...
最新文章
- 聊一聊 软件系统中的“热力学第二定律”
- Jenkins+PowerShell持续集成环境搭建(二)控制台项目
- PHP的CI框架学习
- 运维老鸟谈生产场景如何对linux系统进行分区?
- H5开发开发利器——flex
- 转载:Spring AOP (下)
- pytorch实现数据增强的原理
- CNN发展历史【从LeNet到DenseNet】
- Producer Consumer
- bat脚本中,常用的开头与结尾(关闭回显,让输出变得更加简洁)
- python金融数据分析马伟明_Python金融数据分析
- 面试之防火墙软硬件架构
- ThreeJs DRACO压缩并加载gltf模型
- 阿里巴巴集团升级中台战略! 任命张建锋(行癫)为首席技术官(CTO)
- java中new一个对象时具体都发生了什么?
- 河大计算机学院足球队,我校第二十九届“河大杯”足球赛落幕
- linux系统 插优盘安装xvidcap,Linux下的屏幕录制工具XVidCap
- Crypto如何塑造数字革命 |链捕手
- TOM收费邮箱稀缺终身会员邮靓号现收藏热潮
- 哪吒前端周刊 | 第001期