黄金周购物热搜刷屏的同一周我想回答一个更基础的问题香港人到底在网上花多少钱政府统计处的月度零售数据给了完整答案——我把「零售业总销货值」和「网上零售销货值」两张表一起拉了下来总表 263 个月2004 年 10 月到 2026 年 8 月、网上表 80 个月零鉴权。对账结果有三个反直觉网购占比五年翻 4 倍3.3% → 14.6%但峰值是 2025 年 10 月的单月脉冲今年已回落到 9% 以下网上销货值 2025 年创新高占比却反而下滑以及一个我差点踩进去的字段陷阱——同一列里混着三种计量单位按字段名分组会把它们搅成一锅粥。目录一、两张表和一个会骗人的字段二、share 80 个月翻 4 倍、平台三年、单月脉冲三、总量2025 创新高占比却回落四、三个坑和三条边界一、两张表和一个会骗人的字段两张表都走统计处零鉴权接口620-67001零售总销货值与 620-67031网上零售销货值后者自带官方口径的「占零售总销货值百分比」。环境 Python 3.13 标准库即可。先说那个坑网上表的sv字段只有一个值VAL_ONLINE_RS但svDesc却有三种语义——「百万港元」「占总销货值百分比」「同比 %」混在同一列里。按sv分组等于把三种单位搅在一起正确姿势是先数svDesc的取值分布再按语义拆开importjson,collections onljson.load(open(原始返回/retail_online.bin,encodingutf-8-sig))[dataSet]semcollections.Counter(str(r[svDesc]).split( ()[0]forrinonl)assertset(sem){HK$ million,% share of total retail sales,Year-on-year % change}defpick(prefix):return{str(r[period]):r[figure]forrinonlifr[freq]Mandstr(r[OUTLET_TYPE])andstr(r[svDesc]).startswith(prefix)}onval,sharepick(HK$),pick(% share)mssorted(share)assertlen(ms)80and(ms[0],ms[-1])(202001,202608)print(svDesc 三种语义已拆分share 序列 80 个月:,ms[0],→,ms[-1])另一个小坑记下来这两张表的period是202608这种六位无连字符格式——我第一版按YYYY-MM解析直接崩了。不同政府接口的期间格式不统一有的带横杠、有的是六位数、年度行还是四位解析前先打印三个样本再动手比背格式省事得多。数据抓取的老规矩也照走两张表各抓两次、比对内容指纹一致才开始解析总表 263 个月逐月核对无断档、无空值VAL_RS每一格都是整数——这两道前置检查做完后面所有百分比才有资格被引用。二、share 80 个月翻 4 倍、平台三年、单月脉冲官方占比序列走的是四段totjson.load(open(原始返回/retail_total.bin,encodingutf-8-sig))[dataSet]val{str(r[period]):r[figure]forrintotifr[freq]Mandr[sv]VAL_RS}assertlen(val)263andall(isinstance(v,int)forvinval.values())assertshare[202001]3.3andshare[202008]7.1assertshare[202201]9.1andshare[202510]14.6assertshare[202608]8.7assertmax(share,keyshare.get)202510# 交叉验证官方 share vs 自算 onval/valbad[mforminmsifminvalandabs(share[m]-onval[m]/val[m]*100)0.05]assertlen(bad)1andbad[0]202107print(80 个月里 79 个月官方 share 与自算一致唯一例外 2021-07舍入级偏差)四段是2020-01 起点 3.3%疫情头几个月直接翻倍到 7.1%2022 年 1 月以 9.1% 进入平台期在 9% 上下横了三年2025 年 10 月单月冲上 14.6%——全序列最高点次月就回落到 11.2%2026 年回到 8-9% 区间8 月收在 8.7%。曲线是带年度脉冲的锯齿不是平滑上行每年第四季都有尖峰2025 年那个尖只是被垫得最高。这些第四季尖峰的来历不难猜——年末购物季都落在这个窗口官方统计按月归档脉冲就留在月度序列里。但注意 2025-10 之前的每个尖峰都在 11-13% 一带唯独 2025 年那根扎到 14.6%比前两年高出一截它是活动节奏还是基数效应单凭这张表判断不了能确定的是「占比的顶部在抬升而中枢没有同步抬升」——峰值创新高、均值还在 9%这两句话必须同时说。用单月峰值说「香港网购爆发」和用 8.7% 说「网购退潮」都是只看一个点的误读——官方占比、自算占比、80 个月锯齿三个视角放在一起才有结论。三、总量2025 创新高占比却回落矛盾点在两张表的对照里网上销货值 2025 年全年 357.85 亿港元创序列新高但同期占比反而从峰值回落。解释只有一个——大盘涨得比网上快零售总销货值 2026 年前 8 个月 2,660.75 亿同比 8.5%8 月单月 320.6 亿同比 5.6%。网上盘子在长2020 年才 205.9 亿实体盘子长得更快占比自然被稀释。再看网上盘子自己的形状还有第四个反直觉它不是一路向上——2022 年 345.6 亿见顶后2023、2024 连续两年回调325.4 亿、316.6 亿2025 年才重新创新高。疫情催生的线上习惯在 2023 年退过一波潮两年后才爬回来。占比回落和总量创新高同时发生说明这不是「线上退潮」而是「实体恢复更快」——把两张表拆开读和放在一起读结论完全不同。yrcollections.Counter()form,vinonval.items():yr[m[:4]]vassertyr[2020]20586andyr[2025]35785s26sum(val[f2026{mm:02d}]formminrange(1,9))s25sum(val[f2025{mm:02d}]formminrange(1,9))assert(s26,s25)(266075,245182)assertround((val[202608]/val[202508]-1)*100,1)5.6print(f网上 2025 {yr[2025]:,}总销货 2026 前 8 月 8.5%8 月 5.6%)四、三个坑和三条边界坑一p 临时标记。最新月 2026-08 在两张表里所有行都带「p」provisional——临时数字下期修订。引用最新月必须标注别拿它做趋势定论。坑二恒等式差 1 不一定是错。网上表的两个分项无店铺零售 其他零售加总与 Total 在 13 个月里对不平但差值全部是 ±1百万港元——四舍五入噪声不是数据错误。判断恒等式破没破先看差值的量级和单位再下结论我在罪案表里逐月 diff0在这张表就得给 ±1 的容差。坑三口径写在备注里。官方备注写明只要「通过本地零售商自设网络提交订单」就算网上销售支付可以线上也可以线下——这个口径比「电商平台成交额」宽拿它跟内地网零占比直接比是跨口径误用。边界月度数据滞后约两个月最新到 2026-08网上表只有 2020 年起的数据总表可回溯到 2004 年本文只对账官方统计不构成任何消费或投资判断。这段 svDesc 拆分和双表交叉验证代码可以直接搬走收藏备用如果这篇帮你校准了「香港网购」的体感收藏点赞。你做过「官方占比字段 vs 自算」的交叉验证吗对不上的时候先查什么评论区聊聊。这类香港公开数据对账持续更新关注不迷路。参考链接https://www.censtatd.gov.hk/api/get.php?id620-67001langenfull_series1https://www.censtatd.gov.hk/api/get.php?id620-67031langenfull_series1
阅读完成 · 觉得有帮助?