整合营销服务商

电脑端+手机端+微信端=数据同步管理

免费咨询热线:

用于 Web 开发的 Javascript 与 Py

用于 Web 开发的 Javascript 与 Python

  • 什么是 Python?
  • 什么是 JavaScript?
  • JavaScript 和 Python 的区别因素
  • Python 与 JavaScript:2022 年选择哪种编程语言?

Web 开发正在成为 IT 中最受欢迎的领域之一,毫无疑问,JavaScript 和 Python 都是 Web 开发人员中非常流行的编程语言。这两种编程语言都有自己的优点,这使它们成为开发人员的热门选择。

然而,Python 和 JavaScript 的比较一直是开发者社区的热门讨论。它经常会产生这样的问题:python 比 javascript 难吗?python比javascript好吗?python和javascript有什么区别?javascript在Web开发中的用途是什么?等等等等。继续阅读本文,因为本文简要回答了所有这些问题,但在讨论这些编程语言在 Web 开发中的比较之前,了解什么是 Python 和 JavaScript 至关重要。

什么是 Python?

Python 是当今最好和最强大的编程语言之一。它用途广泛,是大多数科学应用的必备工具。但是,它是一种通用编程语言,支持不同的编程范式。

这种编程广泛用于科学领域,包括数据科学、人工智能、计算机视觉 (CV)、DIP(数字图像处理)、自然语言处理和 Web 开发。Python 的语法非常简单。这就是为什么很多人认为 python 比 javaScript 好得多的原因。

在 web 开发的背景下,有一个流行的问题:python 是用于前端还是后端?答案是python主要用于后端。这是我们可以将其功能和能力与 JavaScript 进行比较的地方。但是,需要注意的是,Python 不仅限于后端开发,还可以在一些附加工具的帮助下用于前端开发。

什么是 JavaScript?

虽然 Python 是后端开发的绝佳选择,但 JavaScript 是首选,并且通常被称为 Web 应用程序前端开发的编程语言。

在这里了解后端和前端开发之间的区别很重要。Web 应用程序的后端是用户无法访问且用户不直接与其交互的部分。它包含 Web 应用程序的所有业务逻辑和服务器端编程。

另一方面,Web 应用程序的前端是最终用户与之交互的部分。这是用户可以访问的应用程序的一部分。即使您正在与移动应用程序交互,您也很可能正在与 React.js(一个 JavaScript 框架)进行交互,它能够开发能够适应不同平台的应用程序。

JavaScript 和 Python 的区别因素

现在,由于我们已经清楚地了解了 JavaScript 和 Python,我们可以更深入地挖掘它们的差异化因素。

我们可以根据不同的理由来区分这两种编程语言。python 和 JavaScript 都有各自的优缺点。因此,让我们立即开始吧。

人气

首先,重要的是要注意开发人员社区对这两种编程语言的看法。确定开发人员选择的最佳矩阵是评估这些编程语言的流行程度。

根据Stack Overflow 的 2020 年开发者调查,JavaScript 在最常用的编程语言列表中名列前茅。根据调查的详细信息,几乎 69.7% 的开发社区使用 JavaScript。相比之下,Python 的普及率在 41.7% 的开发者中。

JavaScript 流行的一个原因是它的工作可以广泛使用。此外,它不仅可用于 Web 开发,而且 JavaScript 还可用于移动应用程序开发,这使其成为开发社区中的热门选择。

表现

性能是开发网站时要牢记的最重要因素之一。如果应用程序不够高效,它几乎是无用的。这就是新的编程语言试图灌输尽可能多的效率和优化的原因。

然而,这并不容易,而是一项非常棘手的任务。这也取决于用于开发的编程语言。因为每种编程语言都有自己的内置规则和方法来提高效率。

Web 应用程序的速度取决于 Web 应用程序中代码的执行速度。构建 JavaScript 的目的是在 Web 浏览器上快速运行。这就是 Facebook、Google、Amazon 等应用程序使用 JavaScript 的原因。

