fbpx
Python

有效管理Python套件(Package)的工具及概念

在實務上發展應用程式時,除了可以自行開發模組(Module)與套件(Package)外,很多時候會安裝使用第三方套件(Package),來提升專案的開發效率。 所以本文將介紹如何在PyPI中搜尋所需的Python套件(Package),並且以Windows作業系統及Visual Studio Code開發工具為例,瞭解Python強大的套件管理工具,讓您有效管理專案中的Python套件(Package)。 由於是在Visual Studio Code的Terminal視窗中下指令的方式來操作,所以使用命令提示字元視窗,也可以達到相同的效果。本文重點包含: PyPI(Python Package Index) pip套件管理工具 pipenv套件管理工具 Pipfile及Pipfile.lock檔案 一、PyPI(Python Package Index) PyPI是一個套件庫,位於https://pypi.org,其中包含了各式各樣的Python套件(Package),在開發應用程式的過程中,可以到這邊來搜尋是否有所需的功能套件(Package),安裝後透過引用的方式來進行使用,藉此提升開發效率。 現在就來介紹幾個在使用PyPI時,需要瞭解的基本功能。首先,PyPI的首頁如下圖: 各位可以在搜尋的地方查詢所需的套件,例如搜尋常應用在網路爬蟲的beautifulsoup4套件(Package),從查詢結果可以看到許多相關的套件(Package),如下圖: 以beautifulsoup4 4.8.2為例,點進此套件(Package)後,可以看到安裝的指令及最新版的發佈日期,如下圖: 一個套件(Package)要如何使用,一定會有文件可以參考,往下即可看到Documentation的連結,如下圖: 而套件(Package)的版本演進歷史則可以透過左邊的Release history來查看,如下圖: 以上是在使用PyPI上查找套件(Package)時,較常使用的部分,接下來,就來教大家如何透過指令來安裝套件(Package)吧。…
學程式助教
February 5, 2020
Python工程思維

Python資料處理套件Part6 – Pandas 數值處理與基礎統計量

上一篇文章主要介紹如何利用pandas處理字串資料,而這章節的會著重於數值的資料處理以及顯示基礎統計量的方法。在資料分析中,數值資料是非常常見的,而且對於後續的深入分析而言,數值資料能夠讓我們進一步利用推論統計檢定許多因素與目標的關聯性,幫助我們能夠利用檢定結果進行決策,或是發現夠深入的趨勢。   這次我們會使MLB美國職棒大聯盟的各隊歷年統計數據(mlb_team.csv)的公開資料,其中記錄了美國職棒大聯盟從西元1871年至今的各球隊數據,因為最近正好碰到需要分析棒球的運動相關數據,且這份資料大部分的欄位都是數值欄位,正好適合這篇文章主題。 讀取資料:   import pandas as pd mlb_teams = pd.read_csv("mlb_team.csv",encode="UTF-8") mlb_teams.head()   向量處理 Vectorize Operations 之前的文章中有提到Pandas是利用向量處理的方式進行資料處理的,所以我們在進行數值運算的時候都是針對單一個欄位將欄位中的所有數值進行相同的運算,如果要針對特定條件的數值進行運算,則需要先進行資料篩選再進行數值處理。 基本上在利用Pandas進行數值運算時,跟我們一般在寫Python計算一樣,只是平常用於運算的變數變成了 DataFrame 物件或是 Series 物件,所以所有Python中的數學運算符,在Pandas都可以直接使用: s = pd.Series() s+11 s-10 s*5…
學程式助教
February 3, 2020
Python

Python是什麼? TOP7 新手必讀知識!

Python在近幾年來的受到愈來愈多人的青睞﹐現在更是最熱門的程式語言之一。在這一篇文章我們會和大家一起探討以下四個問題: Python究竟是什麼? Python有什麼功能? 學習Python究竟可以從事那些行業? 介紹Python相關軟體 (more…)
wilson
January 28, 2020
Python

Python 入門&基本教學介紹!

到底要怎麼開始學Python ?對於許多人來說,最難的其實不是學習的過程,而是連起步都不知道該怎麼下手,幾天這篇文章會帶大家認識基礎的python,也讓你對python也更多基礎認識! 新課程上架Udemy !  全新Python 課程上架,8小時基礎實戰!,限時優惠只要NT 390 (HKD 100 起)! 讓你輕鬆學習: 了解 Python 語法與什麼是資料科學 使用 Pandas 套件進行資料處理 瞭解程式背後的邏輯與為什麼學習 掌握視覺化套件庫 Matplotlib 掌握進階視覺化套件庫 Seaborn 練習使用【歷屆金鐘獎資料】取得重要訊息 用8小時,省下你獨自摸索花費的時間! 8小時,讓履歷不一樣!…
學程式助教
January 28, 2020
學程式主題小聚專案思維

【學程式主題小聚-利用Python與Balck Scholes來制定選擇權評價模型】

