做個題目吧 捷運站的大數據 可能會蠻好玩的
抓了 2017/01 至 2025/12 的所有捷運資料
使用 duckbdb 將他讀入
總共會有 877,719,252 筆資料
| count_star() |
|---|
| 877,719,252 |
| (877.72 million) |
資料格式 是
日期,時段,進站,出站,人次
2025-12-01,00,松山機場,松山機場,0
2025-12-01,00,松山機場,中山國中,0
2025-12-01,00,松山機場,南京復興,1
2025-12-01,00,松山機場,忠孝復興,0
2025-12-01,00,松山機場,大安,1
2025-12-01,00,松山機場,科技大樓,0
2025-12-01,00,松山機場,六張犁,0
生活區 站型 還是 上班區 站型 休閒區 站型 分析
生活區
要區分生活區的邏輯 會是 平日 一到五 晚上(18:00-23:00) 淨出站 較高的就會是 生活區 站型
- sql
COPY(
WITH evening_flow AS (
SELECT
station,
SUM(exit_cnt) AS exit_cnt,
SUM(進站) AS entry_cnt
FROM (
SELECT
出站 AS station,
人次 AS exit_cnt,
0 AS 進站
FROM mrt
WHERE CAST(時段 AS INTEGER) BETWEEN 18 AND 23
AND strftime('%w', 日期) BETWEEN '1' AND '5'
UNION ALL
SELECT
進站 AS station,
0 AS exit_cnt,
人次 AS entry_cnt
FROM mrt
WHERE CAST(時段 AS INTEGER) BETWEEN 18 AND 23
AND strftime('%w', 日期) BETWEEN '1' AND '5'
)
GROUP BY station
)
SELECT
station,
exit_cnt,
entry_cnt,
exit_cnt - entry_cnt AS net_exit
FROM evening_flow
WHERE exit_cnt > entry_cnt
ORDER BY net_exit DESC
) TO "C://workspace/mrt_1.md" (FORMAT MARKDOWN);
- 分析
-
撈出的資料共 67 站 因為 在平日晚上的 淨出站 大於 淨入站 (exit_cnt > entry_cnt) 的前三站 是 頂溪 新埔 永安市場
-
但看到 淡水 感覺還是怪怪的 淡水,府中 為啥這麼多人晚上要搭捷運出城? 可能是 少考慮了 國定假日 為非平日的結構 比如過年春節 或是補放的連假
故要再把那些日期挑出來去除 -
O景安,G大坪林,O頭前庄 進站都是 0 可能需要再理解捷運架構
- result
| station | exit_cnt | entry_cnt | net_exit |
|---|---|---|---|
| 頂溪 | 42,856,649 | 13,648,339 | 29,208,310 |
| 新埔 | 44,968,226 | 17,414,574 | 27,553,652 |
| 永安市場 | 32,307,065 | 9,571,840 | 22,735,225 |
| 海山 | 29,009,974 | 6,639,639 | 22,370,335 |
| 南勢角 | 26,958,294 | 6,167,103 | 20,791,191 |
| 江子翠 | 31,674,338 | 11,920,528 | 19,753,810 |
| 府中 | 30,766,597 | 14,443,247 | 16,323,350 |
| 蘆洲 | 17,812,016 | 3,423,351 | 14,388,665 |
| 亞東醫院 | 23,905,781 | 9,706,690 | 14,199,091 |
| BL板橋 | 39,699,025 | 25,940,062 | 13,758,963 |
| 景安 | 22,013,606 | 9,214,290 | 12,799,316 |
| 三民高中 | 16,106,675 | 3,427,223 | 12,679,452 |
| 淡水 | 30,451,692 | 17,840,142 | 12,611,550 |
| 徐匯中學 | 16,547,309 | 3,989,076 | 12,558,233 |
| 三和國中 | 15,737,253 | 3,921,112 | 11,816,141 |
| 三重國小 | 15,279,897 | 4,104,998 | 11,174,899 |
| 新店區公所 | 14,448,091 | 4,698,118 | 9,749,973 |
| 北投 | 17,801,951 | 8,239,676 | 9,562,275 |
| 迴龍 | 12,836,253 | 3,349,382 | 9,486,871 |
| 丹鳳 | 12,009,717 | 2,898,204 | 9,111,513 |
| 紅樹林 | 13,043,593 | 4,225,325 | 8,818,268 |
| 新莊 | 13,309,892 | 4,582,114 | 8,727,778 |
| O景安 | 8,407,350 | 0 | 8,407,350 |
| 永寧 | 13,923,667 | 5,858,256 | 8,065,411 |
| 七張 | 16,422,982 | 8,689,477 | 7,733,505 |
| 萬芳醫院 | 13,515,854 | 6,004,288 | 7,511,566 |
| 龍山寺 | 23,068,845 | 15,748,533 | 7,320,312 |
| 菜寮 | 11,216,715 | 3,956,238 | 7,260,477 |
| 新店 | 11,664,686 | 4,700,105 | 6,964,581 |
| 東湖 | 10,023,217 | 3,166,202 | 6,857,015 |
| 台北橋 | 11,572,541 | 4,863,889 | 6,708,652 |
| 萬隆 | 10,911,857 | 4,332,082 | 6,579,775 |
| 景美 | 15,878,829 | 9,337,477 | 6,541,352 |
| 竹圍 | 10,077,209 | 3,941,622 | 6,135,587 |
| 土城 | 8,888,652 | 2,826,870 | 6,061,782 |
| 後山埤 | 15,805,812 | 9,844,778 | 5,961,034 |
| 內湖 | 10,385,008 | 4,480,451 | 5,904,557 |
| G大坪林 | 5,241,544 | 0 | 5,241,544 |
| 明德 | 10,638,765 | 5,731,285 | 4,907,480 |
| 葫洲 | 8,723,994 | 4,195,478 | 4,528,516 |
| 唭哩岸 | 7,656,157 | 3,190,625 | 4,465,532 |
| 石牌 | 22,567,927 | 18,491,014 | 4,076,913 |
| 三重 | 7,272,969 | 3,938,063 | 3,334,906 |
| 辛亥 | 4,049,274 | 965,064 | 3,084,210 |
| 頂埔 | 8,643,674 | 5,677,049 | 2,966,625 |
| 輔大 | 10,698,865 | 7,747,085 | 2,951,780 |
| 麟光 | 4,564,246 | 1,685,357 | 2,878,889 |
| 芝山 | 19,334,795 | 16,572,449 | 2,762,346 |
| 圓山 | 19,694,101 | 16,985,121 | 2,708,980 |
| 復興崗 | 3,939,606 | 1,522,752 | 2,416,854 |
| 木柵 | 4,146,798 | 1,748,876 | 2,397,922 |
| 大湖公園 | 3,547,597 | 1,208,875 | 2,338,722 |
| 永春 | 16,533,815 | 14,391,732 | 2,142,083 |
| 南港 | 16,876,007 | 14,752,083 | 2,123,924 |
| 文德 | 5,063,552 | 3,132,754 | 1,930,798 |
| 萬芳社區 | 2,677,038 | 789,014 | 1,888,024 |
| 小碧潭 | 3,229,178 | 1,644,584 | 1,584,594 |
| 六張犁 | 9,697,052 | 8,118,796 | 1,578,256 |
| O頭前庄 | 1,555,938 | 0 | 1,555,938 |
| 奇岩 | 7,007,441 | 5,917,866 | 1,089,575 |
| 秀朗橋 | 1,158,693 | 408,932 | 749,761 |
| 幸福 | 1,517,086 | 898,434 | 618,652 |
| 大直 | 7,203,244 | 6,670,852 | 532,392 |
| 景平 | 1,499,566 | 1,025,962 | 473,604 |
| 動物園 | 3,369,882 | 2,954,262 | 415,620 |
| 頭前庄 | 3,490,346 | 3,097,038 | 393,308 |
| 新埔民生 | 859,534 | 584,340 | 275,194 |
| 中和 | 1,626,576 | 1,525,823 | 100,753 |
| 板新 | 917,790 | 824,405 | 93,385 |
於是將 2017-2025 所有國定假日非平日的日期列出
SQL
COPY(
WITH evening_flow AS (
SELECT
station,
SUM(exit_cnt) AS exit_cnt,
SUM(entry_cnt) AS entry_cnt
FROM (
-- 出站人次
SELECT
出站 AS station,
人次 AS exit_cnt,
0 AS entry_cnt
FROM mrt
WHERE CAST(時段 AS INTEGER) BETWEEN 18 AND 23
AND CAST(strftime('%w', 日期) AS INTEGER) BETWEEN 1 AND 5
AND 日期 NOT IN (
-- 2017–2026 非週末國定假日
'2017-02-28','2017-04-03','2017-04-04','2017-05-01','2017-05-30','2017-10-04','2017-10-10',
'2018-01-01','2018-02-15','2018-02-16','2018-02-19','2018-02-20','2018-02-28','2018-03-02','2018-04-04','2018-04-05','2018-04-06','2018-05-01','2018-06-18','2018-09-24','2018-10-10','2018-10-17','2018-12-31',
'2019-01-01','2019-02-04','2019-02-05','2019-02-06','2019-02-07','2019-02-08','2019-02-19','2019-02-28','2019-03-01','2019-04-04','2019-04-05','2019-06-07','2019-09-13','2019-10-07','2019-10-10','2019-10-11',
'2020-01-01','2020-01-23','2020-01-24','2020-01-27','2020-01-28','2020-01-29','2020-02-28',
'2021-01-01','2021-02-10','2021-02-11','2021-02-12','2021-02-15','2021-02-16','2021-03-01','2021-04-02','2021-04-05',
'2022-02-01','2022-02-02','2022-02-03','2022-02-04','2022-02-28','2022-04-04','2022-04-05','2022-05-02','2022-06-03','2022-09-09','2022-10-10',
'2023-01-02','2023-01-20','2023-01-23','2023-01-24','2023-01-25','2023-01-26','2023-01-27','2023-02-27','2023-02-28','2023-04-04','2023-04-05','2023-05-01','2023-06-22','2023-06-23','2023-09-29','2023-10-09','2023-10-10',
'2024-01-01','2024-02-08','2024-02-09','2024-02-10','2024-02-11','2024-02-12','2024-02-28','2024-04-04','2024-04-05','2024-05-01','2024-06-10','2024-06-11','2024-09-17','2024-09-18','2024-10-10',
'2025-01-01','2025-01-27','2025-01-28','2025-01-29','2025-01-30','2025-01-31',
'2025-02-12','2025-02-28','2025-04-03','2025-04-04','2025-05-01','2025-05-30',
'2025-09-29','2025-10-06','2025-10-10','2025-10-24','2025-12-25',
'2026-01-01'
)
UNION ALL
-- 進站人次
SELECT
進站 AS station,
0 AS exit_cnt,
人次 AS entry_cnt
FROM mrt
WHERE CAST(時段 AS INTEGER) BETWEEN 18 AND 23
AND CAST(strftime('%w', 日期) AS INTEGER) BETWEEN 1 AND 5
AND 日期 NOT IN (
'2017-02-28','2017-04-03','2017-04-04','2017-05-01','2017-05-30','2017-10-04','2017-10-10',
'2018-01-01','2018-02-15','2018-02-16','2018-02-19','2018-02-20','2018-02-28','2018-03-02','2018-04-04','2018-04-05','2018-04-06','2018-05-01','2018-06-18','2018-09-24','2018-10-10','2018-10-17','2018-12-31',
'2019-01-01','2019-02-04','2019-02-05','2019-02-06','2019-02-07','2019-02-08','2019-02-19','2019-02-28','2019-03-01','2019-04-04','2019-04-05','2019-06-07','2019-09-13','2019-10-07','2019-10-10','2019-10-11',
'2020-01-01','2020-01-23','2020-01-24','2020-01-27','2020-01-28','2020-01-29','2020-02-28',
'2021-01-01','2021-02-10','2021-02-11','2021-02-12','2021-02-15','2021-02-16','2021-03-01','2021-04-02','2021-04-05',
'2022-02-01','2022-02-02','2022-02-03','2022-02-04','2022-02-28','2022-04-04','2022-04-05','2022-05-02','2022-06-03','2022-09-09','2022-10-10',
'2023-01-02','2023-01-20','2023-01-23','2023-01-24','2023-01-25','2023-01-26','2023-01-27','2023-02-27','2023-02-28','2023-04-04','2023-04-05','2023-05-01','2023-06-22','2023-06-23','2023-09-29','2023-10-09','2023-10-10',
'2024-01-01','2024-02-08','2024-02-09','2024-02-10','2024-02-11','2024-02-12','2024-02-28','2024-04-04','2024-04-05','2024-05-01','2024-06-10','2024-06-11','2024-09-17','2024-09-18','2024-10-10',
'2025-01-01','2025-01-27','2025-01-28','2025-01-29','2025-01-30','2025-01-31',
'2025-02-12','2025-02-28','2025-04-03','2025-04-04','2025-05-01','2025-05-30',
'2025-09-29','2025-10-06','2025-10-10','2025-10-24','2025-12-25',
'2026-01-01'
)
)
GROUP BY station
)
COPY(
SELECT
station,
exit_cnt,
entry_cnt,
exit_cnt - entry_cnt AS net_exit
FROM evening_flow
WHERE exit_cnt > entry_cnt
ORDER BY net_exit DESC
) TO "C://workspace/mrt_2.md" (FORMAT MARKDOWN);
結果
- 挑完國定假日後 淡水的進站 還是這麼多 可能大家都愛去淡水玩吧 然後要回家吧
- 有可能因為那邊有學校 人比較多 像是 淡江大學 聖約翰大學 真理大學 學生上完課要回家 才會這麼多人進站
- 在淡水上班的人口 要回其他新北市之類
| station | exit_cnt | entry_cnt | net_exit |
|---|---|---|---|
| 頂溪 | 41,649,605 | 13,096,778 | 28,552,827 |
| 新埔 | 43,826,952 | 16,863,737 | 26,963,215 |
| 永安市場 | 31,456,370 | 9,225,354 | 22,231,016 |
| 海山 | 28,228,375 | 6,380,084 | 21,848,291 |
| 南勢角 | 26,179,750 | 5,882,675 | 20,297,075 |
| 江子翠 | 30,845,400 | 11,544,584 | 19,300,816 |
| 府中 | 29,907,253 | 13,843,090 | 16,064,163 |
| 蘆洲 | 17,370,759 | 3,266,779 | 14,103,980 |
| 亞東醫院 | 23,323,464 | 9,441,529 | 13,881,935 |
| BL板橋 | 38,524,453 | 24,805,124 | 13,719,329 |
| 淡水 | 29,500,511 | 16,243,202 | 13,257,309 |
| 景安 | 21,453,721 | 8,900,116 | 12,553,605 |
| 三民高中 | 15,682,866 | 3,278,542 | 12,404,324 |
| 徐匯中學 | 16,111,734 | 3,815,121 | 12,296,613 |
| 三和國中 | 15,309,401 | 3,766,898 | 11,542,503 |
| 三重國小 | 14,837,218 | 3,921,797 | 10,915,421 |
| 新店區公所 | 14,033,452 | 4,536,427 | 9,497,025 |
| 北投 | 17,274,309 | 7,925,608 | 9,348,701 |
| 迴龍 | 12,493,360 | 3,224,214 | 9,269,146 |
| 丹鳳 | 11,689,553 | 2,783,287 | 8,906,266 |
| 紅樹林 | 12,642,745 | 3,999,090 | 8,643,655 |
| 新莊 | 12,982,913 | 4,403,722 | 8,579,191 |
| O景安 | 8,171,055 | 0 | 8,171,055 |
| 永寧 | 13,529,678 | 5,655,339 | 7,874,339 |
| 七張 | 15,931,825 | 8,431,732 | 7,500,093 |
| 萬芳醫院 | 13,179,578 | 5,854,302 | 7,325,276 |
| 龍山寺 | 22,247,927 | 14,988,402 | 7,259,525 |
| 菜寮 | 10,923,265 | 3,820,115 | 7,103,150 |
| 新店 | 11,289,255 | 4,372,071 | 6,917,184 |
| 東湖 | 9,760,623 | 3,045,035 | 6,715,588 |
| 台北橋 | 11,189,041 | 4,618,235 | 6,570,806 |
| 萬隆 | 10,580,340 | 4,175,580 | 6,404,760 |
| 景美 | 15,377,689 | 9,030,641 | 6,347,048 |
| 竹圍 | 9,776,308 | 3,780,655 | 5,995,653 |
| 土城 | 8,642,121 | 2,723,791 | 5,918,330 |
| 內湖 | 10,093,012 | 4,314,208 | 5,778,804 |
| 後山埤 | 15,309,248 | 9,548,681 | 5,760,567 |
| G大坪林 | 5,076,857 | 0 | 5,076,857 |
| 明德 | 10,345,457 | 5,562,349 | 4,783,108 |
| 葫洲 | 8,500,445 | 4,090,481 | 4,409,964 |
| 唭哩岸 | 7,424,943 | 3,081,647 | 4,343,296 |
| 石牌 | 21,883,263 | 17,976,487 | 3,906,776 |
| 三重 | 7,055,790 | 3,737,300 | 3,318,490 |
| 辛亥 | 3,949,927 | 926,472 | 3,023,455 |
| 輔大 | 10,407,140 | 7,591,035 | 2,816,105 |
| 頂埔 | 8,370,232 | 5,559,756 | 2,810,476 |
| 麟光 | 4,426,559 | 1,621,366 | 2,805,193 |
| 芝山 | 18,765,388 | 16,020,381 | 2,745,007 |
| 圓山 | 19,074,983 | 16,390,386 | 2,684,597 |
| 復興崗 | 3,824,135 | 1,467,560 | 2,356,575 |
| 木柵 | 4,038,087 | 1,684,147 | 2,353,940 |
| 大湖公園 | 3,454,292 | 1,144,958 | 2,309,334 |
| 南港 | 16,382,022 | 14,203,476 | 2,178,546 |
| 永春 | 16,047,721 | 14,039,335 | 2,008,386 |
| 文德 | 4,916,806 | 3,052,538 | 1,864,268 |
| 萬芳社區 | 2,609,431 | 757,141 | 1,852,290 |
| 小碧潭 | 3,132,386 | 1,555,892 | 1,576,494 |
| O頭前庄 | 1,515,972 | 0 | 1,515,972 |
| 六張犁 | 9,427,584 | 7,938,617 | 1,488,967 |
| 奇岩 | 6,811,143 | 5,781,502 | 1,029,641 |
| 秀朗橋 | 1,127,898 | 391,678 | 736,220 |
| 幸福 | 1,478,334 | 866,602 | 611,732 |
| 動物園 | 3,277,430 | 2,686,120 | 591,310 |
| 大直 | 7,007,887 | 6,518,205 | 489,682 |
| 景平 | 1,460,389 | 1,000,346 | 460,043 |
| 頭前庄 | 3,400,987 | 2,998,588 | 402,399 |
| 新埔民生 | 841,472 | 566,175 | 275,297 |
| 中和 | 1,579,555 | 1,481,510 | 98,045 |
| 板新 | 899,071 | 807,459 | 91,612 |
再觀察 哪一些站點是 公司區站點 抓 平日下班時間 淨進站 最多的站點
COPY(
WITH evening_flow AS (
SELECT
station,
SUM(exit_cnt) AS exit_cnt,
SUM(entry_cnt) AS entry_cnt
FROM (
-- 出站人次
SELECT
出站 AS station,
人次 AS exit_cnt,
0 AS entry_cnt
FROM mrt
WHERE CAST(時段 AS INTEGER) BETWEEN 18 AND 23
AND CAST(strftime('%w', 日期) AS INTEGER) BETWEEN 1 AND 5
AND 日期 NOT IN (
-- 2017–2026 非週末國定假日
'2017-02-28','2017-04-03','2017-04-04','2017-05-01','2017-05-30','2017-10-04','2017-10-10',
'2018-01-01','2018-02-15','2018-02-16','2018-02-19','2018-02-20','2018-02-28','2018-03-02','2018-04-04','2018-04-05','2018-04-06','2018-05-01','2018-06-18','2018-09-24','2018-10-10','2018-10-17','2018-12-31',
'2019-01-01','2019-02-04','2019-02-05','2019-02-06','2019-02-07','2019-02-08','2019-02-19','2019-02-28','2019-03-01','2019-04-04','2019-04-05','2019-06-07','2019-09-13','2019-10-07','2019-10-10','2019-10-11',
'2020-01-01','2020-01-23','2020-01-24','2020-01-27','2020-01-28','2020-01-29','2020-02-28',
'2021-01-01','2021-02-10','2021-02-11','2021-02-12','2021-02-15','2021-02-16','2021-03-01','2021-04-02','2021-04-05',
'2022-02-01','2022-02-02','2022-02-03','2022-02-04','2022-02-28','2022-04-04','2022-04-05','2022-05-02','2022-06-03','2022-09-09','2022-10-10',
'2023-01-02','2023-01-20','2023-01-23','2023-01-24','2023-01-25','2023-01-26','2023-01-27','2023-02-27','2023-02-28','2023-04-04','2023-04-05','2023-05-01','2023-06-22','2023-06-23','2023-09-29','2023-10-09','2023-10-10',
'2024-01-01','2024-02-08','2024-02-09','2024-02-10','2024-02-11','2024-02-12','2024-02-28','2024-04-04','2024-04-05','2024-05-01','2024-06-10','2024-06-11','2024-09-17','2024-09-18','2024-10-10',
'2025-01-01','2025-01-27','2025-01-28','2025-01-29','2025-01-30','2025-01-31',
'2025-02-12','2025-02-28','2025-04-03','2025-04-04','2025-05-01','2025-05-30',
'2025-09-29','2025-10-06','2025-10-10','2025-10-24','2025-12-25',
'2026-01-01'
)
UNION ALL
-- 進站人次
SELECT
進站 AS station,
0 AS exit_cnt,
人次 AS entry_cnt
FROM mrt
WHERE CAST(時段 AS INTEGER) BETWEEN 18 AND 23
AND CAST(strftime('%w', 日期) AS INTEGER) BETWEEN 1 AND 5
AND 日期 NOT IN (
'2017-02-28','2017-04-03','2017-04-04','2017-05-01','2017-05-30','2017-10-04','2017-10-10',
'2018-01-01','2018-02-15','2018-02-16','2018-02-19','2018-02-20','2018-02-28','2018-03-02','2018-04-04','2018-04-05','2018-04-06','2018-05-01','2018-06-18','2018-09-24','2018-10-10','2018-10-17','2018-12-31',
'2019-01-01','2019-02-04','2019-02-05','2019-02-06','2019-02-07','2019-02-08','2019-02-19','2019-02-28','2019-03-01','2019-04-04','2019-04-05','2019-06-07','2019-09-13','2019-10-07','2019-10-10','2019-10-11',
'2020-01-01','2020-01-23','2020-01-24','2020-01-27','2020-01-28','2020-01-29','2020-02-28',
'2021-01-01','2021-02-10','2021-02-11','2021-02-12','2021-02-15','2021-02-16','2021-03-01','2021-04-02','2021-04-05',
'2022-02-01','2022-02-02','2022-02-03','2022-02-04','2022-02-28','2022-04-04','2022-04-05','2022-05-02','2022-06-03','2022-09-09','2022-10-10',
'2023-01-02','2023-01-20','2023-01-23','2023-01-24','2023-01-25','2023-01-26','2023-01-27','2023-02-27','2023-02-28','2023-04-04','2023-04-05','2023-05-01','2023-06-22','2023-06-23','2023-09-29','2023-10-09','2023-10-10',
'2024-01-01','2024-02-08','2024-02-09','2024-02-10','2024-02-11','2024-02-12','2024-02-28','2024-04-04','2024-04-05','2024-05-01','2024-06-10','2024-06-11','2024-09-17','2024-09-18','2024-10-10',
'2025-01-01','2025-01-27','2025-01-28','2025-01-29','2025-01-30','2025-01-31',
'2025-02-12','2025-02-28','2025-04-03','2025-04-04','2025-05-01','2025-05-30',
'2025-09-29','2025-10-06','2025-10-10','2025-10-24','2025-12-25',
'2026-01-01'
)
)
GROUP BY station
)
COPY(
SELECT
station,
exit_cnt,
entry_cnt,
entry_cnt - exit_cnt AS net_entry
FROM evening_flow
WHERE exit_cnt < entry_cnt
ORDER BY net_entry DESC
) TO "C://workspace/mrt_3.md" (FORMAT MARKDOWN);
- 最多人下班的地方是 市政府, 松江南京,南京復興
- 預料之外的事 台北車站竟然會是 第八名 但這樣應該得到的概念 是因為北車只是中轉站
| station | exit_cnt | entry_cnt | net_entry |
|---|---|---|---|
| 市政府 | 31,339,035 | 69,367,656 | 38,028,621 |
| 松江南京 | 14,300,207 | 46,915,745 | 32,615,538 |
| 南京復興 | 18,788,903 | 49,291,463 | 30,502,560 |
| 忠孝復興 | 25,251,216 | 49,181,315 | 23,930,099 |
| 台北101/世貿 | 12,097,937 | 35,998,145 | 23,900,208 |
| 忠孝敦化 | 18,927,532 | 41,501,156 | 22,573,624 |
| 中山 | 25,682,316 | 47,255,745 | 21,573,429 |
| 台北車站 | 89,827,916 | 110,537,527 | 20,709,611 |
| 忠孝新生 | 15,790,101 | 33,677,239 | 17,887,138 |
| 台北小巨蛋 | 9,381,757 | 26,644,584 | 17,262,827 |
| 行天宮 | 12,670,444 | 29,613,991 | 16,943,547 |
| 西湖 | 5,589,896 | 22,377,877 | 16,787,981 |
| 台大醫院 | 4,677,092 | 19,032,265 | 14,355,173 |
| 港墘 | 7,896,234 | 21,247,052 | 13,350,818 |
| 善導寺 | 8,801,117 | 21,836,675 | 13,035,558 |
| 大安 | 12,141,107 | 24,531,533 | 12,390,426 |
| 國父紀念館 | 11,748,646 | 24,034,595 | 12,285,949 |
| 南京三民 | 13,131,732 | 24,055,786 | 10,924,054 |
| 民權西路 | 12,119,873 | 22,697,825 | 10,577,952 |
| 中正紀念堂 | 11,959,220 | 22,155,914 | 10,196,694 |
| 信義安和 | 11,325,503 | 19,982,279 | 8,656,776 |
| 公館 | 16,588,105 | 24,611,153 | 8,023,048 |
| 西門 | 47,784,449 | 55,758,063 | 7,973,614 |
| 象山 | 6,401,518 | 13,966,730 | 7,565,212 |
| 雙連 | 10,998,154 | 18,235,491 | 7,237,337 |
| 東門 | 14,533,863 | 21,414,928 | 6,881,065 |
| 南港軟體園區 | 2,129,011 | 8,789,967 | 6,660,956 |
| 古亭 | 21,723,744 | 27,586,566 | 5,862,822 |
| 劍南路 | 6,839,069 | 11,324,888 | 4,485,819 |
| 松山 | 19,460,359 | 23,760,516 | 4,300,157 |
| 小南門 | 3,790,519 | 7,960,544 | 4,170,025 |
| 大坪林 | 12,659,437 | 16,612,618 | 3,953,181 |
| 中山國小 | 12,264,867 | 15,915,233 | 3,650,366 |
| 中山國中 | 9,885,913 | 13,234,459 | 3,348,546 |
| 北門 | 7,590,637 | 10,618,593 | 3,027,956 |
| 昆陽 | 9,772,394 | 12,680,496 | 2,908,102 |
| 科技大樓 | 9,472,835 | 12,337,316 | 2,864,481 |
| 先嗇宮 | 2,491,693 | 5,281,920 | 2,790,227 |
| 南港展覽館 | 21,600,763 | 24,376,991 | 2,776,228 |
| 大安森林公園 | 4,507,379 | 6,627,110 | 2,119,731 |
| 關渡 | 7,997,744 | 9,792,466 | 1,794,722 |
| 松山機場 | 2,255,572 | 3,859,847 | 1,604,275 |
| 士林 | 18,284,302 | 19,842,673 | 1,558,371 |
| 中原 | 440,101 | 1,941,382 | 1,501,281 |
| 新北產業園區 | 808,677 | 2,264,732 | 1,456,055 |
| 大橋頭站 | 8,381,732 | 9,647,775 | 1,266,043 |
| 橋和 | 235,073 | 1,474,669 | 1,239,596 |
| Y板橋 | 1,980,908 | 2,970,634 | 989,726 |
| 劍潭 | 22,942,500 | 23,638,318 | 695,818 |
| 忠義 | 1,754,710 | 2,421,366 | 666,656 |
| 台電大樓 | 13,089,136 | 13,565,324 | 476,188 |
| 十四張 | 376,255 | 648,444 | 272,189 |
| 新北投 | 3,177,911 | 3,402,196 | 224,285 |
把時間抽 成 平日上班時間 05-11 點 勞工都從哪裡來?
WITH evening_flow AS (
SELECT
station,
SUM(exit_cnt) AS exit_cnt,
SUM(entry_cnt) AS entry_cnt
FROM (
-- 出站人次
SELECT
出站 AS station,
人次 AS exit_cnt,
0 AS entry_cnt
FROM mrt
WHERE CAST(時段 AS INTEGER) BETWEEN 05 AND 11
AND CAST(strftime('%w', 日期) AS INTEGER) BETWEEN 1 AND 5
UNION ALL
-- 進站人次
SELECT
進站 AS station,
0 AS exit_cnt,
人次 AS entry_cnt
FROM mrt
WHERE CAST(時段 AS INTEGER) BETWEEN 05 AND 11
AND CAST(strftime('%w', 日期) AS INTEGER) BETWEEN 1 AND 5
)
GROUP BY station
)
COPY(
SELECT
station,
exit_cnt,
entry_cnt,
entry_cnt - exit_cnt AS net_entry
FROM evening_flow
WHERE exit_cnt < entry_cnt
ORDER BY net_entry DESC
) TO "C://workspace/mrt_4.md" (FORMAT MARKDOWN);
- 可以觀察到 勞工都從 新埔 , 頂溪, 景安 ,永安市場,南勢角來 跟一開始的 下班族 都差不多
| station | exit_cnt | entry_cnt | net_entry |
|---|---|---|---|
| 新埔 | 11,801,519 | 38,228,484 | 26,426,965 |
| 頂溪 | 9,065,835 | 34,133,894 | 25,068,059 |
| 景安 | 4,065,097 | 26,332,201 | 22,267,104 |
| 永安市場 | 6,023,564 | 26,249,360 | 20,225,796 |
| 南勢角 | 3,789,168 | 23,805,403 | 20,016,235 |
| 府中 | 7,106,900 | 26,553,302 | 19,446,402 |
| 海山 | 5,481,007 | 23,856,429 | 18,375,422 |
| 江子翠 | 7,747,715 | 25,648,501 | 17,900,786 |
| 淡水 | 11,224,987 | 27,436,804 | 16,211,817 |
| 蘆洲 | 2,133,359 | 17,870,860 | 15,737,501 |
| 亞東醫院 | 10,100,071 | 24,282,916 | 14,182,845 |
| 三和國中 | 2,551,576 | 14,384,309 | 11,832,733 |
| 三民高中 | 2,670,831 | 13,621,541 | 10,950,710 |
| 徐匯中學 | 2,384,775 | 13,147,656 | 10,762,881 |
| 三重國小 | 2,289,027 | 12,853,667 | 10,564,640 |
| 丹鳳 | 1,939,518 | 11,028,720 | 9,089,202 |
| 迴龍 | 3,114,204 | 12,047,919 | 8,933,715 |
| BL板橋 | 17,495,110 | 26,248,779 | 8,753,669 |
| 龍山寺 | 11,172,627 | 19,270,732 | 8,098,105 |
| 新店 | 4,012,243 | 11,973,414 | 7,961,171 |
| 新莊 | 3,235,373 | 10,930,537 | 7,695,164 |
| 新店區公所 | 4,017,591 | 11,389,679 | 7,372,088 |
| 菜寮 | 3,509,509 | 10,200,351 | 6,690,842 |
| 萬隆 | 2,830,569 | 9,450,969 | 6,620,400 |
| 永寧 | 5,471,284 | 11,988,028 | 6,516,744 |
| 北投 | 8,358,632 | 14,772,602 | 6,413,970 |
| 台北橋 | 2,414,561 | 8,819,631 | 6,405,070 |
| 紅樹林 | 3,889,993 | 10,168,506 | 6,278,513 |
| 七張 | 6,785,875 | 13,030,074 | 6,244,199 |
| 大坪林 | 8,353,587 | 14,313,893 | 5,960,306 |
| 內湖 | 2,663,716 | 8,419,627 | 5,755,911 |
| 土城 | 2,553,254 | 8,110,818 | 5,557,564 |
| 東湖 | 2,865,825 | 8,306,198 | 5,440,373 |
| 後山埤 | 6,924,605 | 12,275,417 | 5,350,812 |
| 唭哩岸 | 2,282,413 | 7,130,667 | 4,848,254 |
| 竹圍 | 3,393,124 | 8,021,558 | 4,628,434 |
| 景美 | 7,213,552 | 11,813,777 | 4,600,225 |
| 萬芳醫院 | 6,409,511 | 10,671,747 | 4,262,236 |
| 葫洲 | 3,659,340 | 7,265,471 | 3,606,131 |
| 三重 | 2,872,741 | 6,389,864 | 3,517,123 |
| 頭前庄 | 1,366,311 | 4,848,615 | 3,482,304 |
| 頂埔 | 5,012,690 | 8,251,136 | 3,238,446 |
| 辛亥 | 717,641 | 3,796,615 | 3,078,974 |
| 麟光 | 1,195,977 | 4,242,327 | 3,046,350 |
| 明德 | 6,993,565 | 10,008,377 | 3,014,812 |
| 芝山 | 12,373,717 | 15,030,182 | 2,656,465 |
| 萬芳社區 | 532,477 | 2,962,456 | 2,429,979 |
| 大湖公園 | 973,163 | 3,324,418 | 2,351,255 |
| 奇岩 | 5,077,494 | 7,370,510 | 2,293,016 |
| 復興崗 | 1,437,279 | 3,566,600 | 2,129,321 |
| 南港 | 11,062,639 | 12,954,141 | 1,891,502 |
| 六張犁 | 6,554,480 | 8,091,067 | 1,536,587 |
| 圓山 | 15,403,577 | 16,773,501 | 1,369,924 |
| 幸福 | 250,647 | 1,457,244 | 1,206,597 |
| 文德 | 3,059,266 | 4,182,807 | 1,123,541 |
| 小碧潭 | 1,037,302 | 2,154,790 | 1,117,488 |
| 中和 | 405,101 | 1,430,644 | 1,025,543 |
| 秀朗橋 | 91,770 | 1,079,453 | 987,683 |
| 木柵 | 2,459,377 | 3,382,742 | 923,365 |
| 景平 | 342,008 | 1,234,239 | 892,231 |
| 十四張 | 279,580 | 890,615 | 611,035 |
| 板新 | 325,208 | 776,522 | 451,314 |
| 大橋頭站 | 7,765,832 | 8,153,666 | 387,834 |
| 新埔民生 | 166,117 | 513,530 | 347,413 |
| 永春 | 11,802,441 | 12,128,403 | 325,962 |
| Y板橋 | 975,476 | 1,260,460 | 284,984 |
| 松山 | 14,542,542 | 14,809,327 | 266,785 |
| 淡水 | 11,224,987 | 27,436,804 | 16,211,817 |
| 蘆洲 | 2,133,359 | 17,870,860 | 15,737,501 |
| 亞東醫院 | 10,100,071 | 24,282,916 | 14,182,845 |
| 三和國中 | 2,551,576 | 14,384,309 | 11,832,733 |
| 三民高中 | 2,670,831 | 13,621,541 | 10,950,710 |
| 徐匯中學 | 2,384,775 | 13,147,656 | 10,762,881 |
| 三重國小 | 2,289,027 | 12,853,667 | 10,564,640 |
| 丹鳳 | 1,939,518 | 11,028,720 | 9,089,202 |
| 迴龍 | 3,114,204 | 12,047,919 | 8,933,715 |
| BL板橋 | 17,495,110 | 26,248,779 | 8,753,669 |
| 龍山寺 | 11,172,627 | 19,270,732 | 8,098,105 |
| 新店 | 4,012,243 | 11,973,414 | 7,961,171 |
| 新莊 | 3,235,373 | 10,930,537 | 7,695,164 |
| 新店區公所 | 4,017,591 | 11,389,679 | 7,372,088 |
| 菜寮 | 3,509,509 | 10,200,351 | 6,690,842 |
| 萬隆 | 2,830,569 | 9,450,969 | 6,620,400 |
| 永寧 | 5,471,284 | 11,988,028 | 6,516,744 |
| 北投 | 8,358,632 | 14,772,602 | 6,413,970 |
| 台北橋 | 2,414,561 | 8,819,631 | 6,405,070 |
| 紅樹林 | 3,889,993 | 10,168,506 | 6,278,513 |
| 七張 | 6,785,875 | 13,030,074 | 6,244,199 |
| 大坪林 | 8,353,587 | 14,313,893 | 5,960,306 |
| 內湖 | 2,663,716 | 8,419,627 | 5,755,911 |
| 土城 | 2,553,254 | 8,110,818 | 5,557,564 |
| 東湖 | 2,865,825 | 8,306,198 | 5,440,373 |
| 後山埤 | 6,924,605 | 12,275,417 | 5,350,812 |
| 唭哩岸 | 2,282,413 | 7,130,667 | 4,848,254 |
| 竹圍 | 3,393,124 | 8,021,558 | 4,628,434 |
| 景美 | 7,213,552 | 11,813,777 | 4,600,225 |
| 萬芳醫院 | 6,409,511 | 10,671,747 | 4,262,236 |
| 葫洲 | 3,659,340 | 7,265,471 | 3,606,131 |
| 三重 | 2,872,741 | 6,389,864 | 3,517,123 |
| 頭前庄 | 1,366,311 | 4,848,615 | 3,482,304 |
| 頂埔 | 5,012,690 | 8,251,136 | 3,238,446 |
| 辛亥 | 717,641 | 3,796,615 | 3,078,974 |
| 麟光 | 1,195,977 | 4,242,327 | 3,046,350 |
| 明德 | 6,993,565 | 10,008,377 | 3,014,812 |
| 芝山 | 12,373,717 | 15,030,182 | 2,656,465 |
| 萬芳社區 | 532,477 | 2,962,456 | 2,429,979 |
| 大湖公園 | 973,163 | 3,324,418 | 2,351,255 |
| 奇岩 | 5,077,494 | 7,370,510 | 2,293,016 |
| 復興崗 | 1,437,279 | 3,566,600 | 2,129,321 |
| 南港 | 11,062,639 | 12,954,141 | 1,891,502 |
| 六張犁 | 6,554,480 | 8,091,067 | 1,536,587 |
| 圓山 | 15,403,577 | 16,773,501 | 1,369,924 |
| 幸福 | 250,647 | 1,457,244 | 1,206,597 |
| 文德 | 3,059,266 | 4,182,807 | 1,123,541 |
| 小碧潭 | 1,037,302 | 2,154,790 | 1,117,488 |
| 中和 | 405,101 | 1,430,644 | 1,025,543 |
| 秀朗橋 | 91,770 | 1,079,453 | 987,683 |
| 木柵 | 2,459,377 | 3,382,742 | 923,365 |
| 景平 | 342,008 | 1,234,239 | 892,231 |
| 十四張 | 279,580 | 890,615 | 611,035 |
| 板新 | 325,208 | 776,522 | 451,314 |
| 大橋頭站 | 7,765,832 | 8,153,666 | 387,834 |
| 新埔民生 | 166,117 | 513,530 | 347,413 |
| 永春 | 11,802,441 | 12,128,403 | 325,962 |
| Y板橋 | 975,476 | 1,260,460 | 284,984 |
| 松山 | 14,542,542 | 14,809,327 | 266,785 |
分析 2025/12/09 某一天的 下班時間的 淨入站
COPY(
WITH evening_flow AS (
SELECT
station,
SUM(exit_cnt) AS exit_cnt,
SUM(entry_cnt) AS entry_cnt
FROM (
-- 出站人次
SELECT
出站 AS station,
人次 AS exit_cnt,
0 AS entry_cnt
FROM mrt
WHERE CAST(時段 AS INTEGER) BETWEEN 18 AND 23
AND CAST(strftime('%w', 日期) AS INTEGER) BETWEEN 1 AND 5
AND 日期 IN (
'2025-12-09'
)
UNION ALL
-- 進站人次
SELECT
進站 AS station,
0 AS exit_cnt,
人次 AS entry_cnt
FROM mrt
WHERE CAST(時段 AS INTEGER) BETWEEN 18 AND 23
AND CAST(strftime('%w', 日期) AS INTEGER) BETWEEN 1 AND 5
AND 日期 IN (
'2025-12-09'
)
)
GROUP BY station
)
SELECT
station,
exit_cnt,
entry_cnt,
entry_cnt - exit_cnt AS net_entry
FROM evening_flow
WHERE exit_cnt < entry_cnt
ORDER BY net_entry DESC
) TO "C://workspace/mrt_4.md" (FORMAT MARKDOWN);
| station | exit_cnt | entry_cnt | net_entry |
|---|---|---|---|
| 市政府 | 31,339,035 | 69,367,656 | 38,028,621 |
| 松江南京 | 14,300,207 | 46,915,745 | 32,615,538 |
| 南京復興 | 18,788,903 | 49,291,463 | 30,502,560 |
| 忠孝復興 | 25,251,216 | 49,181,315 | 23,930,099 |
| 台北101/世貿 | 12,097,937 | 35,998,145 | 23,900,208 |
| 忠孝敦化 | 18,927,532 | 41,501,156 | 22,573,624 |
| 中山 | 25,682,316 | 47,255,745 | 21,573,429 |
| 台北車站 | 89,827,916 | 110,537,527 | 20,709,611 |
| 忠孝新生 | 15,790,101 | 33,677,239 | 17,887,138 |
| 台北小巨蛋 | 9,381,757 | 26,644,584 | 17,262,827 |
| 行天宮 | 12,670,444 | 29,613,991 | 16,943,547 |
| 西湖 | 5,589,896 | 22,377,877 | 16,787,981 |
| 台大醫院 | 4,677,092 | 19,032,265 | 14,355,173 |
| 港墘 | 7,896,234 | 21,247,052 | 13,350,818 |
| 善導寺 | 8,801,117 | 21,836,675 | 13,035,558 |
| 大安 | 12,141,107 | 24,531,533 | 12,390,426 |
| 國父紀念館 | 11,748,646 | 24,034,595 | 12,285,949 |
| 南京三民 | 13,131,732 | 24,055,786 | 10,924,054 |
| 民權西路 | 12,119,873 | 22,697,825 | 10,577,952 |
| 中正紀念堂 | 11,959,220 | 22,155,914 | 10,196,694 |
| 信義安和 | 11,325,503 | 19,982,279 | 8,656,776 |
| 公館 | 16,588,105 | 24,611,153 | 8,023,048 |
| 西門 | 47,784,449 | 55,758,063 | 7,973,614 |
| 象山 | 6,401,518 | 13,966,730 | 7,565,212 |
| 雙連 | 10,998,154 | 18,235,491 | 7,237,337 |
| 東門 | 14,533,863 | 21,414,928 | 6,881,065 |
| 南港軟體園區 | 2,129,011 | 8,789,967 | 6,660,956 |
| 古亭 | 21,723,744 | 27,586,566 | 5,862,822 |
| 劍南路 | 6,839,069 | 11,324,888 | 4,485,819 |
| 松山 | 19,460,359 | 23,760,516 | 4,300,157 |
| 小南門 | 3,790,519 | 7,960,544 | 4,170,025 |
| 大坪林 | 12,659,437 | 16,612,618 | 3,953,181 |
| 中山國小 | 12,264,867 | 15,915,233 | 3,650,366 |
| 中山國中 | 9,885,913 | 13,234,459 | 3,348,546 |
| 北門 | 7,590,637 | 10,618,593 | 3,027,956 |
| 昆陽 | 9,772,394 | 12,680,496 | 2,908,102 |
| 科技大樓 | 9,472,835 | 12,337,316 | 2,864,481 |
| 先嗇宮 | 2,491,693 | 5,281,920 | 2,790,227 |
| 南港展覽館 | 21,600,763 | 24,376,991 | 2,776,228 |
| 大安森林公園 | 4,507,379 | 6,627,110 | 2,119,731 |
| 關渡 | 7,997,744 | 9,792,466 | 1,794,722 |
| 松山機場 | 2,255,572 | 3,859,847 | 1,604,275 |
| 士林 | 18,284,302 | 19,842,673 | 1,558,371 |
| 中原 | 440,101 | 1,941,382 | 1,501,281 |
| 新北產業園區 | 808,677 | 2,264,732 | 1,456,055 |
| 大橋頭站 | 8,381,732 | 9,647,775 | 1,266,043 |
| 橋和 | 235,073 | 1,474,669 | 1,239,596 |
| Y板橋 | 1,980,908 | 2,970,634 | 989,726 |
| 劍潭 | 22,942,500 | 23,638,318 | 695,818 |
| 忠義 | 1,754,710 | 2,421,366 | 666,656 |
| 台電大樓 | 13,089,136 | 13,565,324 | 476,188 |
| 十四張 | 376,255 | 648,444 | 272,189 |
| 新北投 | 3,177,911 | 3,402,196 | 224,285 |
分析 2025/12/09 某一天的 下班時間的 淨出站
COPY(
WITH create table evening_flows AS (
SELECT
station,
SUM(exit_cnt) AS exit_cnt,
SUM(entry_cnt) AS entry_cnt
FROM (
-- 出站人次
SELECT
出站 AS station,
人次 AS exit_cnt,
0 AS entry_cnt
FROM mrt
WHERE CAST(時段 AS INTEGER) BETWEEN 18 AND 23
AND CAST(strftime('%w', 日期) AS INTEGER) BETWEEN 1 AND 5
AND 日期 IN (
'2025-12-09'
)
UNION ALL
-- 進站人次
SELECT
進站 AS station,
0 AS exit_cnt,
人次 AS entry_cnt
FROM mrt
WHERE CAST(時段 AS INTEGER) BETWEEN 18 AND 23
AND CAST(strftime('%w', 日期) AS INTEGER) BETWEEN 1 AND 5
AND 日期 IN (
'2025-12-09'
)
)
GROUP BY station
)
COPY(
SELECT
station,
exit_cnt,
entry_cnt,
exit_cnt - entry_cnt AS net_exit
FROM evening_flows
WHERE exit_cnt > entry_cnt
ORDER BY net_exit DESC
) TO "C://workspace/mrt_5.md" (FORMAT MARKDOWN);
| station | exit_cnt | entry_cnt | net_exit |
|---|---|---|---|
| 頂溪 | 19,470 | 5,407 | 14,063 |
| 新埔 | 21,123 | 7,488 | 13,635 |
| O景安 | 13,032 | 0 | 13,032 |
| 海山 | 15,028 | 3,010 | 12,018 |
| 江子翠 | 16,438 | 5,511 | 10,927 |
| 永安市場 | 14,724 | 3,873 | 10,851 |
| 南勢角 | 13,026 | 2,249 | 10,777 |
| G大坪林 | 8,001 | 0 | 8,001 |
| 蘆洲 | 9,254 | 1,288 | 7,966 |
| 府中 | 14,171 | 6,440 | 7,731 |
| 淡水 | 13,076 | 5,638 | 7,438 |
| 紅樹林 | 9,193 | 1,975 | 7,218 |
| BL板橋 | 18,954 | 12,142 | 6,812 |
| 亞東醫院 | 11,865 | 5,057 | 6,808 |
| 徐匯中學 | 8,038 | 1,574 | 6,464 |
| 三民高中 | 7,653 | 1,350 | 6,303 |
| 三和國中 | 7,913 | 1,683 | 6,230 |
| 三重國小 | 7,527 | 1,666 | 5,861 |
| 迴龍 | 7,122 | 1,538 | 5,584 |
| 丹鳳 | 5,973 | 1,176 | 4,797 |
| 新店區公所 | 6,923 | 2,274 | 4,649 |
| 北投 | 8,032 | 3,649 | 4,383 |
| 永寧 | 6,880 | 2,544 | 4,336 |
| 新莊 | 6,336 | 2,010 | 4,326 |
| 新店 | 5,426 | 1,519 | 3,907 |
| 台北橋 | 5,812 | 1,977 | 3,835 |
| 七張 | 7,559 | 3,781 | 3,778 |
| 菜寮 | 5,486 | 1,748 | 3,738 |
| 萬芳醫院 | 5,966 | 2,246 | 3,720 |
| 東湖 | 5,084 | 1,536 | 3,548 |
| 萬隆 | 5,316 | 1,859 | 3,457 |
| 土城 | 4,735 | 1,284 | 3,451 |
| 內湖 | 5,511 | 2,067 | 3,444 |
| 後山埤 | 7,660 | 4,440 | 3,220 |
| 龍山寺 | 11,856 | 8,831 | 3,025 |
| 景美 | 7,108 | 4,183 | 2,925 |
| 竹圍 | 4,682 | 1,854 | 2,828 |
| O頭前庄 | 2,442 | 0 | 2,442 |
| 唭哩岸 | 3,591 | 1,204 | 2,387 |
| 明德 | 5,096 | 2,753 | 2,343 |
| 三重 | 4,324 | 2,116 | 2,208 |
| 葫洲 | 4,300 | 2,109 | 2,191 |
| 南港 | 9,300 | 7,584 | 1,716 |
| 辛亥 | 2,079 | 394 | 1,685 |
| 圓山 | 8,806 | 7,275 | 1,531 |
| 麟光 | 2,208 | 690 | 1,518 |
| 永春 | 7,898 | 6,450 | 1,448 |
| 木柵 | 2,266 | 849 | 1,417 |
| 石牌 | 9,680 | 8,264 | 1,416 |
| 大湖公園 | 1,789 | 413 | 1,376 |
| 文德 | 2,512 | 1,322 | 1,190 |
| 復興崗 | 1,936 | 749 | 1,187 |
| 小碧潭 | 1,698 | 578 | 1,120 |
| 頂埔 | 4,304 | 3,215 | 1,089 |
| 輔大 | 5,265 | 4,178 | 1,087 |
| 芝山 | 8,634 | 7,574 | 1,060 |
| 萬芳社區 | 1,279 | 336 | 943 |
| 奇岩 | 3,340 | 2,552 | 788 |
| 六張犁 | 4,332 | 3,771 | 561 |
| 大直 | 3,386 | 3,110 | 276 |
| 動物園 | 1,604 | 1,434 | 170 |
大家假日 最喜歡去哪裡 所以抓 是假日 就好 出站最多的地方 但是要回家 所以應該進出站是同一站 但無法識別 是同一人
應該會是 假設是 出門 大直 到 北車 回程 北車到大直 那當天會各加1
台北捷運 一天 可以收多少運費?
- 需要去收集 北捷的所有各站的到達費用
然後 載入資料 mrt_price
先對對看資料 會發現 有一些資料
會 對不上 運費 是 北捷上傳的資料 大橋頭站 是大橋頭站
但運費網頁的 大橋頭站 叫做大橋頭
修正運費表即可
with agg as (
select
進站,
出站,
sum(人次) as count
from
mrt
where
strftime('%Y', 日期)= '2025'
and strftime('%m', 日期) = '12'
group by
進站,
出站)
select
sum(count * 價格)
from
agg
left join mrt_price mrt_price on
agg.進站 = mrt_price.進站
and agg.出站 = mrt_price.出站
where
價格 is not null;
可得知 北捷在 2025/12 一個月收入是 1,787,589,240 17億左右
如何驗證 去找 北捷財報
看 114年 12 月 會計報 第三頁
可以看到 客運收入 實際數 為 1,693,344,444
差異數的可能
- 運費沒有用折扣金額去算
- 有些沒有對到運費的站 但是 沒對到的應該要差更多才對
台北捷運 哪天 收入最多?
WITH revenue_by_day AS (
SELECT
日期,
SUM(人次 * 價格) AS daily_revenue
FROM mrt
JOIN mrt_price p
ON mrt.進站 = p.進站
AND mrt.出站 = p.出站
WHERE 價格 IS NOT NULL
GROUP BY 日期
)
SELECT
日期,
daily_revenue
FROM revenue_by_day
ORDER BY daily_revenue DESC
LIMIT 1;
結果為 2019-12-31 的跨年 一天賺 快八千萬
| 日期 | daily_revenue |
|---|---|
| 2019-12-31 | 79,201,185 |
台北捷運 哪一天 收入最少?
WITH revenue_by_day AS (
SELECT
日期,
SUM(人次 * 價格) AS daily_revenue
FROM mrt
JOIN mrt_price p
ON mrt.進站 = p.進站
AND mrt.出站 = p.出站
WHERE 價格 IS NOT NULL
GROUP BY 日期
)
SELECT
日期,
daily_revenue
FROM revenue_by_day
ORDER BY daily_revenue ASC
LIMIT 2;
竟然是在2026/01/01 開年 XD
| 日期 | daily_revenue |
|---|---|
| 2026-01-01 | 2,981,560 |
但在想是不是可能是資料批次 導致 資料不完整
所以改成 limit 10
| 日期 | daily_revenue |
|---|---|
| 2026-01-01 | 2,981,560 |
| 2020-01-01 | 4,028,475 |
| 2021-06-06 | 4,194,455 |
| 2024-10-31 | 4,376,430 |
| 2021-06-13 | 4,439,155 |
| 2021-06-14 | 4,678,255 |
| 2021-06-20 | 5,047,820 |
| 2021-06-05 | 5,448,720 |
| 2021-06-27 | 5,614,970 |
| 2021-09-12 | 5,638,945 |
結果 2020/01/01 的跨年也是 最低收入
2,021 就是疫情
台北捷運 哪一站 收入最多?
簡單想 應該是最多人流 就會賺最多錢
SELECT
mrt.出站 AS station,
SUM(人次 * 價格) AS revenue
FROM mrt
JOIN mrt_price p
ON mrt.進站 = p.進站
AND mrt.出站 = p.出站
WHERE 價格 IS NOT NULL
GROUP BY mrt.出站
ORDER BY revenue DESC
LIMIT 10;
| station | revenue | revenue_fmt |
|---|---|---|
| 台北車站 | 10345452230 | 10,345,452,230 |
| 西門 | 4860888690 | 4,860,888,690 |
| 市政府 | 4794973915 | 4,794,973,915 |
| 淡水 | 4544395950 | 4,544,395,950 |
| 忠孝復興 | 3303184015 | 3,303,184,015 |
| 中山 | 3251054545 | 3,251,054,545 |
| 新埔 | 2979607785 | 2,979,607,785 |
| 南京復興 | 2927290305 | 2,927,290,305 |
| 台北101/世貿 | 2668531485 | 2,668,531,485 |
| 頂溪 | 2660194280 | 2,660,194,280 |
北車不意外
台北捷運 哪幾站 收入最差?
簡單想 應該是最沒人流 就會賺最多錢
SELECT
mrt.出站 AS station,
SUM(人次 * 價格) AS revenue
FROM mrt
JOIN mrt_price p
ON mrt.進站 = p.進站
AND mrt.出站 = p.出站
WHERE 價格 IS NOT NULL
GROUP BY mrt.出站
ORDER BY revenue asc
LIMIT 20;
| station | revenue |
|---|---|
| 十四張 | 38976040 |
| 橋和 | 48483895 |
| 新埔民生 | 51448765 |
| 秀朗橋 | 63525360 |
| 板新 | 67427795 |
| 中原 | 68478730 |
| 景平 | 90932975 |
| 幸福 | 96243140 |
| 中和 | 108935795 |
| 新北產業園區 | 109195285 |
| 萬芳社區 | 179342335 |
| 辛亥 | 246687145 |
| 頭前庄 | 299032030 |
| 小碧潭 | 299499510 |
| 忠義 | 300742630 |
| 大湖公園 | 305584305 |
| 麟光 | 308471675 |
| 復興崗 | 340189250 |
| 先嗇宮 | 374987925 |
| 木柵 | 375276470 |
台北捷運站 有適合居住 也適合 上班的 站點嗎? (出站,入站 在下班時間 相對平均 人流穩定)
WITH rush_hour AS (
SELECT
日期,
站點,
SUM(進站人次) AS in_cnt,
SUM(出站人次) AS out_cnt
FROM (
SELECT
日期,
進站 AS 站點,
人次 AS 進站人次,
0 AS 出站人次
FROM mrt
WHERE CAST(時段 AS INTEGER) BETWEEN 17 AND 20
UNION ALL
SELECT
日期,
出站 AS 站點,
0 AS 進站人次,
人次 AS 出站人次
FROM mrt
WHERE CAST(時段 AS INTEGER) BETWEEN 17 AND 20
)
WHERE strftime('%w', 日期) BETWEEN '1' AND '5'
GROUP BY 日期, 站點
),
station_stats AS (
SELECT
站點,
AVG(in_cnt) AS avg_in,
AVG(out_cnt) AS avg_out,
ABS(AVG(in_cnt) - AVG(out_cnt)) AS in_out_gap,
(LEAST(AVG(in_cnt), AVG(out_cnt)) / NULLIF(GREATEST(AVG(in_cnt), AVG(out_cnt)), 0)) AS balance_ratio
FROM rush_hour
GROUP BY 站點
)
SELECT
站點,
avg_in,
avg_out,
balance_ratio,
in_out_gap
FROM station_stats
WHERE balance_ratio >= 0.85
ORDER BY balance_ratio DESC, in_out_gap ASC
LIMIT 20;
拿北車 當作分隔線 北車 算是 中轉站 進進出出人很多 是正常的
| 站點 | avg_in | avg_out | balance_ratio | in_out_gap |
|---|---|---|---|---|
| 永春 | 6569.717013888889 | 6552.084201388889 | 0.9973160468764906 | 17.6328125 |
| 頭前庄 | 1412.919704861111 | 1418.953125 | 0.9957479778347936 | 6.033420138888914 |
| 奇岩 | 2694.847222222222 | 2668.429253472222 | 0.9901968584593025 | 26.41796875 |
| 台電大樓 | 5651.967013888889 | 5592.283420138889 | 0.9894402084082699 | 59.68359375 |
| 松山 | 8945.969184027777 | 8715.759982638889 | 0.9742667120070225 | 230.2092013888887 |
| 劍潭 | 9273.248263888889 | 9551.381076388889 | 0.9708803564347833 | 278.1328125 |
| 中和 | 943.5275437459494 | 977.101749837978 | 0.9656389868326448 | 33.57420609202859 |
| 石牌 | 8551.818142361111 | 8860.146267361111 | 0.9652005603862529 | 308.328125 |
| 西門 | 20485.86935763889 | 21237.946180555555 | 0.9645880624932919 | 752.0768229166642 |
| 頂埔 | 2766.640190972222 | 2932.5078125 | 0.9434383019132101 | 165.86762152777783 |
| 大直 | 3075.5086805555557 | 2876.0256076388887 | 0.9351381856998587 | 199.48307291666697 |
| 台北車站 | 41148.09982638889 | 44256.106336805555 | 0.929772255906031 | 3108.0065104166642 |
| 板新 | 532.2657161373946 | 584.6066104990279 | 0.9104681790769449 | 52.34089436163322 |
| 六張犁 | 3477.3411458333335 | 3845.1037326388887 | 0.9043556136902553 | 367.7625868055552 |
| 文德 | 1735.1059027777778 | 1927.6284722222222 | 0.9001246494234965 | 192.52256944444434 |
| Y板橋 | 1665.6565132858068 | 1498.1147116007778 | 0.8994139545886789 | 167.541801685029 |
| 士林 | 9130.104166666666 | 8050.157552083333 | 0.8817158495818549 | 1079.946614583333 |
| 芝山 | 6929.766059027777 | 7861.310763888889 | 0.8815026230561723 | 931.5447048611113 |
| 圓山 | 7254.016493055556 | 8259.943576388889 | 0.8782162282308098 | 1005.927083333333 |
算得更精準的宜居捷運站
WITH flow AS (
-- 進站事件
SELECT
日期,
進站 AS station,
人次 AS entry_cnt,
0 AS exit_cnt
FROM mrt
WHERE
CAST(時段 AS INTEGER) BETWEEN 18 AND 20
AND strftime('%w', 日期) IN ('1','2','3','4') -- 週一~週四
UNION ALL
-- 出站事件
SELECT
日期,
出站 AS station,
0 AS entry_cnt,
人次 AS exit_cnt
FROM mrt
WHERE
CAST(時段 AS INTEGER) BETWEEN 18 AND 20
AND strftime('%w', 日期) IN ('1','2','3','4')
),daily AS (
SELECT
日期,
station,
SUM(entry_cnt) AS entry_cnt,
SUM(exit_cnt) AS exit_cnt,
SUM(entry_cnt + exit_cnt) AS total_flow,
ABS(SUM(entry_cnt) - SUM(exit_cnt)) * 1.0
/ NULLIF(SUM(entry_cnt + exit_cnt), 0) AS imbalance_ratio
FROM flow
GROUP BY 日期, station
),station_agg AS (
SELECT
station,
AVG(entry_cnt) AS avg_entry,
AVG(exit_cnt) AS avg_exit,
AVG(total_flow) AS avg_flow,
AVG(imbalance_ratio) AS avg_imbalance,
stddev(total_flow) / NULLIF(AVG(total_flow), 0) AS flow_cv
FROM daily
GROUP BY station
)
SELECT
station,
ROUND(avg_entry) AS avg_entry,
ROUND(avg_exit) AS avg_exit,
ROUND(avg_flow) AS avg_flow,
ROUND(avg_imbalance, 3) AS imbalance_ratio,
ROUND(flow_cv, 3) AS flow_stability
FROM station_agg
WHERE
avg_flow > 5000
AND avg_imbalance < 0.2
AND flow_cv < 0.3
ORDER BY
avg_imbalance ASC,
flow_stability ASC;
根據下面這張圖 後山埤 在最右邊 劍潭 在最上面
代表 後山埤 上下班人流差距最明顯
劍潭 每天的人流量波動大
最棒的該是永春 價格也會很棒
北捷 平均每月 賺多少錢
COPY(
WITH daily AS (
SELECT
日期,
SUM(人次 * 價格) AS daily_revenue
FROM mrt
JOIN mrt_price p
ON mrt.進站 = p.進站
AND mrt.出站 = p.出站
WHERE 價格 IS NOT NULL
GROUP BY 日期
)
SELECT
strftime('%Y-%m', 日期) AS year_month,
AVG(daily_revenue) AS avg_daily_revenue,
SUM(daily_revenue) AS monthly_revenue
FROM daily
GROUP BY year_month
ORDER BY year_month) TO "C://workspace/mrt-income.csv"
住在淡水的人 都是去那裏上班 ?
- 所以要看進站 我挑了 2025/12/09 (週二) 整天的資料匯出 csv
COPY(
select 日期,時段,進站,出站,人次 from mrt
where 進站='淡水' and strftime('%Y',日期)='2025' and strftime('%d',日期)=9 and
strftime('%m',日期)=12) TO "C://workspace/淡水.csv";
- 然後 畫成 桑基圖
- 會發現 有 8 %的人都是要去 北車 就是在台北工作
- 5% 的人 去石牌 石牌工作的可能就是 醫院 比較多
- 4.9% 的人去關渡 華碩科學園區的人
code
import pandas as pd
df = pd.read_csv("淡水20251209.csv", encoding="utf-8")
df["時段"] = df["時段"].astype(int)
df["人次"] = df["人次"].astype(int)
flow = (
df.groupby("出站")["人次"]
.sum()
.sort_values(ascending=False)
)
TOP_N = 10
top_flow = flow.head(TOP_N)
others = flow.iloc[TOP_N:].sum()
# 計算總人次
total = flow.sum()
labels = [f"淡水 ({total}人次)"]
for station, cnt in top_flow.items():
pct = (cnt / total) * 100
labels.append(f"<b>{station} ({cnt}人次, {pct:.1f}%)</b>")
others_pct = (others / total) * 100
labels.append(f"<b>其他 ({others}人次, {others_pct:.1f}%)</b>")
source = [0] * (TOP_N + 1)
target = list(range(1, TOP_N + 1)) + [TOP_N + 1]
value = list(top_flow.values) + [others]
import plotly.graph_objects as go
fig = go.Figure(data=[go.Sankey(
node=dict(
pad=30, # 節點間距(重點)
thickness=35, # 節點寬度(重點)
label=labels,
line=dict(width=0),
# color="#E0E0E0" # 節點底色淡一點,字更清楚
),
link=dict(
source=source,
target=target,
value=value,
hovertemplate="人次:%{value}<extra></extra>"
)
)])
fig.update_layout(
title_text="20025/12/09淡水站出站人流桑基圖",
font_size=12,
font=dict(
family="Arial",
size=18, # Set the font size here
color="RebeccaPurple",
),
)
fig.show()
在內湖科學園區上班的人們 都是從哪裡來的呢?
- 抓出 西湖捷運站 及 港墘捷運站 在2025年平日一到五 早上 05-11 點出站的人流 都是來自於哪裡
西湖
COPY(SELECT
日期,進站,出站,人次
FROM
mrt
WHERE
出站 = '港墘'
AND
CAST(時段 AS INTEGER) BETWEEN 5 AND 11
AND
strftime('%Y', 日期)= '2025'
AND
日期 NOT IN ( '2025-01-01', '2025-01-27', '2025-01-28', '2025-01-29', '2025-01-30', '2025-01-31',
'2025-02-12', '2025-02-28', '2025-04-03', '2025-04-04', '2025-05-01', '2025-05-30',
'2025-09-29', '2025-10-06', '2025-10-10', '2025-10-24', '2025-12-25',)
AND 人次 > 0
) TO "C://workspace/港墘.csv";
- 可以看到 大家都來自於 南港展覽館 或著是 葫洲 (東湖生活圈) 來上班 其他就是散落各地
港墘
- 和西湖的狀況 差不多 但第三名 東湖 就跑上來了
- 程式碼幾乎一樣 就不貼了
那我們的 臥城 第一名 頂溪 大家都是去那裡上班呢?
- 抓出 頂溪捷運站 在2025年平日一到五 早上 05-11 點進站人流 都是來要去哪裡
COPY(SELECT
日期,進站,出站,人次
FROM
mrt
WHERE
進站 = '頂溪'
AND
CAST(時段 AS INTEGER) BETWEEN 5 AND 10
AND
strftime('%Y', 日期)= '2025'
AND
日期 NOT IN ( '2025-01-01', '2025-01-27', '2025-01-28', '2025-01-29', '2025-01-30', '2025-01-31',
'2025-02-12', '2025-02-28', '2025-04-03', '2025-04-04', '2025-05-01', '2025-05-30',
'2025-09-29', '2025-10-06', '2025-10-10', '2025-10-24', '2025-12-25',)
AND 人次 > 0
) TO "C://workspace/頂溪.csv";
- 北車 松江南京 古亭 為大宗
根據這些分析 可以再想想有哪些商業用途
- 購屋生活評估
- 廣告投放評估
- 開店選址參考
- 影響力評估
台北捷運站列表 共 117 站
- 動物園
- 木柵
- 萬芳社區
- 萬芳醫院
- 辛亥
- 麟光
- 六張犁
- 科技大樓
- 大安
- 忠孝復興
- 南京復興
- 中山國中
- 松山機場
- 大直
- 劍南路
- 西湖
- 港墘
- 文德
- 內湖
- 大湖公園
- 葫洲
- 東湖
- 南港軟體園區
- 南港展覽館
- 象山
- 台北101/世貿
- 信義安和
- 大安
- 大安森林公園
- 東門
- 中正紀念堂
- 台大醫院
- 台北車站
- 中山
- 雙連
- 民權西路
- 圓山
- 劍潭
- 士林
- 芝山
- 明德
- 石牌
- 唭哩岸
- 奇岩
- 北投
- 新北投
- 復興崗
- 忠義
- 關渡
- 竹圍
- 紅樹林
- 淡水
- 新店
- 新店區公所
- 七張
- 小碧潭
- 大坪林
- 景美
- 萬隆
- 公館
- 台電大樓
- 古亭
- 小南門
- 西門
- 北門
- 中山
- 松江南京
- 南京復興
- 台北小巨蛋
- 南京三民
- 松山
- 南勢角
- 景安
- 永安市場
- 頂溪
- 忠孝新生
- 松江南京
- 行天宮
- 中山國小
- 民權西路
- 大橋頭
- 台北橋
- 菜寮
- 三重
- 先嗇宮
- 頭前庄
- 新莊
- 輔大
- 丹鳳
- 迴龍
- 三重國小
- 三和國中
- 徐匯中學
- 三民高中
- 蘆洲
- 頂埔
- 永寧
- 土城
- 海山
- 亞東醫院
- 府中
- 板橋
- 新埔
- 江子翠
- 龍山寺
- 台北車站
- 善導寺
- 忠孝新生
- 忠孝復興
- 忠孝敦化
- 國父紀念館
- 市政府
- 永春
- 後山埤
- 昆陽
- 南港
- 南港展覽館
補充
- duckdb 安裝 markdown 輸出
INSTALL markdown FROM community;
LOAD markdown;