如果将 Python Web 应用程序与 Node.js Web 应用程序进行比较,Node.js 肯定会胜过 Python。因为据专家介绍,Python 在单个流中处理请求,但 JavaScript 可以利用其先进的多线程功能一次处理多个请求。

应用程序可扩展性

对于一个人来说,Web 应用程序的可扩展性就像氧气一样是生存所必需的。考虑一个应用程序,该应用程序响应速度快、交互性强,并提供非常需要的服务。但是,它无法同时处理大量请求。这将导致网络流量下降,因为如果用户打开一个网站并且它没有按需要响应或经常崩溃,但用户最终也会寻找其他一些快速的替代方案。

因此,应用程序的可扩展性非常重要。因为可伸缩性允许应用程序一次处理大量的流量和请求。为了支持可扩展性,多线程是一个非常可行的解决方案。但是 Python 不支持多线程,因为它适用于单线程系统。相反,它使用全局解释器锁来一次处理多个请求。

相反,Node.js 纯粹是为了支持异步编程而开发的。因此,JavaScript 在 Web 应用程序可扩展性方面表现出色。但是,Python 也可以通过上述方式实现可扩展性。

内存管理

内存管理是另一个需要考虑的重要方面。如果一种编程语言不能有效地管理内存,将直接影响网站的优化。

在 Python 中,所有变量和数据结构都收集在一个堆中。Python 也有它的内部内存管理器来确保对这个堆的管理。

但是,JavaScript 使用一种称为 GC(垃圾收集器)的自动内存管理工具。但是,GC 的管理工作在一个近似算法上,因为它无法知道某个内存位置是否无用。

范围

编程语言的范围定义了它的多功能性。如果我们谈论 Python 的应用程序或用例,我们就会知道 Python 用于后端的 Web 开发。它在软件开发、计算和脚本系统中也非常有用。它在数据科学和机器学习中非常流行。

相比之下,JavaScript 也支持所有这些类型的软件开发。JavaScript 相对于 python 的最大优势在于,它不仅是一种前端语言,而且在开发应用程序的服务器端逻辑时也能工作得非常好。此外,JavaScrip 还用于开发移动应用程序,目前 Python 不支持。React.js 是流行的移动应用程序开发框架之一。


Python 与 JavaScript:2022 年选择哪种编程语言?

根据上面进行的讨论,很明显这两种语言都有自己的优缺点。几乎不可能质疑 Python 是否会取代 JavaScript,反之亦然。

对于 JavaScript 和 Python,开发人员的选择将基于所考虑平台的要求。例如,当语言的设计至关重要时,Python 是您的选择。如果需要移动开发和高度响应的网站,那么 JavaScript 是您的选择。

更全面地说,如果所需的应用程序必须具有可扩展性和高效性,那么 JavaScript 是正确的选择。而如果网站后台非常复杂,可读性好,又要求编程简单,可以选择Python。

请耐心慢慢刷新到页面完整显示出来

https://fjxasdf.github.io/daogou/

原文章https://www.toutiao.com/i6711294610594857476/

哪些优化?

1.显示商品图片

2.没有显示全部商品,只显示热门商品,避免数据、图片加载太慢

3.样式稍微美化了

4.上传到GitHub,不过GitHub很卡,要刷新等好久才能看到

python读取excel生成json代码

