上海地铁一卡通:2015年4月的 2.48亿次地铁刷卡,看见了什么?
摘要 :基于上海公共交通卡(SPTCC)2015年4月全月刷卡明细,仅保留交易方式为「地铁」的记录 (30天、2.48亿条),我们刻画了一座超大城市的出行节律。数据显示:全月地铁进站 1.25亿次 (即全月地铁出行量),工作日日均刷卡 895.1万 、周末 638.8万 ;日内呈典型双峰 ------早高峰 8 点、晚高峰 17--18 点;周五 为全周最忙(最高 2015-04-10 达 970.3万),清明 三天为全月洼地(最低 502.9万)。线路与站点热度高度集中于 2 号线、1 号线 与人民广场、上海火车站 等换乘/枢纽节点;全月票价优惠交易占 30.0% ,出站扣费合计 4.86亿 元。
一、数据说明
- 来源 :上海公共交通卡(SPTCC)刷卡明细。原始数据实际混有公交、出租、轮渡、P+R 停车 等多种交易方式,本文全篇仅统计交易方式 =「地铁」的记录,其余方式一律剔除
- 区间:2015-04-01 ~ 2015-04-30,逐日一个 CSV,共 30 个文件
- 规模 :过滤后 248,021,755 条地铁刷卡记录(约 2.48亿 笔)
- 字段:卡号、日期、时间、站点(如「1号线莘庄」)、方式、金额、优惠
- 口径 :金额 = 0 记为进站(上车) ,金额 > 0 记为出站(下车扣费)
- 来源 :上海地铁2015年4月一卡通数据
二、双峰通勤:城市的作息钟

图1 地铁刷卡日内分布:典型双峰通勤形态
把全月每一天的 24 小时平均到一起,曲线轮廓干净得近乎教科书:早高峰落在 8 点前后(工作日均值约 134.7万/小时),晚高峰落在 17--18 点。两个峰之间(10--16 点)维持一段平缓的「日间平台」,凌晨 0--5 点几乎贴地。这正是典型单中心城市通勤的签名:人们被同一套时钟驱动,在同一时刻涌出、再在同一时刻归巢。
三、工作日 vs 周末:两套节律

图2 工作日 vs 周末分时对比
- 总量 :工作日日均 895.1万、周末日均 638.8万,工作日比周末高约 40%。
- 形态 :工作日双峰锐利 ------早 8、晚 17--18 两座尖峰;周末则单峰平缓 ,峰值后移到 17 点左右,更接近「睡到自然醒、午后出门」的生活节律。
- 周末清晨的曲线明显比工作日「抬得更高、来得更快」,说明休息日没有硬性的到岗时刻约束。
四、清明假期:全月的洼地,与周五的峰值

图3 全月每日刷卡量趋势

图4 时间×日期热力图
- 洼地 :4-4 ~ 4-6 清明假期,刷卡量骤降,最低 4-6 仅 502.9万(工作日高位普遍 900--970 万)。热力图上那三列明显「变浅」。
- 峰值 :全月最高的五天是 2015-04-10(970.3万)、2015-04-30(969.2万)、2015-04-17(969.1万)等------其中四个周五全部杀入前五 ,唯一的例外 4-30 恰是五一小长假前的最后一个工作日,本质上也是「假期前效应」。周五效应很直观:临近周末,商务、社交、提前出行叠加,把这一天顶到全周最高。
- 热力图还揭示了一个被日均曲线「抹平」的细节:周末整体更浅、深夜更长------城市在休息日真正地「慢」了下来。
五、线路与站点:热度向枢纽与商圈收敛


图5 线路客流Top15 and 站点客流 Top20

图6 职住通勤 OD 矩阵(早高峰 7--9 时进站流向)
- 线路 :2 号线(4046.3万)领跑,1 号线(3807.8万)紧随,8 号线(2732.5万)、9 号线(2369.4万)居次。2 号线串起浦东机场---虹桥---人民广场---陆家嘴,是横贯城市、衔接双机场与高铁的「黄金走廊」,其头部地位毫不意外。
- 职住 OD :把早高峰(7--9 时进站)的每一次完整行程视作「从哪座睡城去哪片就业地」,全月共重建出 3542.9万 段这样的居家→就业通勤流(基于 99.8% 配对率)。图6 矩阵里颜色最深的几条走廊,就是城市真正的通勤大动脉:九亭 → 漕河泾开发区(约 6.6万) 居首,其后 通河新村→上海火车站、彭浦新村→上海火车站 紧随。行方向的「睡城」以 莘庄、莲花路、上海南站 等外围大型居住区站为首,列方向的「就业地」则高度收敛于 人民广场、陆家嘴、静安寺 等核心商务 / 换乘枢纽------早高峰的热力几乎全部涌向中心城区那几个站点,这正是「职住分离」在地铁闸机上的空间投影。