相信大家都有聽過股票但是選擇權比較鮮少人會特別注意到亦或是想深刻的了解的 其實,台灣人對於金融市場是非常熱衷的,這次Raymod身為一名股權衍生性金融商品交易員來告訴我們 身為一名交易員他對於選擇權中有什麼該注意的,以及選擇權中交易的細節都在這場小聚都仔細地分享給我們! 對Python+金融有興趣的朋友可以來到Raymond的部落格走走喔 雷蒙的Python投資筆記版主(https://raymond-investment.com/)   衍生性金融商品介紹 由標的資產延伸(衍生)出來,並可以利用金錢衡量的商品 股票、期貨、利率、外匯、原物料等 高槓桿 → 高風險 什麼是選擇權 定義:有權利於某時間用某價格買進或賣出標的資產 用途:投機或避險 相關參數:買賣權,波動率、標的資產價格、履約價、到期時間、利率 Raymond也舉了1月的總統大選當例子, 總統大選前應該就要先避險 ,也是因爲新的執政黨剛上任會影響金融市場。 要會假想整體局勢,會比較像賭博概念! 再購入選擇權時,當然也要了解風險,要掌握的住會輸多少 有種「要戰勝敵人,就得先瞭解敵人」的感覺 股票的買入賣入是1:1,選擇權則是1:4,風險這麼高的請況下,這時,我們就是要學選擇權評價 可以幫助我們以下幾點 避免錯價買入或賣出…
學程式助教
January 22, 2020
Python

Python Comprehension語法應用教學

相信在學Python程式語言的朋友都知道,Python語法簡單易學且非常簡潔,今天要來介紹的Comprehension即是Python的Pythonic語法之一,可以運用在任何可疊代的物件(Iterable Object)上,只要一行程式碼即可完成多行的任務,讓我們的程式碼簡潔及增加可讀性。 透過今天的教學,您將可以學到Python Comprehension如何應用在以下幾個重要的物件(Object)上,並且有能力將現有程式碼改寫為Python Comprehension語法。 List Comprehension Set & Dictionary Comprehension Generator Expression   一、List Comprehension 串列(List)Comprehension的語法包含三個部分,說明如下: expression:可以是 item 或運算式。 item:接收可疊代的物件(Iterable Object)元素。 iterable:可疊代的物件(Iterable Object)。 通常要建立一個串列(List),我們可以透過for迴圈的方式,如下範例:…
學程式助教
January 22, 2020
工程思維財金應用

如何用蒙地卡羅模擬股價?

上回我們使用最基本的亂數模擬器方法成功模擬出Mike Trout的上壘率,當抽取出來的亂數小於上壘率時,認定為上壘,而亂數大於上壘率時,則認定為出局,用簡單的大於和小於就可模擬出來的模型,股價模型就稍微複雜些了,基本款的股價路徑模型最少具有二種參數與機率分配假設,背後的數學推導與原理就請大家自行去看財務工程相關的書籍了,我們先列出一個股價過程的理論式如下: 有了最基本的理論公式後,首先,我們必須定義出參數,參數可以描述這個股票的特性,例如新興市場股票與成熟市場股票的報酬率與波動度都不一樣,電信與生技公司的股價也會相當不一樣,所以我們必須要利用過去的資料去推估參數的區間範圍。 mu = 0.1 #資產年化報酬率為10% Std = 0.2 #資產年化波動率為20% dt = 1/252. #模擬路徑為每天,每天經過252分之一年 Copy   第一步:先將理論式轉換為Python的計算語言,記得括號設對位置,再用相對應的科學計算函數帶入公式內 S1 = S0 * np.exp((mu - 0.5…
學程式助教
January 20, 2020
工程思維財金應用

機器人理財(Robo-Advisor)真的能幫助到我們嗎?

近兩年機器人理財(Robo-Advisor)這個詞大量出現在金融市場中,也有多家國內外金融機構在推銷這種型態的商品,並大量以智能與人工智慧(AI)來作為行銷的關鍵字,今天就要來仔細的分析幾類我所認識的理財機器人系統。 馬可維茲(Morkowitz)的投資組合理論(Portfolio Theory) 馬可維茲於1952年提出了投資組合理論,將金融市場中的各種資產簡化定義成預期報酬率、標準差與相關係數,在假設以上參數均為已知的狀況下,可以進行規劃求解得出「最小風險投資組合(Minimum Variance Portfolio)」與「最適投資組合(Optimal Portfolio)」,大部分的機器人理財業者均是以此種模型進行操作,除了有諾貝爾經濟學獎的加持外,對於現有的程式撰寫有相當的方便,許多程式均有規劃求解的套件可供使用。 馬可維茲的投資組合理論利用數學嚴謹的證明,資產配置對於投資組合波動度與報酬率有顯著的影響,將多種相關係數低的資產配置在一起,能夠降低投資組合波動度與提高預期的報酬率,例如債券與股票呈現負相關時,能夠配置出風險調整後報酬較高的組合,相對於單一股票或債券。 利用馬可維茲現代投資組合理論的機器人理財平台,通常會利用風險問卷來進行投資人分類,例如年齡、投資期間與風險承受度等,透過背後的評分邏輯將使用者分為三至四個風險屬性,假設情況如下: 投資人屬性 可承受年化波動率 積極型投資人 25%以上 穩健型投資人 15%~25% 保守型投資人 15%以下 利用過去各資產類別的走勢去計算報酬率、波動度與相關係數,作為投資組合評估的相關參數,由使用者作答的風險問卷來對應出可承受年化波動度,再以程式進行目標為「固定風險下的最佳報酬率」的最佳化,就可以得到最佳的權重組合。 Smart Beta Beta這個詞在金融市場中,代表市場報酬的相對於資產的變動係數,例如當S&P 500上漲1%時,你的投資組合上漲0.8%,大致可以說Beta為0.8,大多股票市場指數都是以「市值加權」的方式進行編制,背後邏輯就是每天在幫你追高殺低,以2018年為例,如果持有S&P 500指數而言,就會不斷的幫我們增持FAANG(Facebook, Amazon, Apple,…
學程式助教
January 20, 2020
工程思維

想嚐嚐Javascript,Python,Ruby的味道嗎:工程師必喝的「程式語言咖啡」

  每天打程式的你,有想過程式語言變成咖啡,會是什麼味道嗎? 現在日本推出了一款超爆紅的程式語言咖啡豆「CODE COFFEE」,由日本工程師們挑選出來的! 總共有 C、Java、Perl、Ruby、Python、JavaScript、Go、Swift 八種口味, 如果你是這幾種程式語言的支持者,一定要來試試看XD 最後還可以在 Github 跟其他工程師交流你的飲後感想唷! https://www.youtube.com/watch?v=ftSjvrKB3XU&feature=youtu.be 我們來看看這八種程式語言吧! C語言咖啡豆   「一切的來源--基本語言咖啡」 由咖啡的來源巴西・哥倫比亞,來調配出一切程式語言的基礎–C語言的滋味。 語言特徵:SIMPLE 咖啡特長:來源 主要咖啡豆:巴西、哥倫比亞 價格/内容量:1000日圓(未稅)/100g Java咖啡豆   「歷史悠久、原始語言咖啡」 Java的LOGO就是一杯熱咖啡,這樣應該不難想像它跟咖啡的歷史其實很深遠吧XD…
學程式助教
January 20, 2020
Python

Python封裝(Encapsulation)實用教學

今天要來介紹Python物件導向設計中的封裝(Encapsulation)概念,主要的目的在保護程式碼中重要的實作細節不被外部知道,以防止外部程式碼直接或不當的存取類別中的屬性(Attribute)及方法(Method),而導致程式邏輯上的錯誤。 將複雜的運算邏輯進行封裝(Encapsulation)的好處是,外部程式碼只要透過統一介面來進行存取即可,而無需瞭解其中的運算過程,讓程式碼除了保有存取上的控制外,也易於維護。 今天要來說明的封裝(Encapsulation)重點包含了: Python封裝(Encapsulation) 私有屬性(Private Attribute) 私有方法(Private Method) 一、Python封裝(Encapsulation) 就如同文章開頭所說明的,封裝(Encapsulation)的概念就有點像權限控制,有些屬性(Attribute)或方法(Method)只想於類別內部使用,而不想公開於外部,除了減少程式碼因來源端不適當的使用發生問題外,也可保護其中重要的商業邏輯。 一般情況下,來源端皆可存取類別中公開的屬性(Attribute)及方法(Method),如下範例: 執行結果 如果我們要防止來源端存取作者屬性(Attribute)及呼叫新增文章標題方法(Method),則需透過封裝(Encapsulation)的概念來進行設計。接下來就分別說明如何封裝(Encapsulation)類別中的屬性(Attribute)及方法(Method)。 二、私有屬性(Private Attribute) 在類別(Class)中可以進行存取,而外部無法存取的屬性(Attribute)。使用方式就是在私有屬性(Private Attribute)前加上兩個底線(__),如下範例: 執行結果 從範例中可以看到,來源端無法存取到類別中的author及titles私有屬性(Private Attribute)。如果是利用Visual Studio Code來開發Python的話,在來源端物件的IntelliSense清單中就選不到私有屬性(Private Attribute),證明成功將其進行封裝(Encapsulation)。 但是Python不像其他物件導向程式語言真的把屬性(Attribute)或方法(Method)變為私有,事實上來源端還是可以存取得到。我們先透過__dict__屬性來查看類別中的屬性(Attribute),如下範例: 執行結果…
學程式助教
January 18, 2020

學程式主題社群回顧