import xlrd
from datetime import date,datetime
import json
file='精选优质商品清单(内含优惠券).xls'
def read_excel():
 wb=xlrd.open_workbook(filename=file)#打开文件
 # print(wb.sheet_names())#获取所有表格名字
 sheet1=wb.sheet_by_index(0)#通过索引获取表格
 # sheet2=wb.sheet_by_name('Page1')#通过名字获取表格
 # print(sheet1)
 # print(sheet2)
 # print(sheet1.name) #表 名
 rows=sheet1.nrows #多少行
 # print(sheet1.ncols) #多少列
 # rows=sheet1.row_values(1)#获取行内容
 category0=sheet1.col_values(4)#获取列内容(类目)
 del category0[0]
 category=sorted(set(category0),key=category0.index) #类目列表->去重
 data=[]
 data_hot=[]
 # print(rows)
 # print(cols)
 for i,v in enumerate(category):
 category[i]=v.replace("/", "、")#吧"/"替换"、"
 data.append([category[i],[]])
 jsonData=json.dumps(category, ensure_ascii=False)
 with open('./daogou/category.json', 'w',encoding="utf-8") as f:
 f.write(jsonData)#保存分类json
 for i,v in enumerate(data):
 for x in range(rows):
 if v[0]==(sheet1.cell(x,4).value.replace("/", "、")):
 xo=sheet1.row_values(x)
 y=[xo[1],xo[2],xo[4],xo[6],xo[21]] #选择保存商品名称、图片、链接等
 data[i][1].append(y)
 if x>0 and float(sheet1.row_values(x)[9]) >=1: #选择佣金多的作为热门
 xo=sheet1.row_values(x)
 y=[xo[1],xo[2],xo[4],xo[6],xo[21]]
 data_hot.append(y)
 data_hot=data_hot[:24]
 jsonData_hot=json.dumps(data_hot, ensure_ascii=False)
 with open('./daogou/results_hot.json', 'w',encoding="utf-8") as f:
 f.write(jsonData_hot)#保存热门商品json
 for i,v in enumerate(data):
 jsonData=json.dumps(v[1], ensure_ascii=False)
 with open('./daogou/'+v[0]+'.json', 'w',encoding="utf-8") as f:
 f.write(jsonData)#保存每个分类商品json
 # jsonData1=json.dumps(data, ensure_ascii=False)
 # with open('results.json', 'w',encoding="utf-8") as f:
 # f.write(jsonData1)
 # print(sheet1.cell(0,0).value)#获取表格里的内容,第一行第一个格内容
 # print(sheet1.cell_value(0,0))#获取表格里的内容,第一行第一个格内容
 #print(sheet1.row(0)[0].value)#获取表格里的内容,第一行第一个格内容
if __name__=='__main__':
 	read_excel()

创建html页面,并引用json文件

<!DOCTYPE html>
<html lang="en">
<head>
	<meta charset="UTF-8">
	<script src="../js/jquery.min.js"></script>
	<link rel="stylesheet" href="../font/Alibaba-PuHuiTi-Regular.css">
		<script>
		var navo='';