图7 职住通勤 OD 地理流向图(早高峰 7--9 时,Top 走廊)
把矩阵里的数字放回真实的城市地图上(图7,站点经纬度取自地铁站点空间数据),职住分离的空间结构一目了然:
- 通勤流呈「向心汇聚」形态 :几乎所有粗弧线都从城市外围指向内环------蓝色的睡城节点(莘庄、九亭、泗泾、佘山、通河新村、彭浦新村......)散布在西南、西北外缘,橙色的就业节点(人民广场、陆家嘴、静安寺、徐家汇、漕河泾开发区......)紧紧攥在市中心一小圈里。「城外睡觉、城内上班」不是修辞,而是几何。
- 两条最粗的通勤走廊方向感极强:西南方向,九亭 / 泗泾 / 佘山 / 七宝沿 9 号线汇入漕河泾开发区------这是「松江居住带 → 漕河泾科技园」的产业通勤动脉;正北方向,通河新村 / 彭浦新村 / 共富新村 / 共康路沿 1 号线南下直插上海火车站一带------这是「宝山居住带 → 闸北/静安就业带」的老牌通勤走廊。
- 通勤距离肉眼可见地长:佘山→漕河泾、泗泾→漕河泾这类弧线横跨大半个市域,单程 20 公里以上的钟摆式通勤,每天清晨在这几条弧线上重复数万次。
六、结论:从刷卡数据读懂一座城
- 时钟是刚性的:双峰通勤不是比喻,而是每天被精确复现的 8 点与 17--18 点。
- 周五是出口,清明是暂停键:周五峰值与清明洼地,是工作制度在城市血管里的直接投影。
- 热度高度集中:少数线路与站点承载了远超其数量占比的客流,枢纽即城市的「心脏」。
- 口径决定结论:只保留地铁记录后,进出站几乎严格 1:1、票价分布以 4 元档为主------一切「混入公交记录」造成的假象(出站两倍、2 元档最多)都随之消失。
七、延伸分析:更细的刻度
7.1 站点分化:榜单高度重合,分歧藏在两个站里

图8 站点客流分化:工作日 Top10 vs 周末 Top10
把工作日与周末的站点热度分开排名,结果有点出乎意料:两份 Top10 榜单重合了 9 个 ------人民广场、上海火车站、徐家汇、静安寺、中山公园、南京东路、陕西南路、莘庄、上海南站在工作日和周末都是顶流。换句话说,枢纽与商圈的头部地位是全天候的 ,并不随工作/休息切换。真正的分歧只在两个席位:陆家嘴 只出现在工作日榜(纯就业中心,周末人去楼空);虹桥火车站只出现在周末榜(休息日对外出行集中释放)。一进一出,恰好把「上班的城市」与「出行的城市」标记了出来。此外周末榜单整体量级更低、排位更扁平------头部站的「统治力」在休息日也随客流一起松弛下来。
7.2 优惠时段:谁在享受票价优惠

图9 优惠交易时段分布
优惠交易的占比并非均匀:全天均值约 30%,在运营时段(约 9:00 )最高可达 37% ,午后至晚间整体高于均值;凌晨 0--5 点样本极少,占比波动无参考意义。结合金额特征考证,这里的「优惠」主体是**「月累计满 70 元后 9 折」(越到月底、越到一天中的晚些时候,满足门槛的高频通勤者占比越高,优惠占比随之抬升)叠加少量 「公交→地铁换乘减 1 元」------它不是老人/学生卡的错峰画像,而是高频通勤者的忠诚度画像**(并非老人/学生卡优惠------敬老卡当年非高峰免费乘车,不产生扣费记录)。另需注意:周末文件的优惠标记存在记录缺陷(几乎全部地铁出站被标为「优惠」,却大量是全价整数金额),周末口径不宜采信、应以工作日为准。
7.3 线路集中度与「周末晚起」

