Python数据分析师工作拓展助手,在不用掌握复杂的HTML、JavaScript、CSS等前端技术的情况下,也能快速做出来一个炫酷的Web APP,把数据分析结果可视化呈现出来!本文推荐Python界新秀,高速发展的开源Web框架Streamlit,与Python界较优秀交互式可视化工具Plotly,组合搭建的“Web数据可视化低代码纯python技术解决方案”。

1. 方案概述

Web数据可视化低代码纯python技术解决方案,是采用Streamlit Web框架,其可视化工具默认使用Bokeh,可以同时兼容使用Plotly、Matplotlib等,前端底层为React.js框架,Web服务端底层为Tornado。

  • 计算架构层采用Pandas、SKlearn、Tensorflow、Python等。其中,数据可视化主要是通过Pandas与Plotly、Streamlit无缝结合;
  • 可视化层以plotly为主,辅以默认的bokeh和matplotlib,以及Streamlit table与MarkDown等。

注:图中灰色背景的终端层,Python数据分析师可以不必关心,已经由Web框架Streamlit封装成低代码python开发接口实现。

1. Web 布局与导航

1.1. 简易快速布局

Streamlit框架提供几种界面布局模板,在这里使用常用的左右单页面结构,如下图所示左侧为Sidebar,对应的API表示为:

st.sidebar.[element_name]

其中,element_name是指交互组件名称,包括:

如上图所示,接下来将以此页面布局开始开发。

1.2. 开始“菜单/导航”

使用单页面结构中的Sidebar为导航控制栏,

import streamlit as st
import pandas as pd
import numpy as np
import plotly.express as px
import plotly.graph_objects as godef Layouts_plotly():st.sidebar.write('导航栏')add_selectbox = st.sidebar.radio("plotly基本图",("Bubble", "Scatter", "Line","aggregate_bar","bar_charts","pie","pulled_out"))if add_selectbox=="Bubble":Bubble()elif add_selectbox=="Scatter": Scatter() elif add_selectbox == "Line":Line()elif add_selectbox == "aggregate_bar":    aggregate_bar()elif add_selectbox == "bar_charts":    bar_charts()elif add_selectbox == "pie":     pie()elif add_selectbox == "pulled_out":pulled_out()# 补充表单st.sidebar.button('基本数据表',on_click=Double_coordinates)def main():Layouts_plotly()if __name__ == "__main__":main()

运行程序:streamlit run Demo_plotly_Basic_Charts.py
输入效果如下图所示:

注:框架默认执行第一选项: Bubble(),将在后面补充代码

2. Plotly基本图

def Bubble():       df = px.data.gapminder()fig = px.scatter(df.query("year==2007"), x="gdpPercap", y="lifeExp",size="pop", color="continent",hover_name="country", log_x=True, size_max=60)# Plot the datast.plotly_chart(fig)def Scatter():fig = px.scatter(x=[0, 1, 2, 3, 4], y=[0, 1, 4, 9, 16])# Plot the datast.plotly_chart(fig)def Line():df = px.data.stocks()fig = px.line(df, x='date', y="GOOG")st.plotly_chart(fig)def aggregate_bar():df = px.data.tips()fig = px.histogram(df, x="sex", y="total_bill",color='smoker', barmode='group',histfunc='avg',height=400)st.plotly_chart(fig)def bar_charts():data_canada = px.data.gapminder().query("country == 'Canada'")fig = px.bar(data_canada, x='year', y='pop')st.plotly_chart(fig)def pie():df = px.data.tips()fig = px.pie(df, values='tip', names='day', color='day',color_discrete_map={'Thur':'lightcyan','Fri':'cyan','Sat':'royalblue','Sun':'darkblue'})st.plotly_chart(fig)def pulled_out():    labels = ['Oxygen','Hydrogen','Carbon_Dioxide','Nitrogen']values = [4500, 2500, 1053, 500]# pull is given as a fraction of the pie radiusfig = go.Figure(data=[go.Pie(labels=labels, values=values, pull=[0, 0.2, 0, 0])])   st.plotly_chart(fig)