var info='';
var data_total;//总数据
function color16(){//十六进制颜色随机
	var r=Math.floor(Math.random()*256);
	var g=Math.floor(Math.random()*256);
	var b=Math.floor(Math.random()*256);
	var color='#'+r.toString(16)+g.toString(16)+b.toString(16);
	return color;
}
function nav_href(title,id){//锚跳转
		if ($('#'+title).length>0) {
		location.href="#"+title;
		}else{
			var div_title="<div id='"+title+"' style='float:left;'>";
			var div_content="<div class='pro_img' style='background:#ff5000'><b style='color:#FFF'>"+title+"</b><\/div>";
			$('#load').show();
			$.get('./'+title+'.json', function(data) {
				$.each(data, function(index, val) {
					div_content+="<a style='background:"+color16()+"' target='_blank' href='"+val[4]+"' class='pro_img'><img onload='$(this).show()' src="+val[1]+" style='width:100%;height:100%;display:none;' />"+val[0]+"<span class='money'>¥"+val[3]+"</span><span class='title'>"+val[0].substring(0,25)+"...</span><\/a>";
					if ((index+1)==data.length) {
						var div_footer="</div><br>";
						infoo=div_title+div_content+div_footer;
						$('#content').append(infoo);
						location.href="#"+title;
						$('#load').hide();
					}
						 });
			},'json');
			
						 
			
		}
		
	
}
function get_data(){
	$.get('./category.json', function(data) {//导航
				$.each(data, function(index, val) {
					 // console.log(val[0]);
					 navo+="<a class='nav' href=javascript:;nav_href(\'"+val+"\',"+index+")>"+val+"</a> ";
				});
	$('#nav').html(navo);
	$.get('./results_hot.json', function(data) {//热门商品
					var div_title="<div id='热门商品' style='float:left;'>";
					 var div_content="<div class='pro_img' style='background:#ff5000'><b style='color:#FFF'>热门商品</b></span><\/div>";
		$.each(data, function(index, val) {
					 // console.log(val);
					 
					 	 div_content+="<a style='background:"+color16()+"' target='_blank' href='"+val[4]+"' class='pro_img'><img onload='$(this).show()' src="+val[1]+" style='width:100%;height:100%;display:none;' />"+val[0]+"<span class='money'>¥"+val[3]+"</span><span class='title'>"+val[0].substring(0,25)+"...</span><\/a>"
					 
					 
					 // if (index==3) {return false}
				});
		var div_footer="</div><br>";
		info+=div_title+div_content+div_footer;
	$('#content').html(info);
	$('#load').hide(0);	
	});
			},'json');
}
	
		
	</script>
	<style>
	#body{
		/*border: 1px solid #eee;*/
		width: 1110px;
		margin:0 auto;
	}
	a.nav{
		text-decoration: none;
		margin-right: 10px;
		padding: 0 5px;
		/*padding-bottom: 10px;*/
		display: inline-block;
		color: #000;
 font-weight: 700;
	}
	#nav{
		display: inline-block;
	}
*,html,body{
	font-family:"Alibaba-PuHuiTi-Regular";
}
		#content{
			margin-top: 10px;
			display: inline-block;
		}
		.money{
	 width: 100%;
 /* padding: 0px 10px; */
 background: #ffffffcc;
 position: absolute;
 left: 0;
 bottom: 50px;
 height: 30px;
 line-height: 30px;
 color: #F40;
 font-weight: 700;
 /* border-radius: 0 8px 0 0; */
 text-align: left;
 font-size: 18px;
		}
				.title{
 width: 100%;
 font-weight: 700;
 /* padding: 0px 10px; */
 background: #ffffffcc;
 position: absolute;
 left: 0;
 bottom: 0;
 height: 50px;
 line-height: normal;
 color: #000;
 /* border-radius: 0 8px 0 0; */
 text-align: left;
 font-size: 15px;
		}
		.pro_img{
			position: relative;
			float: left;
			width: 220px;
			height: 220px;
			line-height: 220px;
			text-align: center;
			border: 1px solid #eee;
			cursor: pointer;
			font-size: 30px;
			/*white-space:normal; */
			overflow:hidden; /*超过部分不显示*/
      text-overflow:ellipsis; /*超过部分用点点表示*/
 /*     white-space:nowrap;/*不换行*/
		}
		.input1{
			 width: 300px;
			 height: 30px;
			 border: 1px solid #888;
				border-radius: 10px 0 0 10px;
				outline-style: none ;
	
		}
		.button1{
			margin-left: -7px;
 width: 50px;
 height: 34px;
 border-radius:0 10px 10px 0 ;
 outline-style: none ;
		}
		#search1{
			/*width: 350px;*/
			/*margin:0 auto;*/
		}
		#load{
			position: fixed;
			width: 100%;
			height: 100%;
			top: 0;
			left: 0;
			background: #000000ad;
			z-index: 999;
			text-align: center;
			vertical-align: middle;
		}
		#load>span{
 display: inline-block;
 vertical-align: middle;
 height: 100%;
		}
		.load{
			display: inline-block;
			vertical-align: middle;
			font-size: 50px;
			color: #FFF;
		}
	</style>
</head>
<body onload="get_data()">
<!-- loading -->
<div id="load">
	<span ></span>
	<div class="load">加载中...</div>