图10 线路客流集中度(Lorenz 曲线)
- 怎么读这张图 :把 14 条线按客流从最冷到最热 排队、从左往右逐条累加------横轴走一格是「又数了一条线」,纵轴是「累计占了多少客流」。图中那条对角虚线是绝对平均线 :如果 14 条线客流完全一样,每数一条线纵轴就均匀上涨 1/14,曲线就会贴着它走;实际曲线下凹越深、离它越远,客流越集中。图上标了两个关键读数点:最冷的 5 条线(已占全部线路的 36%)合计只贡献约 10% 客流 (曲线前半段几乎贴地),而最热的 3 条线(2/1/8 号线)一口气扛起约 43% 客流(曲线尾段陡然冲顶)。
- 集中度 :这条曲线对应的基尼系数为 0.370(0=完全平均,1=极端集中)------客流中等偏高地集中于头部几条线路,但 2/1/8 号线本就是横贯城市主轴的大动脉,集中度高是城市单中心结构的自然结果;冷门线(16/5/12/13 号线)多为新开通或郊区线,客流尚未养成。
- 周末晚起(量化) :早间 6--9 点客流,工作日 308.4万、周末仅 123.4万,周末早间客流只有工作日的 40%。换句话说,到了休息日,整座城市「出门」的冲动推迟了、也减弱了------40% 这个数字,就是「周末睡到自然醒」在地铁闸机上的精确投影。
八、线路通勤画像:谁是「睡城线」,谁是「CBD 线」
把每条线路的刷卡按「小时 × 进出站方向」拆开,就能给线路贴上通勤标签。我们用一个简洁的居住地指数来刻画:
居住地指数 = (早高峰进站 − 早高峰出站) + (晚高峰出站 − 晚高峰进站) ÷ 四项和
- 指数 > 0:早高峰进站明显多于出站、晚高峰出站明显多于进站 → 典型的「居住地 / 睡城线」------居民清晨离家去别处上班、傍晚归巢。
- 指数 < 0:恰好相反 → 典型的「就业中心 / CBD 线」------人们清晨涌入这里上班、傍晚散去。
答案是肯定的:通勤特征明显的线路不仅存在,而且分野极其清晰。

图11 线路通勤画像:居住地指数(蓝=早进晚出,橙=早出晚进)
图11 把 14 条线按居住地指数排成一列。最典型的居住地线是 16号线 (指数 +0.428):早高峰 7--9 点进站 47.9万、出站仅 20.7万(进站是出站的 2.3 倍 ),晚高峰 17--19 点出站 45.5万、进站 16.7万(出站是进站的 2.7 倍)------进出方向在早晚彻底反转,是教科书级的「睡城线」形态。其余指数高于 +0.17 的线路还有 6号线、5号线、11号线、12号线:它们同样呈现早进晚出的强通勤特征(16号线 主要服务原南汇、临港等远郊大型居住区,是典型的「进城睡城线」)。
最典型的就业中心线是 4号线 (指数 -0.206):早高峰出站 291.0万 反而高于进站 190.7万(出站是进站的 1.5 倍 ),晚高峰进站 250.3万 又高于出站 165.7万(进站是出站的 1.5 倍)------人们清晨涌入、傍晚离开。4号线、2号线、10号线 同样呈早出晚进的就业中心特征;其中 4、2 号线串起世纪大道---中山公园、陆家嘴---人民广场---南京东路等核心商务带,是当之无愧的「CBD 线」。

图12 典型线路 24 小时进出站对比:进站(蓝) vs 出站(橙)
把 16号线 与 4号线 的 24 小时进站(蓝)、出站(橙)叠在一起看(图12),对比一目了然:16号线 早峰蓝色(进站)明显高于橙色、晚峰橙色反超;4号线 则完全镜像------早峰橙色(出站)压过蓝色、晚峰蓝色反超。一张图,把「睡城」与「CBD」的昼夜呼吸画得清清楚楚。
解释:居住地指数刻画的,是线路沿途用地的主导功能。指数越正的线路,沿线越偏向居住(远郊大型居住区);指数越负的线路,沿线越偏向就业与商业(核心商务区)。这正是一座城市「职住分离」在地铁闸机上的直接投影------而 16 号线与 4 号线,恰好是这条投影里最极端的两条。
九、站点通勤画像:通勤特征站,有吗?
把视线从「线路」下沉到「站点」,用同样的居住地指数给每个高流量站点贴标签------答案是肯定的,而且分野同样清晰。

图13 站点通勤画像:居住地指数(蓝=早进晚出,橙=早出晚进)
图13 在高流量站中按指数排序。最典型的居住地站是 通河新村 (指数 +0.731):早高峰 7--9 点进站 38.0万、出站仅 4.8万(进站是出站的 8.0 倍 ),晚高峰出站 26.6万、进站 5.3万(出站是进站的 5.1 倍)------典型的「居住区外围站」,清晨人潮涌出、傍晚回流。紧随其后的 彭浦新村、共康路、九亭、江湾镇、沈杜公路、锦江乐园、莲花路 等,同样是早进晚出的睡城型站点。
另一侧,最典型的就业中心站是 漕河泾开发区 (指数 -0.744):早高峰出站 75.1万 反而高于进站 10.4万(出站是进站的 7.2 倍 ),晚高峰进站 57.5万 又高于出站 9.0万(进站是出站的 6.4 倍)------人们清晨涌入、傍晚离开。漕河泾开发区、浦电路、陆家嘴、黄陂南路、大世界、静安寺、常熟路、人民广场 等核心商务 / 换乘站呈现早出晚进的就业中心特征。
站点级与线路级画像相互印证:睡城线(如 16 号线)由沿线睡城站撑起,CBD 线(如 4 号线)由陆家嘴、南京东路等就业站撑起。通勤,最终都落在具体的一座座站台上。
十、票价与出行次数:卡级配对下的「一个人」视角
票价怎么分布、一个人一天坐几次地铁------这两个问题必须放在同一口径下回答:以卡号为线索,把刷卡记录串成「人的行程」 。做法:把每张卡当天的地铁刷卡收集起来,按时间排序 后将「进站(0 元)→ 其后最近一次出站(>0 元)」配对为一次完整行程(原始文件内记录并不按时间排列,直接顺序扫描会把大量行程错配)。仅地铁口径下,全月 99.8% 的出站扣费都能配对上同卡进站------地铁闸机「进一次、出一次」,数据本身相当干净。
10.1 票价分布:4 元档行程最多(卡级配对口径)

