<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Python + Steamlit 快速開(kāi)發(fā)可視化 web 頁(yè)面!

          共 3145字,需瀏覽 7分鐘

           ·

          2021-12-05 09:11

          用Python做web圖形用戶界面,最先想到的是FlaskDjong等框架。然而研究這些對(duì)于初學(xué)者來(lái)講,尤其是沒(méi)有web開(kāi)發(fā)基礎(chǔ)的數(shù)據(jù)分析人員是痛苦的。

          幸運(yùn)的是,Python中也有很多第三方庫(kù)來(lái)快速進(jìn)行簡(jiǎn)單的web可視化,例如之前介紹的 PyWebIO

          今天再介紹一個(gè) Steamlit,可以快速利用簡(jiǎn)單的代碼快速布局自己想要的web界面!效果如下

          一、安裝與運(yùn)行

          安裝之前,我們需要將 Python 的版本升級(jí)到3.7或以上,同時(shí)設(shè)置好環(huán)境變量,這里默認(rèn)讀者都已經(jīng)設(shè)置好不細(xì)講。

          WindowsmacOS 中都可以使用pip進(jìn)行安裝

          pip?install?streamlit

          在終端輸出完畢后,可以執(zhí)行streamlit hello來(lái)檢驗(yàn),如果出現(xiàn)新的網(wǎng)頁(yè)界面,則說(shuō)明安裝成功。

          并且之后利用Streamlit寫的程序,需要通過(guò)運(yùn)行streamlit run {你的py文件}來(lái)實(shí)現(xiàn)。

          二、常用命令

          接下來(lái)我們來(lái)了解 Streamlit 的一些常用命令。首先引入相關(guān)庫(kù)

          import?streamlit?as?st
          import?numpy?as?np
          import?pandas?as?pd
          import?time

          構(gòu)建 MLweb 的標(biāo)識(shí)題目,可以利用st.title()函數(shù)創(chuàng)建一個(gè)標(biāo)題。

          st.title('我的第一個(gè)MLweb')

          保存這個(gè)py文件,命名為test.py,利用我們第一部分講解如何運(yùn)行代碼,在命令窗口輸入streamlit run test.py

          注意,這里直接用 streamlit 是已經(jīng)調(diào)好了環(huán)境變量,如果不想調(diào)的,打開(kāi) streamlit 的源程序文件,將streamlit的exe文件調(diào)用即可。

          正常運(yùn)行下會(huì)彈出一個(gè) localhost網(wǎng)頁(yè),效果如下

          8f92e275377c700f7277fa0e430d1065.webp

          輸入文字

          如果需要輸入文字,可以用st.text_input()函數(shù)

          構(gòu)建MLWeb表格

          機(jī)器學(xué)習(xí)里面我們必須要做的是查看數(shù)據(jù)的類型,維度等具體特征。比如我們總是用到df.head(),那么在MLweb里面怎么實(shí)現(xiàn)?

          有幾個(gè)方法:st.table()st.dataframe()st.write()

          其中st.write()是常見(jiàn)的表格函數(shù),st.write()被稱為streamlit庫(kù)的瑞士軍刀,圖像、文本、表格都可以用它來(lái)實(shí)現(xiàn),至于三者有什么區(qū)別呢?

          • st.write():交互式表格,不可修改
          • st.table():靜態(tài)表格
          • st.dataframe():返回一個(gè)可以使用和修改的對(duì)象,可以向其中添加數(shù)據(jù)或替換數(shù)據(jù).

          代碼如下

          st.write("嘗試運(yùn)用dataframe弄一個(gè)表格")
          df?=?pd.DataFrame({
          ????'第一列':[1,2,3,4],
          ????'第二列':['a','b','c','d']})
          st.table(df)
          st.write("嘗試運(yùn)用dataframe弄一個(gè)表格---write函數(shù)")
          st.write(pd.DataFrame({
          ????'first?column':?[1,?2,?3,?4],
          ????'second?column':?[10,?20,?30,?40]
          }))

          效果如圖:

          02de1620e5adfe24fb2458ddc93b5447.webp

          利用write函數(shù)則效果如下

          fff8d2e24c555ef4204f24be63d580c3.webp

          可視化

          機(jī)器學(xué)習(xí)挖掘數(shù)據(jù)的過(guò)程中可視化同樣占據(jù)了舉足輕重的地位,這里我們構(gòu)使用st.line_chart()函數(shù)

          chart_data?=?pd.DataFrame(
          ?????np.random.randn(20,?3),
          ?????columns=['a',?'b',?'c'])

          st.line_chart(chart_data)

          效果如下:3f6b8ea44f98f3f5f41722051b3a00dc.webp

          可以看到,streamlit給了我們方便的功能:下載或查看我們構(gòu)建的圖片,你甚至可以查看圖片的源代碼!

          地圖

          streamlit里面有一個(gè)它時(shí)常拿來(lái)當(dāng)門面的圖,就是舊金山的地圖,你或許利用Flask在創(chuàng)建地圖,讀取坐標(biāo)點(diǎn),個(gè)性化地圖,顯示在web端這些步驟花費(fèi)大量時(shí)間。

          而在這里,你進(jìn)需要提供你的坐標(biāo)點(diǎn)構(gòu)成的數(shù)據(jù)框,并用st.map()函數(shù)即可,這里用廣東廣州的坐標(biāo)點(diǎn)(不太精準(zhǔn)哈)來(lái)畫圖

          代碼如下:

          map_data?=?pd.DataFrame(
          ????np.random.randn(1000,?2)?/?[50,?50]?+?[23.26,?113.57],??#N,W
          ????columns=['lat',?'lon'])
          st.map(map_data)

          效果圖如下716911cc94883e9ab55aa90a6010970d.webp

          實(shí)戰(zhàn)

          最后我們來(lái)實(shí)現(xiàn)一個(gè)簡(jiǎn)單股票查詢系統(tǒng)。基本想法如下

          輸入:用戶寫入股票代碼,起始時(shí)間,結(jié)束時(shí)間。

          輸出:股票交易數(shù)據(jù)表,股票ma線可視化。

          首先引入包

          import?streamlit?as?st
          import?pandas?as?pd
          import?numpy?as?np
          import?tushare?as?ts

          接下來(lái)設(shè)置標(biāo)題與可寫入文本,這里的文本是在web端輸入的,用到st.text_input()函數(shù)

          st.title('股票查詢系統(tǒng)')
          code?=?st.text_input('你的股票名稱:',help?=?'code:股票代碼,即6位數(shù)字代碼,或者指數(shù)代碼(sh=上證指數(shù) sz=深圳成指 hs300=滬深300指數(shù) sz50=上證50 zxb=中小板 cyb=創(chuàng)業(yè)板)')
          start_time?=?st.text_input('起始時(shí)間:')
          stop_time?=?st.text_input('結(jié)束時(shí)間:')

          注意:這里的日期時(shí)間默認(rèn)以年-月-日格式輸入,同時(shí)在股票名稱旁邊加入一個(gè)輔助幫助說(shuō)明。

          現(xiàn)在進(jìn)行股票名稱獲取,我們用tushare庫(kù)作為股票交易數(shù)據(jù)獲取,注意需要tushare的pro接口的api才能通過(guò)股票代碼獲取股票公司名稱

          def?get_name(stoke_code):
          ????pro=ts.pro_api()
          ????dat?=?pro.query('stock_basic',?fields='symbol,name')????????????????
          ????company_name?=?list(dat.loc[dat['symbol']?==?stoke_code].name)[0]?
          ????return?company_name

          接著對(duì)股票交易數(shù)據(jù)顯示,用到st.dataframe()函數(shù)來(lái)讓用戶更直觀的看到獲取的交易數(shù)據(jù)

          data?=?ts.get_hist_data('{}'.format(code),start?=?'{}'.format(start_time),
          ?????????????????end?=?'{}'.format(stop_time))
          st.write('股票代碼為{}的交易數(shù)據(jù)表'.format(code))
          st.dataframe(data)

          最后可視化ma短線長(zhǎng)線

          if?code?!=?'':
          ????data1?=?data[['close','ma5','ma10']]
          ????st.line_chart(data1)
          else:
          ????pass

          MACD治標(biāo)是大家常看的指標(biāo),那么我們將ma5和ma10在圖標(biāo)上顯示,并畫上收盤價(jià),讀者可以自行驗(yàn)證MACD的黃金或死亡交叉!最終效果見(jiàn)下方視頻


          3a3414d101398761ae8bef6abdc71219.webp

          各位伙伴們好,詹帥本帥搭建了一個(gè)個(gè)人博客和小程序,匯集各種干貨和資源,也方便大家閱讀,感興趣的小伙伴請(qǐng)移步小程序體驗(yàn)一下哦!(歡迎提建議)

          推薦閱讀


          牛逼!Python常用數(shù)據(jù)類型的基本操作(長(zhǎng)文系列第①篇)

          牛逼!Python的判斷、循環(huán)和各種表達(dá)式(長(zhǎng)文系列第②篇)

          牛逼!Python函數(shù)和文件操作(長(zhǎng)文系列第③篇)

          牛逼!Python錯(cuò)誤、異常和模塊(長(zhǎng)文系列第④篇)


          瀏覽 189
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  黄页视频在线观看免费 | 国产v亚洲| 俺去也亚洲 | 欧洲精品无码一区二区在线 | 影音先锋女人aV鲁色 |