</div>
<div id="body">
<h1>网站仅学习交流!!网站中的商品信息均来自于互联网。</h1>
<!-- 		<div id="search1">
		<input type="text" class="input1">
		<button class="button1">搜索</button><b> 网站仅学习交流!!网站仅学习交流!!网站仅学习交流!!网站仅学习交流!!网站仅学习交流!!</b>
	</div> -->
	<div id="nav"></div>
	<div id="content"></div>
</div>
</body>
</html>

完成上传json文件和html页面到GitHub

文共6260字,预计学习时长13分钟

不了解任何网页框架?没关系,本文将教你如何轻松搞定从数据科学项目到超棒程序的无缝转换。

图片来源:Cody Black Unsplash

稍作休息,开始编码。

机器学习项目只有充分展示给公众时才称得上是完整的项目。

过去在介绍数据科学项目时,选择合适的可视化操作或简单的PPT就足够了,但现在随着像RShiny和Dash这类仪表盘化工具的出现,一名合格的数据科学家也需要掌握一定的Web框架的知识。

可Web框架也不是块好啃的骨头。笔者在尝试一些看似简单的操作时,仍会被HTML、CSS和Javascript等搞得晕头转向,于数次实践中尝遍失败的滋味。

对数据科学同胞们来说,Web开发只是次要技能,所以更别提尝试多种途径做这一件事了,会让这些人不知所措的。

那我们就注定避免不了Web框架的学习之路吗?还是说大半夜的给开发人员打电话问一些很蠢的问题?

于是StreamLit带着自身的使命出现了,它仅借助Python就能够创建Web应用程序。

Python的宗旨:简单胜于复杂,而Streamlit创建应用程序则完美地诠释了其易操作性。

这篇文将为大家讲解何使用Streamlit来创建支持数据科学项目的应用程序。

安装

安装步骤跟运行指令一样简单:

pip install streamlit

查看是否安装成功时只需运行:

streamlit hello

屏幕上应该显示的是:

可以在浏览器中访问本地URL:localhost:8501,来查看执行中的Streamlit应用程序。开发人员那里也有许多很棒的样本可供尝试。

Streamlit“你好,世界”

Streamlit旨在通过简单的Python代码实现简单的程序开发。

那就设计一款简单的应用程序,看看它是否真的像它说的那样。

从Streamlit的名为“hello,world”的程序入手,这个程序并不复杂。只需要复制粘贴下面这个代码到“helloworld.py”的文件夹中即可。

import streamlit as st

x=st.slider('x')

st.write(x, 'squared is', x * x)

然后到最后运行阶段时:

streamlit run helloworld.py

看吧,浏览器连接到localhost:8501,就可以看到执行中的程序,滑动鼠标就可以得到结果。

简单的滑块插件应用程序

操作非常简单。在构建上图应用程序时,用到了Streamlit的两个特性:

? st.slider插件——滑动改变Web应用程序的输出内容。

? 以及通用的st.write 指令。笔者对于它能从图标、数据框和简单的文本中编写任何东西感到惊讶。后面会有详细介绍。

敲黑板:大家要记住每次改变插件值时,整个应用程序都会由上至下运行。

Streamlit插件

插件提供了控制应用程序的方法,阅读了解插件的最佳选择就是API参考文档,不过笔者这里也会讲解一些插件,它们都是用户在操作后期会用的最主要的插件。

1. 滑块

streamlit.slider(label, min_value=None, max_value=None, value=None, step=None, format=None)

在上文已经目睹了st.slider的执行过程,它可以结合min_value、max_value使用,用于进一步得到一定范围内的输入内容。

2. 文本输入

获取用户输入最简单的方式是输入URL或一些用于分析情绪的文本内容,需要的只是一个用来命名文本框的标签。

import streamlit as st

url=st.text_input('Enter URL')

st.write('The Entered URL is', url)

看到的程序将是这样:

简单的text_input widget程序

贴士:可以只改变helloworld.py文件然后刷新页面。笔者的做法是打开该文件然后在文本编辑器中改动,再一点一点查看变动的地方。

