用 SQL 查詢精煉匯入

使用 pandas 的精實資料導入

Amany Mahfouz

Instructor

選取欄位(SELECT)

  • SELECT [column names] FROM [table name];
  • 範例:
    SELECT date, tavg 
    FROM weather;
    
使用 pandas 的精實資料導入

WHERE 子句

  • WHERE 子句選擇性匯入記錄
    SELECT [column_names] 
      FROM [table_name] 
     WHERE [condition];
    
使用 pandas 的精實資料導入

以數值篩選

  • 以數學運算子比較數值
    • =
    • >>=
    • <<=
    • <>(不等於)
    • 範例:
      SELECT * 
      FROM weather 
      WHERE tmax > 32;
      
使用 pandas 的精實資料導入

文字篩選

  • = 與要比對的文字,匹配完全相同的字串
  • 字串比對區分大小寫
  • 範例:
    /* 取得布魯克林的事件記錄 */
    SELECT * 
    FROM hpd311calls
    WHERE borough = 'BROOKLYN';
    
使用 pandas 的精實資料導入

SQL 與 pandas

# 載入函式庫
import pandas as pd
from sqlalchemy import create_engine

# 建立資料庫引擎 engine = create_engine("sqlite:///data.db")
# 撰寫查詢以取得布魯克林的記錄 query = """SELECT * FROM hpd311calls WHERE borough = 'BROOKLYN';"""
# 查詢資料庫 brooklyn_calls = pd.read_sql(query, engine)
print(brookyn_calls.borough.unique())
['BROOKLYN']
使用 pandas 的精實資料導入

合併條件:AND

  • WHERE 加上 AND 只回傳同時符合所有條件的記錄
# 撰寫查詢以取得布朗克斯的管線類別記錄
and_query = """SELECT * 
                 FROM hpd311calls 
                WHERE borough = 'BRONX' 
                  AND complaint_type = 'PLUMBING';"""

# 取得布朗克斯關於管線問題的通報 bx_plumbing_calls = pd.read_sql(and_query, engine) # 檢查記錄數 print(bx_plumbing_calls.shape)
(2016, 8)
使用 pandas 的精實資料導入

合併條件:OR

  • WHERE 加上 OR 回傳符合任一條件的記錄
# 撰寫查詢以取得漏水或管線的記錄
or_query = """SELECT * 
                FROM hpd311calls 
               WHERE complaint_type = 'WATER LEAK'
                  OR complaint_type = 'PLUMBING';"""

# 取得關於管線或漏水的通報 leaks_or_plumbing = pd.read_sql(or_query, engine) # 檢查記錄數 print(leaks_or_plumbing.shape)
(10684, 8)
使用 pandas 的精實資料導入

一起來練習吧!

使用 pandas 的精實資料導入

Preparing Video For Download...