Python和Streamlit交互式仪表板开发入门

Python
377
0
0
2024-01-07

思维导图

序言

仪表板对于商业场景带来各种优点,通常使用称为BI工具的软件进行创建,但即使是免费可用的BI工具也往往有功能限制。

Streamlit是用于Web应用程序开发的Python库。与Django或Flask不同,它非常简单易用。

第1章 环境配置

关于Anaconda

在Anaconda中创建虚拟环境

启动Anaconda-Navigator,选择左侧菜单栏的“Environments”,可以查看所有的虚拟环境项目。

接着打开一个名为“Create new environment”的页面,你可以在“Name”栏输入虚拟环境的名称。在本书中,我们将其命名为“pd_streamlit”。然后选择要使用的编程语言,选择“Python”,选择“3.8”版本。

选择你刚刚创建的虚拟环境,在虚拟环境名称旁边会显示一个▶标志,选择它。当显示出▶标志后,会显示一个菜单,选择“Open Terminal”。

打开带有Visual Studio Code的终端

我们将在终端中打开VS Code。首先,创建一个工作文件夹。然后,在终端命令中转到创建的工作文件夹,并输入以下命令,然后按回车键。

code 文件名.py

Command + Shift + P -> 输入“select interpreter” -> 先前创建的虚拟环境的路径。

打开VS Code的终端后,让我们确保Python的执行环境已经设置为之前创建的虚拟环境。确认的方法是,在打开的VS Code终端中输入以下命令,然后按下Enter键。星号(*)标记显示为活动状态。

第2章 Streamlit基础

什么是Streamlit

Streamlit是由Streamlit公司开发的用于创建Web应用程序的框架。Streamlit支持主流的数据分析库和可视化库,因此可以在创建的Web应用程序中轻松实现它们。

安装和导入Streamlit 启动和关闭Streamlit

安装

导入

运行

关闭

如果只关闭浏览器而没有停止Streamlit的运行,那么Streamlit仍然在后台运行。要停止Streamlit的运行,需要在终端中激活状态时输入以下键盘快捷键:Ctrl+C

添加文本(标题和文字) 生成和显示DataFrame

hello.py

显示图表

三种方法可以显示Pandas的DataFrame

  1. st.write是一种基本的方法,用于显示DataFrame。
  2. st.dataframe可以接受括号内的参数,可以指定要显示的表的行和列的大小。
  3. st.table非常简单,以静态方式显示表格。

命令魔术

streamlit提供了两种显示图形的方法:

  1. 使用streamlit提供的函数
  2. 使用外部库(如matplotlib)的方法

生成了一个20行3列的数据框,数据符合均值为0,方差为1的正态分布。列名分别为a、b、c。

使用类似于matplotlib的外部库绘制图形

使用matplotlib生成的图表不能进行缩放和动态调整。

显示地图图表(二维映射)

绘制二维地图图表的函数st.map

显示地图图标(三维映射) 显示图像

  1. 进行三维地图映射时,需要使用到pydeck库
  2. pydeck具有一个ViewState方法,可以设置在地图上的具体位置。
  3. pitch是指定从哪个角度看地图的参数,zoom是指定缩放级别的参数。
  4. 然后,进行图层设置。pydeck提供了各种可视化方法,我们需要设置使用哪种可视化方法。在这里,我们尝试使用六角形的热力图进行可视化。要使用六角形热力图,需要指定HexagonLayer。get_position需要输入指定列名称来表示纬度和经度信息。在这里,我们的DataFrame列名为'lat'和'lon',因此需要相应地指定。需要注意的是,get_position的输入顺序应为经度和纬度。extruded是用来指定是否以立体方式显示六角形热力图的参数。
  5. 最后的设置是使用view和Layer的信息进行地图渲染的设置。这可以使用Deck方法来完成。
  6. pydeck的设置已经完成,现在从streamlit中调用pydeck以显示三维地图。

显示图像

交互功能(按钮)

交互功能(单选按钮)

交互功能(复选框)

交互功能(选择框)

交互功能(多选框)

交互功能(滑动条)

交互功能(侧边栏)

交互功能(进度条)

第3章 开发交互式仪表盘所需的公开数据

介绍

日本政府开发和运营的地区经济分析系统(以下称为"RESAS")的开放数据来开发仪表板。RESAS是一个将地区经济相关的各种数据以地图和图表的形式非常清晰地汇总的系统。

获取数据

https://summary.resas.go.jp/summary.html

第4章 开发交互式仪表盘

47个都道府县的县政府所在地的纬度和经度数据

https://techtechsorae.com/jp_city_latlon/

关于Plotly

将使用一个名为Plotly的开源交互式数据可视化工具,其中的一个高级API群体被称为Plotly Express。

Plotly Express的一个显著特点是可以直接处理Pandas的DataFrame,可以创建可缩放、缩放和悬停显示数字等交互式图表。此外,它还可以创建动画,因此可以包含丰富的信息。

Plotly Express官方网页(https://plotly.com/python/plotly-express/)

安装和导入Plotly