使用聯結載入多個資料表

使用 pandas 的精實資料導入

Amany Mahfouz

Instructor

鍵(Keys)

  • 資料庫紀錄有唯一識別碼(鍵)

311 通報資料,反白顯示 unique_key 欄。唯一鍵是數字。

使用 pandas 的精實資料導入

鍵(Keys)

  • 資料庫紀錄有唯一識別碼(鍵)

課程目錄資料,反白顯示 course_code 欄。代碼由科目縮寫與數字組成。

使用 pandas 的精實資料導入

鍵(Keys)

  • 資料庫紀錄有唯一識別碼(鍵)

課程目錄資料,反白顯示 instructor_id 欄。值為 9 位數整數。

使用 pandas 的精實資料導入

鍵(Keys)

教授資料表,反白顯示 id 欄。值為與課程目錄 instructor_id 相同格式的 9 位數整數。

使用 pandas 的精實資料導入

鍵(Keys)

課程目錄資料,已聯結加入教授姓名欄

使用 pandas 的精實資料導入

資料表聯結

天氣資料,反白顯示 date 欄

311 通報資料,反白顯示 created_date 欄

使用 pandas 的精實資料導入

資料表聯結

SELECT *
  FROM hpd311calls
使用 pandas 的精實資料導入

資料表聯結

SELECT *
  FROM hpd311calls
       JOIN weather 
       ON hpd311calls.created_date = weather.date;
  • 多表操作時使用點記號(table.column
  • 預設聯結只回傳兩表鍵值皆出現的紀錄
  • 確認聯結鍵的資料型別相同,否則不會匹配
使用 pandas 的精實資料導入

聯結與篩選

/* 僅取得供暖/熱水通報,並聯結天氣資料 */
SELECT *
  FROM hpd311calls
       JOIN weather 
       ON hpd311calls.created_date = weather.date
 WHERE hpd311calls.complaint_type = 'HEAT/HOT WATER';
使用 pandas 的精實資料導入

聯結與彙總

/* 依行政區統計通報數 */
SELECT hpd311calls.borough, 
         COUNT(*)
  FROM hpd311calls
 GROUP BY hpd311calls.borough;
使用 pandas 的精實資料導入

聯結與彙總

/* 依行政區統計通報數,
   並聯結人口與住屋數 */
SELECT hpd311calls.borough, 
       COUNT(*), 
       boro_census.total_population,
       boro_census.housing_units
  FROM hpd311calls
 GROUP BY hpd311calls.borough
使用 pandas 的精實資料導入

聯結與彙總

/* 依行政區統計通報數,
   並聯結人口與住屋數 */
SELECT hpd311calls.borough, 
       COUNT(*), 
       boro_census.total_population,
       boro_census.housing_units
  FROM hpd311calls
       JOIN boro_census 
       ON hpd311calls.borough = boro_census.borough
 GROUP BY hpd311calls.borough;
使用 pandas 的精實資料導入
query = """SELECT hpd311calls.borough, 
                    COUNT(*), 
                    boro_census.total_population,
                    boro_census.housing_units
             FROM hpd311calls
                  JOIN boro_census 
                  ON hpd311calls.borough = boro_census.borough
            GROUP BY hpd311calls.borough;"""

call_counts = pd.read_sql(query, engine)
print(call_counts)
         borough  COUNT(*)  total_population  housing_units
0          BRONX     29874           1455846         524488
1       BROOKLYN     31722           2635121        1028383
2      MANHATTAN     20196           1653877         872645
3         QUEENS     11384           2339280         850422
4  STATEN ISLAND      1322            475948         179179
使用 pandas 的精實資料導入

重點回顧

  • SQL 關鍵字順序
    • SELECT
    • FROM
    • JOIN
    • WHERE
    • GROUP BY
使用 pandas 的精實資料導入

一起來練習吧!

使用 pandas 的精實資料導入

Preparing Video For Download...