【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绘制诱人的桑基图,一眼看透熬夜和狗粮的秘密
最近,不止一次收到群里小伙伴的截图追问: "这个图叫什么???" "这个图真好看!!!怎么画啊?" 问的人多了,也便有了干货. 此图姓桑名基,平素不喜露面.奈何 ...
最新文章
- 为了探究不同光照处理_浅谈中考物理实验探究易错题
- java正则表达式所有字符串_java正则表达式获取字符串中所有匹配的内容
- 多线程断点续传及下载
- Failed to execute goal org.apache.maven.plugins:maven-surefire-plugin:2.12.4:test (default-test)
- 【NLP】有三AI NLP知识星球来了,仅此一家别无分店
- spring boot之eureka-client的pom
- C/C++语言堆栈指引
- 修改大表字段属性报主键冲突
- Jetpack:使用 ActivityResult 处理 Activity 之间的数据通信
- 从五个维度来计算互联网产品单个用户的价值
- jquery template.js前端模板引擎
- hibernate的数据关联映射
- MySQL 事务 MVCC 版本链
- jsp分页功能的位置有可能会影响到翻页时的查询条件
- 织梦DedeCMS使用教程:留言簿模块
- 计算机考研 东华大学,2017考研:计算机科学与技术专业考研院校推荐之东华大学...
- iNFTnews | iPhone14已来,苹果的元宇宙还有多远?
- 云端软件平台(免去重装系统后装软件的烦恼)
- 杜比全景声深受好莱坞青睐
- Luban—— Android图片压缩工具
热门文章
- 比较算盘和计算机的优点,珠心算算盘的用法图解(珠心算的各种算法大揭秘)...
- python中一切内容都可以称为对象吗_Python中对象的概念很广泛,Python中的一切内容都可以称为 。...
- 35dir分类目录为什么打开页面非常慢?
- 家里宽带申请公网 IP(二)
- LeetCode刷题笔记:17.电话号码的字母组合
- python入门教程pdf免费_python入门教程pdf
- 金融项目学习——尚融宝
- 企业员工福利积分商城系统:深耕福利场景,解锁福利采购新玩法!
- qbxt集训cogs2682. 膜拜
- MacBookPro M1安装 Ubuntu