Home
Explore Uedu
Student Console
Register as Member/Login
Research Informed Consent Center
Survey Center
Educational Big Data Challenge
Claim or create a course
Try a Scenario Task
Support & Messages
Uptime Data

UeduGPTs

--

Jupyters

4

Local AI

--

Uedu Code

--

Taipei AQI 46 · Taichung AQI 76 · Tainan AQI 67 · Kaohsiung AQI 64
AI Reply Desktop Notifications

Show a desktop notification when the AI TA finishes replying

Chat Message Notifications

Notify me when classmates post messages in the forum

Sound notification

Play an alert sound whenever there is a new notification

Unit 21

第三方函數庫

pip、虛擬環境,以及 NumPy 與 pandas 初探
Interaction實作導覽 25 minute(s)

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. 1

    確認 python 與 pip 都能執行

    -V 與 --version 相同。pip 後面顯示的路徑告訴你它屬於哪一個 Python。

  2. 2

    更新 pip、setuptools 與 wheel

    用 python -m pip 可以確保執行的是「這個 python」的 pip。

  3. 3

    pip list:已安裝的套件

    pip list -o(--outdated)列出有新版本的套件,pip list -u(--uptodate)列出已是最新版的套件。

  4. 4

    搜尋套件

    投影片中的 pip search 已經不能用:PyPI 停止提供這項服務,執行會出現錯誤。請直接到 pypi.org 搜尋套件名稱。

  5. 5

    pip install:安裝 NumPy

    pip install 套件名稱 安裝最新版,需要的相依套件會一起裝好。

這段導覽完成了

指定版本、更新、移除與套件清單

同一個套件的不同版本,功能可能不一樣。指定版本可以讓程式在別人的電腦上也能照樣執行。

  1. 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. 2

    更新與移除

    --upgrade(或 -U)更新到最新版;uninstall 移除,會先問你要不要繼續(-y 可以略過詢問)。

  3. 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. 1

    建立專案資料夾與虛擬環境

    python -m venv .venv 在目前目錄建立名為 .venv 的虛擬環境資料夾。(使用 virtualenv:先 pip install virtualenv,再 virtualenv .)

  2. 2

    進入(啟用)虛擬環境

    macOS/Linux 用 source .venv/bin/activate;Windows 命令提示字元用 .venv\Scripts\activate。啟用後提示字元前面會出現 (.venv),之後的 python、pip 都屬於這個環境。

  3. 3

    在虛擬環境裡安裝套件並產生清單

    新環境一開始幾乎是空的。安裝的套件只會放進 .venv,不影響其他專案。

  4. 4

    離開虛擬環境

    deactivate 回到原本的環境。.venv 資料夾不需要放進版本控制或傳給別人,傳 requirements.txt 就好。

這段導覽完成了

想一想:pip 與虛擬環境

1.

pip install SomeProject~=1.4.2 可能安裝下面哪一個版本?

2.

想讓同學裝好和你一模一樣的套件版本,最適合的作法是?

3.

關於虛擬環境,下面哪一個敘述正確?

第 1 次作答

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

1.

a = np.array([1, 2, 3]) 之後,a * 2 的結果是什麼?

2.

np.arange(1, 7).reshape(2, 3) 的 shape 是什麼?

3.

在 pandas 裡,像試算表一樣有列有欄的二維資料格式叫什麼?

第 1 次作答

實作:解析 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() 讀檔。
這一課完成了!
Next lesson:物件導向簡介
你目前沒有登入,學習進度只存在這個瀏覽器。 Login 後,進度會跟著帳號,換電腦也看得到。