3. 复选框

复选框的一个功能就是隐藏或显示/隐藏程序中的特定区域,另一个用途是设置函数的布尔参数值。st.checkbox() 需要一个参数,即插件标签。在该应用程序中,复选框会用来切换条件语句。

import streamlit as st

import pandas as pd

import numpy as np

df=pd.read_csv("football_data.csv")

if st.checkbox('Show dataframe'):

st.write(df)

简单的复选框插件应用程序

4. 下拉框插件

通过st.selectbox可以在一系列选项或列表中进行选择。常见的用法是将其作为下拉项然后从名单中挑选值。

import streamlit as st

import pandas as pd

import numpy as np

df=pd.read_csv("football_data.csv")option=st.selectbox(

'Which Club do you like best?',

df['Club'].unique())

'You selected: ', option

简单的下拉框/复选框插件程序

5. 多选插件

也可以用下拉框内的多个值。这里讲的是使用 st.multiselect在变量选选中获取多个值作为列表。

import streamlit as st

import pandas as pd

import numpy as np

df=pd.read_csv("football_data.csv")

options=st.multiselect(

'What are your favorite clubs?', df['Club'].unique())

st.write('You selected:', options)

简单的下拉框插件应用程序

一步步创建应用程序

重要插件了解的也差不多了,现在马上要用多个插件创建应用程序。

从简单的步骤入门,尝试使用Streamlit对足球数据进行可视化。有了上面那些插件,这个步骤执行起来会容易很多。

import streamlit as st

import pandas as pd

import numpy as np

df=pd.read_csv("football_data.csv")

clubs=st.multiselect('Show Player for clubs?', df['Club'].unique())

nationalities=st.multiselect('Show Player from Nationalities?', df['Nationality'].unique())

# Filter dataframe

new_df=df[(df['Club'].isin(clubs)) & (df['Nationality'].isin(nationalities))]

# write dataframe to screen

st.write(new_df)

简单的应用程序会是这样的:

同时使用多个插件

这一点也不难,但目前看起来似乎太基础了。是否可以考虑加入一些图表呢?

Streamlit当前支持许多用于绘图的库,其中就有Plotly, Bokeh, Matplotlib, Altair和Vega图表。Plotly Express也可以,只不过没有详细说明。也存在一些内嵌式图表,相当于Streamlit“自带”的,比如st.line_chart 和st.area_chart.

此时会用到plotly_express,下面是设计程序会用到的代码。该过程只会调用Streamlit四次。剩下的都是一些简单的Python代码操作。

import streamlit as st

import pandas as pd

import numpy as np

import plotly_express as px

df=pd.read_csv("football_data.csv")

clubs=st.multiselect('Show Player for clubs?', df['Club'].unique())

nationalities=st.multiselect('Show Player from Nationalities?', df['Nationality'].unique())new_df=df[(df['Club'].isin(clubs)) & (df['Nationality'].isin(nationalities))]

st.write(new_df)

# create figure using plotly express

fig=px.scatter(new_df, x='Overall',y='Age',color='Name')

# Plot!

st.plotly_chart(fig)

添加图表

改进

在本文一开始有提到插件每次发生变动时,整个应用程序就会由上至下地运行。其实并不可行,因为创建的应用程序会保留下深度学习模型或复杂的机器学习模型。接下来在讲Streamlit的缓存时会向读者阐释这一点。

1. 缓存

在这个简单的程序里,但凡值有所变动时,数据科学家们就会反复浏览数据框。它比较适用于用户手中的小规模数据,至于大规模或需要进行很多步处理的数据,它是不予理睬的。接下来在Streamlit中通过st.cache装饰器函数体验缓存的功能吧。

import streamlit as st

import pandas as pd

import numpy as np

import plotly_express as px

df=st.cache(pd.read_csv)("football_data.csv")

或者是复杂一些、时间耗费久一些的函数,只需要运行一次,此时可以用:

