整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          用于 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 應用程序的可擴展性就像氧氣一樣是生存所必需的??紤]一個應用程序,該應用程序響應速度快、交互性強,并提供非常需要的服務。但是,它無法同時處理大量請求。這將導致網絡流量下降,因為如果用戶打開一個網站并且它沒有按需要響應或經常崩潰,但用戶最終也會尋找其他一些快速的替代方案。

          因此,應用程序的可擴展性非常重要。因為可伸縮性允許應用程序一次處理大量的流量和請求。為了支持可擴展性,多線程是一個非??尚械慕鉀Q方案。但是 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>網站僅學習交流?。【W站中的商品信息均來自于互聯網。</h1>
          <!-- 		<div id="search1">
          		<input type="text" class="input1">
          		<button class="button1">搜索</button><b> 網站僅學習交流??!網站僅學習交流?。【W站僅學習交流??!網站僅學習交流?。【W站僅學習交流??!</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. 緩存

          在這個簡單的程序里,但凡值有所變動時,數據科學家們就會反復瀏覽數據框。它比較適用于用戶手中的小規模數據,至于大規?;蛐枰M行很多步處理的數據,它是不予理睬的。接下來在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學習與發展的干貨

          如需轉載,請后臺留言,遵守轉載規范


          主站蜘蛛池模板: 97久久精品午夜一区二区| 成人无码一区二区三区| 无码日韩人妻AV一区二区三区| 国产一区二区精品| 日本精品一区二区久久久| 色国产精品一区在线观看| 果冻传媒董小宛一区二区| 精品女同一区二区三区在线 | 午夜视频一区二区| 久久精品无码一区二区三区| 国产成人精品a视频一区| 无码人妻精品一区二区三区不卡 | 亚洲一区二区三区丝袜| 中文字幕一区二区三区在线观看 | 国产综合无码一区二区三区| 国产一区二区精品在线观看| 男人的天堂av亚洲一区2区| 亚洲AV无码一区二区一二区| 国产精品视频分类一区| 国产一区二区久久久| 中文字幕av人妻少妇一区二区| 精品熟人妻一区二区三区四区不卡 | 一区二区三区福利视频| 一区二区三区在线播放| 精品在线一区二区| 亚洲国产成人久久一区WWW| 久久亚洲中文字幕精品一区四| 影院无码人妻精品一区二区| 精品一区二区三区在线观看| 国产精品男男视频一区二区三区| 在线免费视频一区| 久久精品无码一区二区三区日韩 | 四虎永久在线精品免费一区二区| 久久中文字幕无码一区二区| 色久综合网精品一区二区| 人妻少妇精品视频一区二区三区 | 国产乱码精品一区二区三区| 2022年亚洲午夜一区二区福利| 无码人妻精品一区二区三区东京热 | 末成年女AV片一区二区| 色噜噜狠狠一区二区三区果冻 |