类别数据时序可视化 PyCatFlow库入门介绍

本文介绍了一种名为PyCatFlow的Python工具,专为类别数据的时间变化可视化设计。通过实例演示如何使用PyCatFlow,轻松呈现男生和女生电影喜好随时间变化,展示了一种直观理解趋势的方法。

来源:大邓和他的Python

b1076291faa2b0f6fa6edf10ecfba3d7.png

大家看过了数值数据随时间变化的曲线,但是,却鲜有可视化的工具能很好地对类别特征随着时间变化进行绘制。本文就介绍一种很好的类别特征可视化工具PyCatFlow,非常的简单且实用。

PyCatFlow

PyCatFlow 是一个 Python 包,用于可视化类别数据的时间变化。它的灵感来自 Bernhard Rieder 的可视化工具 RankFlow,它允许将排名列表随着时间的推移进行可视化,例如,Google 或 YouTube 上查询的搜索结果的变化。在我看来,尽管它的用户界面极简,RankFlow 是一个非常有用的工具,而且我很难为其准备数据。事实证明,这些困难主要源于“滥用”RankFlow,或者用更积极的术语来说,它源于将 RankFlow 用于其设计目的以外的其他目的。

背景:了解RankFlow

RankFlow 允许比较排名列表(随着时间的推移)。在最简单的形式中,它需要以每列代表一个排名列表的方式排列表格数据。

Time 1,Time 2,Time 3,Time 4
Item 1,Item 1,Item 1,Item 2
Item 2,Item 4,Item 2,Item 1
Item 3,Item 2,Item 4,Item 4
Item 4,Item 3,Item 5,Item 5

每个排名列表都可以通过权重进行补充,从而为数据添加另一层信息。例如,如果我们采用 YouTube 搜索结果数据,则可以将观看次数、赞成票数或赞成票反对率用作权重信息。为简单起见,示例数据仅由排名列表组成,并在以下流程图中显示结果。

819ef7d4c67df0d8ee140585ecec5e05.png

为了加快图表的后处理速度,我决定创建一个类似于 RankFlow 的可视化工具,它非常适合不包含显式排名信息但可能包含额外分类数据的时间数据。

PyCatFlow快速上手

19232f75d71985ab0d9856e83f85c477.png

如果我们用两种不同颜色,灰色和绿色分别表示男生和女生,然后每一个格子表示一类电影,横轴是男生和女生随着时间推移看的不同的电影,这样我们就可以一目了然男生和女生的喜好的变化,真的是太直观了!PyCatFlow大大方便了我们对于类别特征随着时间变化的分析。

准备数据

import pandas as pd

df = pd.read_csv("data/sample_data_ChatterBot_Requirements.csv", sep='\t')
df.head(5)

columnitemscategorycolumn order
02015-09-08fuzzywuzzyA_Requirements1
12015-09-08requestsA_Requirements1
22015-09-08requests-oauthlibA_Requirements1
32015-09-08pymongoA_Requirements1
42015-09-08jsondatabaseA_Requirements1
import pycatflow as pcf

# Load and parse data from file
fname="data/sample_data_ChatterBot_Requirements.csv"
data = pcf.read_file(fname, columns="column", nodes="items", categories="category", column_order="column order")

'''
visualize(data, spacing=50, node_size=10, width=None, height=None, minValue=1, maxValue=10, node_scaling="linear",
          connection_type="semi-curved", color_startEnd=True, color_categories=True, nodes_color="gray",
          start_node_color="green", end_node_color="red", palette=None, show_labels=True,
          label_text="item", label_font="sans-serif", label_color="black", label_size=5,
          label_shortening="clip", label_position="nodes", line_opacity=0.5, line_stroke_color="white",
          line_stroke_width=0.5, line_stroke_thick=0.5, legend=True, sort_by="frequency")
'''

viz = pcf.visualize(data, spacing=20, width=800, maxValue=20, minValue=2)

#save visualization to files
viz.savePng('sample_viz.png')
viz.saveSvg('sample_viz.svg')

#show visualization
viz

84624986ab4ba78f50b6b12aaa39ecb3.png

# Another option is to visualize the graph with curved connections.
# The implementation of this connection type draws on https://github.com/bernorieder/RankFlow

viz = pcf.visualize(data, spacing=20, width=800, maxValue=20, minValue=2, connection_type='curved')
viz

f7a96c124ec08717be64146a98313e97.png

# The third option are straight connections between nodes
viz = pcf.visualize(data, spacing=20, width=800, maxValue=20, minValue=2, connection_type='straight')

# show visualization
viz

9e036faa08bde1036ee215be9539cde2.png

代码下载

https://github.com/bumatic/PyCatFlow

-------- End --------

bcf8bb2432d770d9639114d547230666.png
精选资料

回复关键词,获取对应的资料:

关键词资料名称
600《Python知识手册》
md《Markdown速查表》
time《Python时间使用指南》
str《Python字符串速查表》
pip《Python:Pip速查表》
style《Pandas表格样式配置指南》
mat《Matplotlib入门100个案例》
px《Plotly Express可视化指南》
精选视频

可视化: Plotly Express

财经: Plotly在投资领域的应用 | 绘制K线图表

排序算法: 汇总 | 冒泡排序 | 选择排序 | 快速排序 | 归并排序 | 堆排序 | 插入排序 | 希尔排序 | 计数排序 | 桶排序 | 基数排序

2758904b108f929eca7ca69cc6693349.png
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值