@st.cache

def complex_func(a,b):

DO SOMETHING COMPLEX

# Won't run again and again.

complex_func(a,b)

用Streamlit的缓存装饰器标记函数时,无论这个函数是否执行,都会检查输入的参数值(由该函数处理的)。

如果Streamlit之前没有处理过这些数据,它会调用函数并将运算结果存到本地缓存中。

下次再调用函数时,倘若还是这些参数,Streamlit就会完全跳过这一块的函数执行,直接用缓存器里的结果数据。

2. 侧边栏

为了根据个人的倾向需求使界面更加简洁,用户可能会想着把插件移动到侧边栏内,比如像Rshiny仪表盘。这非常简单,只需在插件代码中添加 st.sidebar即可。

import streamlit as st

import pandas as pd

import numpy as np

import plotly_express as px

df=st.cache(pd.read_csv)("football_data.csv")

clubs=st.sidebar.multiselect('Show Player for clubs?', df['Club'].unique())

nationalities=st.sidebar.multiselect('Show Player from Nationalities?', df['Nationality'].unique())

new_df=df[(df['Club'].isin(clubs)) & (df['Nationality'].isin(nationalities))]

st.write(new_df)

# Create distplot with custom bin_size

fig=px.scatter(new_df, x='Overall',y='Age',color='Name')

# Plot!

st.plotly_chart(fig)

将插件移动到侧边栏内

3. Markdown标记语言可以吗?

笔者特别喜欢在Markdown里编辑文字,因为发现相比HTML,它少了那些繁琐的操作,而且更能胜任数据科学的任务。所以读者也能在Streamlit程序中应用Markdown吗?

答案是可以。而且是有迹可循的。在笔者看来,最合适的就是调用Magic指令。通过该指令,用户做标记语言就会像写评论一样简单。用户也可以使用指令st.markdown。

import streamlit as st

import pandas as pd

import numpy as np

import plotly_express as px'''

# Club and Nationality App

This very simple webapp allows you to select and visualize players from certain clubs and certain nationalities.

'''

df=st.cache(pd.read_csv)("football_data.csv")

clubs=st.sidebar.multiselect('Show Player for clubs?', df['Club'].unique())

nationalities=st.sidebar.multiselect('Show Player from Nationalities?', df['Nationality'].unique())new_df=df[(df['Club'].isin(clubs)) & (df['Nationality'].isin(nationalities))]

st.write(new_df)

# Create distplot with custom bin_size

fig=px.scatter(new_df, x='Overall',y='Age',color='Name')

'''

### Here is a simple chart between player age and overall

'''

st.plotly_chart(fig)

最终的样品

总结

Streamlit已经介绍了整个创建应用程序的步骤,笔者真没什么可补充的了。

这篇文章中讲述了一个简单网页程序的创建,但有太多未知数了。举个例子,在Streamlit网站碰到GAN时,只会选择插件和缓存的指导思想。

笔者对程序的默认颜色和风格很喜爱,而且发现这用起来比Dash还顺手,笔者创建新程序之前一直用的是Dash。读者们也可以在自己的Streamlit程序中加上音频和视频项。

最重要的是,Streamlit是一款免费的开源软件,而不是开箱即用的私人网络应用。

以前笔者遇到任何变动或问题,都需要请教身边的程序猿朋友;而现在,完全不会这么麻烦了。

笔者的目标是从现在开始,在工作流中多用这个程序。即便是不难的任务,也会考虑用它,笔者觉得你也可以。

虽然笔者还未曾想过在生产环境下它执行的好坏,但对于概念项目和演示的小型验证来说,它算得上是福音了。笔者的目标是从现在开始,在工作流中多用这个程序。即便是不难的任务,也会考虑用它,笔者觉得你也可以。

完整代码:https://github.com/MLWhiz/streamlit_football_demo

留言 点赞 关注

我们一起分享AI学习与发展的干货

如需转载,请后台留言,遵守转载规范