图14 票价分布:仅进站---出站配对成功的行程
把全月配对成功的完整行程按票价分桶,最密集的是 4 元档(6234.0万 笔,占 51%);前几档依次为 4元(6234.0万)、3元(3115.6万)、5元(1635.9万)。票价随乘坐距离递增,中短途占据绝对主体------这与「双峰通勤 + 高密度建成区」的城市形态一致:大多数人每天在相近距离上来回。
口径说明:由于配对率高达 99.8%,「配对行程」与「全部出站扣费」两种口径在仅地铁 数据下几乎重合(后者 4 元档最多、占 51%)。真正致命的口径陷阱在别处------这份原始数据混有公交等其他交易方式:若不先剔除,大量公交 2 元票会把「2 元档」顶到最高,得出完全错误的「地铁票价分布」。先按交易方式过滤、再按卡配对,缺一不可。
10.2 出行次数:「同一个人一天出行几次」
同一口径的另一面:直接用卡号的每日地铁进站次数(一次进站 = 一次行程的起点)来回答(图15):

图15 每人每天行程数分布:连续出行有多普遍
结果是 约 66% 的持卡人·日出行 ≥ 2 次------绝大多数是通勤往返(2 次占大头),此外午间办事、晚间休闲的「连续出行」也占一席之地。
十一、总结
一个月、2.48亿 次地铁刷卡,最终可以收拢为四句话:
1. 这是一座被时钟统治的城市。 工作日日均 895.1万 次刷卡挤在早 8 点与晚 17--18 点两座尖峰里,日复一日精确复现;周五被「假期前效应」顶到全周最高(2015-04-10 达 970.3万),清明三天则骤降至 502.9万 的全月洼地;到了周末,早间客流只剩工作日的 40%,整座城市把闹钟往后拨了两个小时。作息制度不是抽象的社会约定,它每天都被闸机逐笔记账。
2. 客流高度向少数动脉与枢纽收敛。 14 条线路中,最热的 3 条(2/1/8 号线)扛起约 43% 的客流,基尼系数 0.370;站点端,人民广场、上海火车站、徐家汇等枢纽在工作日与周末榜单上高度重合(Top10 重合 9 席)------头部的统治力是全天候的,真正随作息切换的只有陆家嘴(纯就业)与虹桥火车站(纯出行)这两个「单面站」。
3. 职住分离不是修辞,而是几何。 早高峰 3542.9万 段「居家→就业」通勤流几乎全部向心汇聚:西南的九亭 / 泗泾 / 佘山涌向漕河泾开发区(九亭→漕河泾开发区 单走廊全月 6.6万 次居首),正北的通河新村 / 彭浦新村沿 1 号线直插上海火车站。线路与站点画像给出同一结论的两个断面:16号线(指数 +0.428)是最纯粹的睡城线,4号线(-0.206)是最纯粹的 CBD 线;站点端 通河新村(+0.731)与 漕河泾开发区(-0.744)分踞两极。城外睡觉、城内上班,每天清晨在地图上画出数万条重复的弧线。
4. 口径决定结论。 这份数据混有公交、出租、轮渡等多种交易方式,若不先按「地铁」过滤,会得出「出站是进站两倍」「2 元档票价最多」等一连串假象;过滤后进出站严格 1:1(0.987),再以卡号做行程配对(配对率 99.8%),才看清真实图景------票价以 4 元档为主(占 51%),66% 的持卡人·日出行 ≥ 2 次,绝大多数是钟摆式往返。数据分析里最贵的不是算力,是口径。
刷卡数据没有问卷、没有访谈,只有 2.48 亿次「滴」的一声。但把这些声音按时间、空间、卡号三个维度重新排列,一座城市的作息、骨架与分工就自己浮现出来------通勤是城市最诚实的自白。
文章仅用于分享个人学习成果与个人存档之用,分享知识,如有侵权,请联系作者进行删除。所有信息均基于作者的个人理解和经验,不代表任何官方立场或权威解读。