我做了一个数据可视化库,功能直逼BI软件,还无须安装python

我是数据外星人 2024-02-21 01:20:19

python 中如何做可视化报告?

使用 Stream lit?你要把成品分享给别人,还需要自己部署一个 web 服务。否则就要把脚本发给别人。需要别人安装 python 才看到效果?别开玩笑了。

使用 pyecharts 做 echarts 图表,可以得到一个单独的 html 文件。

但是只能在一个图表中点点图例,这种动画效果,我真不知道有什么实际作用。

所以,一直以来我都是用 excel,power Bi,甚至 ppt 做最终的可视化报告。但我很不服气,为什么 python 就做不到?

于是我亲自造了一个 python 库,pybi-next。 先看一个简单的效果。

它输出结果就一个 html 文件,随便发给别人,用浏览器打开就可以看到效果。不需要安装乱七八糟的东西。

打开看看:

首先,所有的下拉框(切片器)都可以影响到其他的东西(其他的切片器,图表,表格)

这种效果其实没有什么特别。再看看图表之间的联动。

鼠标移到图表上,表格和其他图表都会对应变化

去年我制作的 pyvisflow 也能做到这些效果,但它不是聚焦于 BI 数据可视化报告。 pybi-next 专注于此具体场景。因此,代码上可以说是做到非常精简的程度。

那么,到底它如何做到代码精简,又能灵活设定联动机制。今天我将带你入门了解其机制。你会发现,原来做这种堪比 BI 软件的报告是这么简单的事情。

安装 pybi-next 库:

pip install pybi-next -U

基于数据的联动

有一份省市区销量的 excel 数据:

导入相关库:

使用 pandas 加载数据

设置 pbi 的数据源:

pbi.set_source 函数,传入 pandas 的数据表(DataFrame)即可

现在分别创建省市区3个下拉框和1个数据表格:

11-13行:3个切片器。注意,第一个参数传入的是前面创建的数据源 data ,并且通过 data['列名'] 指定了某一列行15:创建表格行18:生成结果文件

执行后,同目录下得到一个 html 文件。用浏览器打开,即可看到效果。

神奇的是,它们现在就已经可以联动!

注意,省市区3个切片器之间就能关联。就这么简单制作了三级联动下拉列表!

其他联动原理很简单:

如上图,一开始我们就创建了一个 data 的数据源。并且在创建切片器和表格的时候,都使用了 data 数据源。

当修改省份切片器选项时:

上图绿线,省份切片器通知 data 数据源上图红线, data 数据源通知它的下游关联组件

"就这样?好像限制很多啊!"

别急,我们还有数据视图。

sql 也能联动

现在,新增一个"省份总销量"的表格,以及一个省份的切片器,这个省份切片器只能影响到"省份总销量"的表格。

先看效果:

为了更好展示,我让画面分成左右2个区域。左边的3个切片器可以影响右边的东西(切片器和表格)但右边的切片器,只会影响右边的表格

看看代码:

19-20行:通过 pbi.set_dataView ,传入 sql 语句,创建数据视图。 注意,这里使用 python 的 f-string ,sql 中的表名传入了 data 数据源。行22-23:以上一步操作的 dv1 数据视图,创建控件即可 - 任何 sqlite 支持的 sql 查询语法或内置函数,都可以使用

为了更好讲解原理,上图不包含布局代码。得到的结果与演示动图不一致。

现在,你应该能体会到 pybi-next 联动机制的巧妙之处:

页面上,有 data 数据源 和 dv1 数据视图,并且 dv1 视图是 data 数据源的下游关联

当我修改左边的切片器选项:

data 会通知所以与之关联的下游控件,也包括 dv1 视图。dv1 改变,则会产生连锁反应,继续通知其下游控件

这种联动是内置的。你也可以断开某个视图的关联。也可以让某个控件跨越联动链条,触发指定的数据源变动。这些是高级应用,以后会讲解

这就是 pybi-next 的基本核心联动机制。你可以使用 sql ,创建无数个数据源与数据视图,使得它们按你的想法关联起来。

关注我,以后会有更多相关教学。

欢迎评论区写下你对 pbi 的想法。

0 阅读:0

我是数据外星人

简介:感谢大家的关注