資料庫導論

使用 pandas 的精實資料導入

Amany Mahfouz

Instructor

關聯式資料庫

  • 以資料表組織實體的資料
  • 每一列(紀錄)是實體的實例
  • 每一欄包含屬性的資訊
  • 資料表可透過唯一鍵彼此關聯
  • 支援更多資料、多位使用者同時存取與資料品質控管
  • 每欄皆指定資料型別
  • 使用 SQL(Structured Query Language)與資料庫互動
使用 pandas 的精實資料導入

常見的關聯式資料庫

Microsoft SQL Server 標誌

Oracle 標誌

  • SQLite 資料庫是電腦檔案

PostgreSQL 標誌

SQLite 標誌

使用 pandas 的精實資料導入

連線到資料庫

  • 兩步驟流程:
    1. 建立與資料庫的連線方式
    2. 查詢資料庫

資料庫剪影圖

使用 pandas 的精實資料導入

建立資料庫引擎

SQLAlchemy 標誌

  • sqlalchemycreate_engine() 會建立處理資料庫連線的引擎
    • 需要目標資料庫的字串 URL
    • SQLite URL 格式:sqlite:///filename.db
使用 pandas 的精實資料導入

查詢資料庫

  • 使用 pd.read_sql(query, engine) 從資料庫載入資料
  • 參數
    • query:要執行的 SQL 查詢字串或要載入的資料表
    • engine:連線/資料庫引擎物件
使用 pandas 的精實資料導入

SQL 複習:SELECT

  • 用來從資料庫查詢資料
  • 基本語法:
    SELECT [column_names] FROM [table_name];
    
  • 取得整個資料表的所有資料:
    SELECT * FROM [table_name];
    
  • 程式碼風格:關鍵字全大寫,使用分號(;)結束敘述
使用 pandas 的精實資料導入

從資料庫取得資料

# 載入 pandas 與 sqlalchemy 的 create_engine
import pandas as pd
from sqlalchemy import create_engine

# 建立資料庫引擎以管理連線 engine = create_engine("sqlite:///data.db")
# 以表名載入整個 weather 資料表 weather = pd.read_sql("weather", engine)
使用 pandas 的精實資料導入
# 建立資料庫引擎以管理連線
engine = create_engine("sqlite:///data.db")

# 以 SQL 載入整個 weather 資料表 weather = pd.read_sql("SELECT * FROM weather", engine)
print(weather.head())
       station                         name  latitude  ...   prcp  snow  tavg tmax  tmin
0  USW00094728  NY CITY CENTRAL PARK, NY US  40.77898  ...   0.00   0.0         52    42
1  USW00094728  NY CITY CENTRAL PARK, NY US  40.77898  ...   0.00   0.0         48    39
2  USW00094728  NY CITY CENTRAL PARK, NY US  40.77898  ...   0.00   0.0         48    42
3  USW00094728  NY CITY CENTRAL PARK, NY US  40.77898  ...   0.00   0.0         51    40
4  USW00094728  NY CITY CENTRAL PARK, NY US  40.77898  ...   0.75   0.0         61    50

[5 rows x 13 columns]
使用 pandas 的精實資料導入

一起來練習吧!

使用 pandas 的精實資料導入

Preparing Video For Download...