3. 实现双坐标图表实践

数据表通过Pandas直接读取(csv)数据为DataFrame,使用Streamlit的st.table直接显示数据表,使用plotly.graph_objects绘图。

@st.cache
def load_data():df = pd.read_csv('STAT202112.csv', encoding='gbk')df['年月'] = df['年月'].astype("str")    return dfdef Double_coordinates():  df = load_data()st.markdown('#### 数据表展示')st.table(df)    st.markdown('#### 双坐标图')x = df["年月"]y1_1 = df['流失客户']y1_2=df['新客户']y2 = df["余额"]trace0_1 = go.Bar(x=x,y=y1_1,marker=dict(color="red"),opacity=0.5,name="流失客户")trace0_2 = go.Bar(x=x,y=y1_2,marker=dict(color="blue"),opacity=0.5,name="新客户")trace1 = go.Scatter(x=x,y=y2,mode="lines",name="余额",# 【步骤一】:使用这个参数yaxis="y2",就是绘制双y轴图yaxis="y2")data = [trace0_1,trace0_2,trace1]layout = go.Layout(title="客户发展趋势",xaxis=dict(title="年月"),yaxis=dict(title="客户数量"),# 【步骤二】:给第二个y轴,添加标题,指定第二个y轴,在右侧。yaxis2=dict(title="金额",overlaying="y",side="right"),legend=dict(x=0.78,y=0.98,font=dict(size=12,color="black")))fig = go.Figure(data=data,layout=layout)st.plotly_chart(fig)

注:@st.cache 用于把数据加载到缓存,避免下次重复查询加载。

4. 总结

通过低代码Streamlit+Plotly的试用,感觉代码挺优雅,不用懂得任何前端技术,可以开发一个看起来还很美观的Web App。

Python数据分析师可以用更多时间专注数据表现上,通过图表为用户讲述数据的故事。

参考:

[1]. 肖永威. 高级数据分析可视化低代码技术框架选型初步分析. CSDN博客. 2022.01
[2]. 肖永威. Python数据分析师使用低代码Streamlit实现Web数据可视化方法——入门篇. CSDN博客. 2022.01
[3]. 周先森爱吃素. Plotly基础教程. CSDN博客. 2020.10
[4]. 地学小哥. 03_Streamlit试用体会. 简书. 2020.02
[5]. 郑立赛. 【Python】神器:Streamlit,仅使用Python开发一个运维管理后台(不需要编写html,js,css) . 博客园. 2021.06

Python数据分析师使用低代码Streamlit实现Web数据可视化方法——Plotly可视化基础篇相关推荐

  1. 可爱的 Python: 使用 mechanize 和 Beautiful Soup 轻松收集 Web 数据

    可爱的 Python: 使用 mechanize 和 Beautiful Soup 轻松收集 Web 数据 使用 Python 工具简化 Web 站点数据的提取和组织 David Mertz, Ph. ...

  2. 数据分析师能用到mysql_浅谈数据分析师的必备技能SQL

    一.了解SQL的必要性 俗话说"巧妇难为无米之炊",没有数据怎么分析.而SQL对于你来说就好比电脑的键盘鼠标,虽说没有了它也能照常运行,但对使用它的人来说灵活性却下降了许多.而这一 ...

  3. 大数据分析师高级证书_数据分析师资格证书好考吗_大数据分析师认证

    数据分析师资格证书好考吗_大数据分析师认证 为了适应大数据时代的要求,数据分析这一工作需要更加正规化.专业化以及职业化,因此,数据分析师应运而生,成了较多人争相报考的科目.那么 一方面,据小编了解,数 ...

  4. 【数据分析师---数据可视化】第二章:plotly绘图基础篇

    plotly绘图基础篇 1 Plotly简介与安装 2 Plotly简单绘图入门 3 Plotly绘制散点图和饼图 4 Plotly绘图流程详细梳理 5 Plotly绘制密度图和三维散点图 5.1 绘 ...

  5. Python套接字Socket读取http网页web数据

    Python套接字Socket读取http网页web数据 基于Python的套接字Socket,读取网页web的数据,以读取百度首页的内容为例,程序代码如下: import socketdef get ...

  6. python与网页交互_可爱的 Python: 使用 mechanize 和 Beautiful Soup 轻松收集 Web 数据

    可爱的 Python 使用 mechanize 和 Beautiful Soup 轻松收集 Web 数据 使用 Python 工具简化 Web 站点数据的提取和组织 David Mertz 2010 ...

  7. 0基础学习数据分析师,这样做人人都是数据分析师

    2018已成过去,待春节过完又到了离职择业的高峰期,或者可以说又到了开始考虑规划新一年中预期目标的路线图了.职业选择是其中必不可少的线路图至关重要,甚至是临驾于行业之上,因为无论在哪个行业当职业职位做 ...

  8. linux数据同步技术比较,linux下实现web数据同步的四种方式(性能比较)教程.docx

    linux下实现web数据同步的四种方式(性能比较)教程 实现web数据同步的四种方式=======================================1.nfs实现web数据共享2.rs ...

  9. R语言plotly可视化:plotly可视化分裂的分组小提琴图、每个小提琴图内部分为两组数据、每个分组占小提琴图的一半(Split violin plot in R with plotly)

    R语言plotly可视化:plotly可视化分裂的分组小提琴图.每个小提琴图内部分为两组数据.每个分组占小提琴图的一半(Split violin plot in R with plotly) 目录

  10. ML与math:机器学习与高等数学基础概念、代码实现、案例应用之详细攻略——基础篇

    ML与math:机器学习与高等数学基础概念.代码实现.案例应用之详细攻略--基础篇 目录 一.ML与高等数学 0.基础数学 1.导数.方向导数.梯度 1.1.概念简介 1.2.代码实现 2.Taylo ...

最新文章

  1. mysql安装源是什么_mysql官方源安装的一些问题
  2. 最权威北美放射学会年会回顾:AI的进化与下一个前沿
  3. linux 路由跟踪表满错误 nf_conntrack: table full, dropping packet 原理解决方法
  4. 云计算对中小企业的大冲击
  5. Python:赋值语句和布尔值
  6. opencore0.6.4_心灵终结3.3.4
  7. mysql 分页优化策略(一)
  8. Python的网络编程[1] - FTP 协议[1] - 使用 pyftplib 建立 FTP 服务器
  9. R40gpio输出无高低电平变化【原创】
  10. 每日总结app_焊工日常工作的主要职责是什么?焊工证考试用什么APP复习?
  11. shift-and(HDU 5972 2016ICPC大连 B: Regular Number)
  12. 黑马程序员————java线程之间的通信
  13. 11-Container With Most Water
  14. Git 2.29.2 64位安装包
  15. 在FPGA上完美复刻Windows 95
  16. C语言经典例70-编写求字符串长度函数
  17. 计算机中word繁体字转简体字,word简繁体怎么转换的两种方法
  18. Redis Scard 命令
  19. FZU 1685 跑跑卡丁车
  20. 渗透测试-11种绕过CDN查找真实IP的方法

热门文章

  1. xp计算机u盘重装系统,解决戴尔电脑u盘重装系统xp教程
  2. 注册icloud邮箱
  3. HTML超大图片加载显示解决方案--图片切割转换成瓦片地图(BaiduMapTileCutter)
  4. Android 在PreferenceActivity 中移除一个Preference
  5. 宁宛 机器人_忠犬机器人3
  6. 论文笔记--DeepFool: a simple and accurate method to fool deep neural networks
  7. chessbase(ChessBase Mega)
  8. php编程语言教程,php语言教程
  9. linux syn_recv过多ip,SYN_RECV处理方案
  10. ‘com.cloudera.server.cmf.TrialState‘:Cannot resolve reference to bean ‘entityManagerFactoryBean‘