Learning Objectives
- pip list 的用法:查看已安裝的套件
- pip install 的用法:安裝、指定版本、更新、移除,以及 requirements.txt
- 用虛擬環境(venv)為每個專案隔離套件
- 使用第三方函數庫的模組:NumPy 陣列與 pandas DataFrame 初探
標準函式庫之外:PyPI
每個 Python 版本都附帶標準函式庫;除此之外,還有一個官方的第三方套件倉庫 PyPI(Python Package Index,pypi.org),由世界各地的開發者貢獻,數量已經超過數十萬個,而且持續增加。
| 套件 | 用途 |
|---|---|
numpy |
科學計算的基礎:N 維陣列與向量化運算 |
pandas |
表格(結構化)資料:讀寫 CSV/Excel/JSON/SQL、篩選、分組、處理缺漏值 |
matplotlib、seaborn、bokeh |
資料視覺化(靜態圖表、統計圖表、網頁互動圖表) |
scipy、scikit-learn |
科學運算、機器學習 |
psutil |
系統與程序資訊:CPU、記憶體、磁碟、網路 |
安裝套件用 pip 指令,在終端機(命令列)執行,不是在 Python 程式裡執行。
找套件可以到 Python 官方文件(docs.python.org/3/library)、PyPI 官網,或 GitHub 的 Python 熱門專案。
pip:查看與安裝套件
下面的版本號碼與套件清單只是範例,會依你的電腦而不同。Windows 若找不到 pip,可以改用 py -m pip。
-
1
確認 python 與 pip 都能執行
-V與--version相同。pip後面顯示的路徑告訴你它屬於哪一個 Python。 -
2
更新 pip、setuptools 與 wheel
用
python -m pip可以確保執行的是「這個 python」的 pip。 -
3
pip list:已安裝的套件
pip list -o(--outdated)列出有新版本的套件,pip list -u(--uptodate)列出已是最新版的套件。 -
4
搜尋套件
投影片中的
pip search已經不能用:PyPI 停止提供這項服務,執行會出現錯誤。請直接到 pypi.org 搜尋套件名稱。 -
5
pip install:安裝 NumPy
pip install 套件名稱安裝最新版,需要的相依套件會一起裝好。
指定版本、更新、移除與套件清單
同一個套件的不同版本,功能可能不一樣。指定版本可以讓程式在別人的電腦上也能照樣執行。
-
1
指定版本
寫法 意思 pip install SomeProject最新版 pip install SomeProject==1.4剛好 1.4 版 pip install "SomeProject>=1,<2"1 版以上、2 版以前(有 <、>時要加引號,不然終端機會當成重新導向)pip install SomeProject~=1.4.2相容版本:1.4.* 而且至少 1.4.2 -
2
更新與移除
--upgrade(或-U)更新到最新版;uninstall移除,會先問你要不要繼續(-y可以略過詢問)。 -
3
pip freeze 與 requirements.txt
pip freeze用「套件==版本」的格式列出已安裝的套件;用>存成requirements.txt就是專案的套件清單。別人拿到專案,只要pip install -r requirements.txt就能裝好一模一樣的版本。pip install --upgrade -r依清單更新,pip uninstall -r依清單移除。
虛擬環境:每個專案一套套件
所有專案共用同一套套件時,A 專案要 pandas 1.x、B 專案要 pandas 2.x 就會打架。虛擬環境讓每個專案有自己獨立的套件資料夾。投影片用的是第三方的 virtualenv;Python 3.3 起內建 venv 模組,用法幾乎相同,這裡以 venv 示範。
-
1
建立專案資料夾與虛擬環境
python -m venv .venv在目前目錄建立名為.venv的虛擬環境資料夾。(使用 virtualenv:先pip install virtualenv,再virtualenv .) -
2
進入(啟用)虛擬環境
macOS/Linux 用
source .venv/bin/activate;Windows 命令提示字元用.venv\Scripts\activate。啟用後提示字元前面會出現(.venv),之後的python、pip都屬於這個環境。 -
3
在虛擬環境裡安裝套件並產生清單
新環境一開始幾乎是空的。安裝的套件只會放進
.venv,不影響其他專案。 -
4
離開虛擬環境
deactivate回到原本的環境。.venv資料夾不需要放進版本控制或傳給別人,傳requirements.txt就好。
想一想:pip 與虛擬環境
pip install SomeProject~=1.4.2 可能安裝下面哪一個版本?
想讓同學裝好和你一模一樣的套件版本,最適合的作法是?
關於虛擬環境,下面哪一個敘述正確?
NumPy:N 維陣列
NumPy 是用 Python 做科學計算的基礎套件:提供強大的 N 維陣列物件、不同維度陣列之間的運算、線性代數、傅立葉轉換、亂數等功能,
也能和 C/C++、Fortran 程式整合。慣例寫法是 import numpy as np。
下面的範例在 CodeLab 裡用瀏覽器版的 NumPy 執行,第一次播放或重跑時要先下載套件,請稍候。
NumPy 陣列:逐元素運算
NumPy 陣列的 +、* 是逐元素(vectorized)運算:對應位置一一計算,不必自己寫迴圈。最後一行用串列對照:串列的 * 2 是「重複兩次」,意思完全不同。
陣列的形狀與統計
shape 是陣列每一個維度的長度,用元組表示。reshape() 改變形狀;sum()、mean() 計算總和與平均,axis=0 表示沿著列的方向(每一行各自加總)。
pandas:DataFrame 初探
DataFrame 是 pandas 的二維表格,很像試算表或資料庫的資料表;取出其中一欄是一維的 Series。這裡用字典建立一個小表格。右邊記憶體區會出現 pandas 內部的屬性(例如 _mgr),不用理會,重點看輸出。實務上更常用 pd.read_csv("檔名.csv") 直接讀檔。
想一想:NumPy 與 pandas
a = np.array([1, 2, 3]) 之後,a * 2 的結果是什麼?
np.arange(1, 7).reshape(2, 3) 的 shape 是什麼?
在 pandas 裡,像試算表一樣有列有欄的二維資料格式叫什麼?
實作:解析 requirements.txt
requirements.txt 每一列是「套件名稱+版本條件」。請把每一列拆成名稱與條件印出來:條件從第一個 =、<、>、~、! 開始;沒有條件的印 任何版本。(這題不用安裝套件,用字串處理就能完成。)
重點精華回顧
- 第三方套件來自 PyPI,用
pip在終端機管理:pip list(-o過期、-u最新)、pip install、pip install --upgrade、pip uninstall。 - 指定版本:
==剛好、>=/<範圍、~=相容版本;有<、>時要加引號。 pip freeze > requirements.txt產生套件清單,pip install -r requirements.txt依清單安裝。- 虛擬環境(
python -m venv .venv或 virtualenv)讓每個專案有獨立的套件;activate進入、deactivate離開。 - NumPy:
np.array()、np.arange()建立陣列,運算逐元素進行;shape、reshape()、sum()、mean()。 - pandas:
DataFrame是二維表格、Series是一維;head()看前幾列、df['欄名']取一欄、pd.read_csv()讀檔。