当前位置: 首页 > 科技观察

有了这个开源项目,不用web开发也能“搬”数据!

时间:2023-03-19 20:37:00 科技观察

今天要给小伙伴们介绍的是一个可以快速将数据做成可视化交互页面的Python框架:Streamlit,让你的数据分分钟动起来!还记得我在机器学习和数据分析专业毕业的时候,为了制作漂亮的图表而绞尽脑汁,为了在页面上可视化交互展示数据而绞尽脑汁。现在摆在我们面前的是一个可以快速可视化数据并制作交互式页面的Python框架。只需几分钟即可快速构建和部署强大的数据应用。Streamlit的霸气在这里已经体现的淋漓尽致。Streamlit-构建和共享数据应用程序的最快方式:facepunch:让我们开始使用这个强大的Python数据可视化框架吧!一、一点味道1、本地实验环境:Python3.6-Python3.8。2、安装Streamlit,体验官方的helloworld小demo。pipinstallstreamlitslidehello3.运行以上命令后,会自动打开Streamlit的初始页面http://localhost:8501/。4、通过左侧栏可以选择内置的四个小项并查看它们的代码,如分形动画、折线图、堆叠图等,可以在网页上点击选择设置一些参数并查看效果动态。2.熟能生巧通过Streamlit提供的接口,完美避开Django和Flask框架,无需编写HTML、CSS、JavaScript代码,告别神奇的前端。2.1开发自己的app1。首先,创建一个Python文件,将其命名为test.py,并导入Streamlit库。importstreamlitasst2。使用以下命令启动项目,按Ctrl+c结束项目。#filename自己的py文件名streamlitrun[filename]3.应用运行时,每次修改Python文件并保存,网页都会弹出提示“Sourcefilechanged”,可以选择“Rerun”或“始终重新运行”,以便刷新页面。忽略小的等待时间,我们可以在快速交互循环中“所见即所得”。4、我们随时更新网页内容,包括:修改源代码,与网页交互(点击网页按钮,输入文字),Streamlit自上而下扫描分析运行整个代码.2.2基本命令2.2.1显示文本命令效果st.title()添加标题st.write()Streamlit的瑞士军刀,几乎可以渲染文本、Matplotlib和Altair图表等任何数据参数st.text()显示纯文本st.header(),st.subheader()二级和三级标题st.markdown()显示Markdownst.latex()以LaTeX格式显示数学表达式st.code()以可选语法高度显示突出显示的代码块2.2.2“魔术”我想称它为惰性命令——使用尽可能少的代码来达到相同的效果。当用户定义的变量出现在一行上而不调用任何Streamlit方法时,等效于st.write()。importpandasaspddf=pd.DataFrame({'firstcolumn':[1,2,3,4],'secondcolumn':[10,20,30,40]})df也可以直接显示'''和'packages的内容.#Drawatitleandsometexttotheapp:'''#WelcometoHelloGitHub_Comeandjoinus_'''x=10'x',x#<--Drawthestring'x'andthenthevalueofx2.2.3显示数据表格Streamlit可以快速交互地从多个不同角度查看可视化数据,原始数据,图表,JSON数据等命令效果st.dataframe()将数据框显示为交互式表格st.table()显示静态表格st.json()将对象或字符串显示为JSON字符串2.2.4绘制图表和地图Streamlit支持多个流行的数据图表库,如Matplotlib、Altair、deck.gl等。命令效果st.line_chart()折线图st.area_chart()面积图st.bar_chart()条形图st.map()在地图上显示数据点st.pyplot()matplotlib.pyplot图表st.altair_chart()使用Altair显示图表的库st.vega_lite_chart()使用vega_lite_chart库显示图表st.pydeck_chart()使用PyDeck库绘制图表2.2.5显示多媒体图像、视频和音频文件可以通过单击鼠标直接嵌入到Streamlit应用程序中.2.2.6交互式小部件:eyes::漂亮的按钮、滑块、输入框和其他小部件。每次用户与小部件交互时,Python脚本都会重新执行,并且小部件的输出值会在运行期间设置为新值。1.按钮按钮。ifst.button('HelloGitHub'):st.write('Subscribeourchannels~')2.复选框复选框。ret=st.checkbox('IloveHelloGitHub!')ifret:st.write('Metoo~')3、slider,可以选择int/float/data/time/datetime等类型。age=st.slider('HelloGitHub几岁?',0,10,1)st.write("HelloGitHub",age,'岁~')4.常用命令列表命令效果st.radio()single选择按钮st.select()单选框st.multiselect()多选框st.text_input()单行文本输入框st.text_area()多行文本输入框st.number_input()数字输入框st.date_input()日期输入框st.time_input()时间输入框st.file_uploader()文件上传st.color_picker()颜色选择器2.2.7显示过程和状态1.进度条进度。importtimemy_bar=st.progress(0)forpercent_completeinrange(100):time.sleep(0.1)my_bar.progress(percent_complete+1)2.微调器:在执行代码块时临时显示消息。importtimewithst.spinner('Waitforit...'):time.sleep(5)st.success('Done!')st.balloons()3.其他命令效果st.balloons()庆祝气球st.error()/st.warning()/st.info()/st.success()/st.exception()Error,warning,prompt,success,errormessageprompt2.2.8性能优化Streamlit使用@st.cache装饰器使页面快速“隐形”刷新。当我们将一个函数标记为缓存时,Streamlit在遇到该函数时会检查三个值:函数名、函数体和输入参数。如果第一次找到这三个值的组合,则运行该函数并将结果存储在本地缓存中。下次调用该函数时,如果这三个值没有变化,Streamlit将跳过函数执行,直接读取本地缓存返回结果。@st.cachedefHelloGitHub(url):#返回对应的数据returndata#第一次遇到,执行这个函数d1=HelloGitHub(DATA_URL_1)#传入的参数一样,第二次遇到不会执行这个函数#会直接返回结果上次计算,d1=d2d2=HelloGitHub(DATA_URL_1)#输入参数不同,重新执行函数d3=HelloGitHub(DATA_URL_2)2.2.9布局设置1.将交互小部件放入侧边栏。add_selectbox=st.sidebar.selectbox("Whichone?",("C++","Java","Python"))2.表单st.form():处理元素连同“提交”按钮。#向表单中插入元素withst.form("my_form1"):st.write("Iamin1box~")slider_val=st.slider("Frameslider")checkbox_val=st.checkbox("pickme")#Everyformmusthaveasubmitbutton.submitted=st.form_submit_button("1-Submit")#乱序插入元素form=st.form("my_form2")form.slider("我在2框~")st.slider("我amoutside")#Nowaddasubmitbuttontotheform:form.form_submit_button("2-Submit")3.并排插入一个带有列的容器#官方示例col1,col2,col3=st.beta_columns(3)withcol1:st.header("Acat")st.image("https://static.streamlit.io/examples/cat.jpg")withcol2:st.header("Adog")st.image("https://static.streamlit.io/examples/dog.jpg")withcol3:st.header("Anowl")st.image("https://static.streamlit.io/examples/owl.jpg")2.3修改配置1.查看所有配置选项:streamlitconfig展示。2、对于Windows系统,可以在%userprofile%/.streamlit/config.toml全局文件下或者在当前运行Streamlit的文件夹下创建一个.streamlit/config.toml文件。3.一些配置如外观、主题等也可以通过在网页点击设置方便的选择。2.4在Streamlit分享上部署、管理和分享1.将自己的项目代码上传到GitHub的共享仓库,添加需求文件管理任何外部依赖,如requirements.txt等。2.在https://streamlit上注册一个账号。io/sharing并申请邀请“Requestaninvite!”。收到邀请邮件后,您可以使用该平台部署管理。3.选择Newapp,在Deployanapp中填写相应信息。4.如果应用有很多依赖,第一次部署可能需要一些时间,最终应用可以通过以下链接访问:https://share.streamlit.io/[username]/[reponame]/[branchname]/[apppath]3.精益求精至此,Streamlit框架的基本界面和使用方法已经讲解完毕!更多的细节需要小伙伴们在实践中去摸索,说明才能成功“嵌入”到自己的项目中。很多命令都可以在文档的“APIcheatsheet”中快速搜索到。我希望很快能在StreamlitGallery上看到您分享的应用程序。可以留言,我陪你玩~。