邮储银行网点数据深度解析:县域金融与空间分析应用

发布时间:2026/10/17 0:28:00
邮储银行网点数据深度解析:县域金融与空间分析应用 做金融研究或者县域经济分析的人大概率都翻过各类数据平台的银行网点数据。其中“CnOpenData 中国邮政储蓄银行网点信息数据”这个名字看着像一条普通的数据库目录实际上背后信息量不小。我最早接触这份数据时是想研究县域金融覆盖度当时找遍了能找到的银行网点资料最后发现邮储银行的网点数据反而是最值得细挖的一块网点数量多、下沉深、层级复杂字段里藏了很多可做的文章。这篇就把我对这类数据的理解、处理经验和踩坑心得都写出来给同样在跟网点数据较劲的朋友做个参考。1. 网点数据是什么先拆穿标题里的信息量1.1 一张按网点颗粒度整理的银行基础档案很多人第一次看到“网点信息数据”这几个字下意识会觉得这不就是个通讯录吗网点名字加地址加电话有什么好研究的。还真不是。银行网点信息数据不是业务流水不是客户明细它是按“物理网点”这个粒度组织的基础档案。每一条记录代表一个真实存在的营业机构字段通常覆盖网点名称、机构编码、所属省市县、详细地址、经纬度坐标、网点类型、联系电话、营业状态等。这类数据的本质是银行的“物理存在”在空间上的投影。它不像交易数据那样高频变动也不像财报数据那样高度结构化它更像一张带地理位置标签的机构清单。正因为如此它天然适合跟地理信息、人口数据、经济统计数据做关联分析。你在做普惠金融、金融地理、区域经济差异、网点选址这些问题时少不了一张干净的网点底表。对很多研究来说这张表不是终点但绝对是绕不开的起点。这里要特别强调一个容易被忽略的点银行网点信息数据和使用者自己从官网逐个页面抓下来的网点查询结果看起来都是“网点列表”质量差异却很大。平台整理的版本一般做了字段规整、行政区划对应、坐标统一等预处理省去了大量反复清洗的功夫。不过拿到手也并不意味着能直接用后面我会展开讲清洗步骤总而言之这是一份“可用的原料”不是“做好的菜”。1.2 邮储银行的网点数据特殊在哪里既然市面上有那么多银行的网点数据为什么专门把“中国邮政储蓄银行”拿出来说因为邮储银行在国内银行体系里的位置太特殊了连带着它的网点数据也跟着特殊。第一是覆盖面。邮储银行的网点数量长期位居全国前列而且不是只集中在城市县和乡镇一级的网点数量极其庞大。四大行这几年在县域不断撤并网点邮储反而保留了大量的基层营业所。你想研究农村金融、县域信贷可得性、乡镇居民的基础金融服务没有比邮储银行网点更适合的样本了。很多经济欠发达县可能找不到某家股份制银行的一个网点但几乎不可能找不到邮储银行。第二是层级复杂。邮储银行的机构层级是“总行—一级分行—二级分行—一级支行—二级支行—营业所/储蓄所”这样的长链条。不同层级对应不同的业务权限比如贷款审批权限可能只在支行及以上营业所更多承担储蓄和汇兑功能。网点数据里的“类型”字段如果利用得好就能构造出“服务深度”这个维度的变量。这一点在做金融服务质量研究时特别有价值。第三是“自营”和“代理”的区分。邮储银行很早就和邮政系统共用基层网络一部分网点是银行自营另一部分则是邮政企业代理。两种网点对外都挂着邮储的牌子但业务范围、人员管理归属都存在差异。具体到数据里不一定每次都会明确标出“代理”字样往往需要结合网点名称、机构编码特征去判断。这个细节很多人没注意到但它直接影响分析结论。比如你要测算邮储银行自身的服务供给能力就不应该把代理网点一股脑算进去你想测算邮政体系对农村金融的渗透作用反而得把代理网点当作核心样本。2. 为什么值得花时间整理应用场景与研究价值拆解2.1 学术研究视角金融地理与普惠金融研究中的“基础设施数据”做学术研究的人对这类数据的价值感知应该最直接。金融地理学里有个经典问题金融资源在哪里聚集在哪里缺位。要回答这个问题网点数据是最朴素也最可信的证据。你不会用存款余额去度量“金融地理存在感”因为余额会受经济规模影响但你会用“每万人拥有网点数”、“每百平方公里网点数”、“最近网点距离”这类指标来度量金融基础设施的可触达性。我在实际项目中用过这套思路。当时做一个省域内的金融可得性分析核心做法是先把邮储网点按县域聚合算出每个县的网点总量再结合各县人口和面积构造出人均密度和地理密度两个指标。接下来用空间统计里的核密度分析观察网点是不是集中在某个核心区还是均匀铺开。最后把网点数据和乡镇人口数据做最近邻匹配算出每个乡镇到最近邮储网点的车行距离。这套组合打下来县域金融资源分布的全貌就出来了。网点数据在整个链条里是唯一的空间数据来源少了它后面所有分析都无从谈起。学术研究还特别看重“可比性”和“可复现性”。邮储网点数据覆盖面广、口径相对稳定用同一套标准去处理不同年份的数据就能做出面板数据观察网点进入退出和区域金融服务的动态变化。对于发表在期刊上的论文来说这种可复现性很重要。审稿人问你“网点数据怎么来的、口径是什么”你只要能讲清楚来源和处理逻辑数据层面就比较扎实。2.2 商业决策视角网点选址、渠道评估与竞品分析学术之外商业场景对这个数据的需求同样旺盛。银行做网点布局优化时需要知道现有网点的空间分布与业务辐射范围非银行金融机构想跟邮储谈渠道合作最关心的就是对方网点在你目标区域有没有覆盖做快消、家电、保险代理的公司也会把银行网点当作一个“渠道密度”的参照系。我有一次帮某消费品企业做过一个区域渠道评估项目客户想在县域市场铺服务网点但内部对“哪些县值得优先进入”争议很大。最后我们引入了几家银行的网点数据作为“区域金融活跃度”的代理指标其中邮储网点就是最重要的变量。原因很简单邮储网点在县和乡镇的有无基本能代表这个区域的基础金融服务底盘有底盘的地方消费能力和商业环境通常也相对可靠。把邮储网点密度和人口数据叠加后客户很快就锁定了几个之前被忽视的潜力县。商业分析里的优势在于网点数据可以和外部数据无限叠加。叠加路网数据可以算交通便利度叠加夜间灯光数据可以判断区域经济活跃度叠加周边小区和写字楼的POI数据可以评估客群潜力。数据是死的应用场景是活的。而邮储网点因为下沉深、覆盖广在做低线城市和县域市场分析时是其他银行数据替代不了的。2.3 多源数据融合从一张表变成一个指数单独看网点数据它只是一张机构清单但一旦和其他数据源融合它的价值会呈指数级放大。常见的做法是构建“金融服务可得性指数”。基本思路是把网点数据作为分子端把人口数据、面积数据作为分母端得到密度指标再把道路网络、地形起伏作为阻抗因子计算可达性指标最后把多个指标做标准化合成得到一个区域金融覆盖的综合评分。这个指数做成之后往上可以跟区域经济增长数据做相关性分析往下可以细分到乡镇街道作为精细化运营的依据。空间分析里还有几个经典操作值得一提。比如用Voronoi图给每个网点划分服务区再统计每个服务区内的人口总量或者以网点为圆心做1公里、3公里、5公里缓冲区计算缓冲区内的居住人口和商户数量。这些操作本质上都在回答同一个问题一个网点到底辐射了多少人。只有网点数据精度足够高坐标足够准算出来的辐射范围才有意义。3. 实操从原始数据到可分析样本3.1 第一步字段盘点与数据体检拿到数据之后第一件事不是做图不是跑模型而是老老实实做字段盘点。我一般用pandas直接读进DataFrame先看形状、列名、数据类型和缺失情况。数据集的来源平台不同字段命名方式也有差异但核心信息逃不开那几个网点名称、所属区域、详细地址、经度纬度、网点类型、营业状态。先把底数摸清楚后面才能少走弯路。import pandas as pd df pd.read_csv(postal_savings_branches.csv, encodingutf-8) print(行数, df.shape[0]) print(列数, df.shape[1]) print(列名, df.columns.tolist()) missing df.isnull().sum() print(missing[missing 0])这段代码跑完之后我主要看三个地方。一看数据量是否符合预期比如某个省应该有几百个网点结果只有几十条那大概率是数据源本身有截断。二看缺失集中的字段比如经纬度缺失比例超过10%后续就得预留地理编码的时间。三看“网点类型”这个字段的取值分布如果全是同一个值说明字段没有区分度后面做网点分级就得想别的办法。这个体检过程看起来简单却能提前暴露大部分问题。还有一个细节中文数据文件经常遇到编码问题。读取时指定encodingutf-8仍然报错的话可以换encodinggbk。不同平台导出的文件编码习惯不一样多试两次就能解决。3.2 第二步地址清洗与行政区划规整地址字段是所有网点数据里最让人头疼的部分没有之一。这份数据的地址写法通常还比较规整但依然逃不过几个典型的毛病省市区层级重复、括号里的补充说明、门牌号缺失、村级地址用简称。“北京市北京市朝阳区某某街道某某路1号”这种层级重复是常见问题地址末尾带着“营业厅”“支行”这样的用途标注也很常见还有地址写“某某乡政府旁”这种相对位置描述精确地理编码基本没戏。我的清洗流程一般分三步。第一步是去除明显冗余信息把括号内容、连续空白、语气助词都清掉第二步是标准化行政区划前缀确保“省、市、区/县、乡镇/街道”的层级结构完整第三步是提取关键地名词典把常见路名、镇名、村名识别出来为后续地理编码提供候选关键词。import re def clean_address(addr): if not isinstance(addr, str): return addr re.sub(r[(].*?[)], , addr) # 去掉括号注释 addr re.sub(r\s, , addr) # 去掉空白字符 addr addr.replace(省省, 省).replace(市市, 市) return addr.strip() df[addr_clean] df[地址].apply(clean_address)行政区划规整是另一个容易被忽略的环节。中国行政区划一直在调整撤县设区、乡镇合并、村改居这些变动都会导致同一地址在不同年份归属不同。如果你拿到的数据是历史年份的一定要先确认当时的行政区划代码表不能直接用现在的代码去匹配。否则做面板分析时同一个乡镇在前后两个年份可能对应两个不同的代码数据对不上还找不到原因。3.3 第三步坐标校验与空间匹配坐标是整个数据里最值钱的字段也是最需要小心对待的字段。拿到经纬度后我建议先做一个粗筛看看坐标点是不是都落在目标范围内。比如分析单位是中国大陆那经度应该在73到135之间纬度在18到54之间如果出现经度大于180或者纬度接近0的点说明坐标已经错位了。另一个经典问题是坐标系不统一。国内公开数据里常见WGS-84和GCJ-02两种坐标系两者相差几百米到一千米不等。地图显示和空间分析如果混用了两套坐标系结果会出现肉眼可见的偏移。我遇到过一份数据网点坐标在地图上整体偏移了大概500米排查半天发现是坐标系混用导致。解决办法是拿到坐标时先确认坐标系来源如果拿不准可以抽样网点地址跟地图影像上的实际位置做交叉验证。几个点对应不上就先别急着往下分析。如果原始数据里只有地址没有经纬度那就需要做地理编码。批量地理编码经常遇到失败率高的问题尤其是村级地址和偏远乡镇地址。我一般会先按省份分包用高德或百度这类地理编码服务商逐个请求同时设置失败重试机制。地址解析不到精确点位时退而求其次匹配到乡镇街道级别的坐标用坐标所属的乡镇区域参与后续分析精度虽然低一点但总比丢掉样本强。from math import radians, sin, cos, sqrt, atan2 def haversine(lat1, lon1, lat2, lon2): r_lat1, r_lon1, r_lat2, r_lon2 map(radians, [lat1, lon1, lat2, lon2]) dlat r_lat2 - r_lat1 dlon r_lon2 - r_lon1 a sin(dlat / 2) ** 2 cos(r_lat1) * cos(r_lat2) * sin(dlon / 2) ** 2 return 6371.01 * 2 * atan2(sqrt(a), sqrt(1 - a))坐标匹配阶段还可以计算每个网点距最近城市的距离、距最近铁路站点的距离这些派生距离变量后续都能用作解释变量。但前提是坐标本身得可靠坐标一偏所有距离计算都跟着偏。3.4 第四步网点类型分桶与指标派生清洗完地址、校验完坐标数据仍然只是“能用”还谈不上好用。真正让这份数据产生分析价值的是派生指标。我通常会先对网点类型做分桶处理再结合外部数据计算密度类和可达性类指标。网点类型分桶的逻辑很简单根据原始数据里的类型字段把它归并成三到四类。比如“营业所”“储蓄所”归为“基础储蓄类”“支行”“分行”归为“综合服务类”“代理营业所”单独成一类“代理类”。这么做的目的是为了以后在分析里可以进行“全部门店统计”和“自有门店统计”两组口径的对比。需要严谨结论时两组口径分别跑一遍往往能发现不少有意思的差异。指标派生这块常用组合有这么几组网点数据加上人口数据做“每万人网点数”加上面积数据做“每百平方公里网点数”加上乡镇中心坐标做“各乡镇到最近网点的平均距离”。这些都是普惠金融研究里的经典指标也是很多论文被引最多的结果。# 按县域聚合网点数量 county_stats df.groupby(县代码).agg( 网点数(网点名称, count), 综合网点数(类型桶, lambda x: (x 综合服务类).sum()), 经度均值(经度, mean), 纬度均值(纬度, mean) ).reset_index()这段代码处理完后你就拥有了一张县域级别的网点统计表可以跟统计年鉴里的经济数据直接做匹配。整个处理链路走下来这份网点数据才真正具备了进入模型和报告的条件。4. 常见问题与排查技巧实录4.1 网点更名、迁址与机构合并导致的对不齐问题做面板数据或者多年度对比分析时最头疼的事情就是同一个网点在不同年份的“长相”完全对不上。邮储银行这些年经历了多次机构改制很多原来的储蓄所升级成了支行名称变了有些网点因为城市规划搬了地址还有网点在邮政和银行体系之间划转数据记录里的机构编码都变了。我处理这类问题时用的方法是“名称匹配地址模糊匹配人工抽检”三层验证。先按网点名称精确匹配找出连续年份可以对应上的样本再将匹配不上的记录用地址关键字段做模糊匹配比如镇名和路名完全一致但门牌号不同就认为大概率是同一个网点最后再对模糊匹配结果做人工抽检逐个确认。做面板数据时还有一个建议不要只盯着网点名称做唯一键。名称会改地址会动但比较稳定的往往是“区域方位类型”这个组合。我在实际项目里经常构造一个“乡镇名路名关键词网点类型”的组合键匹配效果比单一字段强很多。4.2 地址口径混乱与地理编码失败地址口径混乱在网点数据里太常见了。同一个镇有的记录写成“某某镇”有的写成“某某乡”实际上行政区划已经调整过同一栋楼一个记录写“某某路1号”另一个写“某某路1号某某大厦一层”。这些细节不处理地理编码的准确率就上不去。批量地理编码失败时我常用的一个兜底方案是“逐级降精度匹配”。先尝试精确解析详细地址失败了就改用“省市区县乡镇”这个组合去请求解析服务再失败就只保留区县级别坐标。这样虽然部分网点只能匹配到县域中心但分析时可以用“该网点位于某县”这个二元变量总比直接丢弃样本好。这个方案看起来简单在实际项目里能救回百分之二三十的记录。4.3 坐标精度不足与位置漂移坐标精度不足的问题在处理一些历史版本数据时格外突出。有些网点坐标实际上并不是网点的精确位置而是所在乡镇或街道的中心点。用这种数据做缓冲区分析和最近邻计算结果会系统性偏差。我一般的做法是抽样验证。随机抽取几十个网点把坐标落在高精度地图影像上逐个看是不是在建筑物轮廓内。如果大量样本点落在道路中间、农田里或者远离居民区的位置那就要怀疑坐标精度了。对于明显偏移的点可以用地址反查修正或者干脆剔除后做鲁棒性检验确保主要结论不会因为坐标问题而改变。4.4 营业状态与网点性质过滤网点数据的“营业状态”字段很容易被忽略。有些网点已经暂停营业了但名单还留在数据里分析时如果不做过滤就会高估该区域的金融服务供给水平。我在处理时都会先看一眼状态字段的取值分布把“暂停营业”“注销”“迁址中”这类状态单独标记出来默认情况下只分析“正常营业”的网点。还有一个前面提到的性质过滤问题自营网点和代理网点要不要一起统计。这个完全取决于研究问题没有标准答案。但我的建议是永远跑两套口径一套含代理一套不含代理在论文或者报告里明确说明用的是哪一套。如果两组口径的结论方向一致说明结论比较稳健如果差异明显那这个差异本身就是一个值得写进报告里的发现。5. 再往前走一步从“网点表”到“研究对象”5.1 时间维度构建网点进入退出的动态面板如果你的手头有多个年份的网点数据不要只做静态截面分析完全可以做出动态视角。把各年份的网点名单放在一起做集合运算就能得到哪年新开了多少网点、哪年关闭了多少网点。再把这些事件和区域人口增长、经济发展数据放在一起做关联分析就能回答类似“网点扩张是跟着人口走还是跟着产业结构走”的问题。5.2 空间维度计算服务半径与人口覆盖空间维度的玩法更多。之前提到过Voronoi图划分服务区和缓冲区分析这两个方法都能估算单网点的潜在服务人口规模。叠加人口栅格数据后还可以进一步计算“金融服务空白区”的面积和人口这个指标对县域规划和商业选址都有参考价值。做这类分析时需要用到GIS工具和空间计算库但思路并不复杂每个网点都有一个辐射范围范围里人口的多少就是它潜在价值的大小。5.3 业务维度结合网点属性做功能分层最后一个扩展方向是根据网点属性做功能分层。不是所有网点都能办理贷款和理财综合型支行和基础储蓄所的客户服务能力差别很大。如果把网点类型、营业面积、人员配置如果有的话这些字段组合起来就能给每个网点打一个“服务能力分”再把这个分数作为加权值去做区域金融服务的综合评价。相比简单数网点个数这种加权分析能揭示更细的问题某个区域虽然网点不少但高服务能力的网点占比很低居民想办复杂业务还得跑很远。我自己做这类数据最大的体会是真正花时间的不是跑模型而是把地址搞清楚、把坐标弄准确、把口径想明白。很多人拿到的数据源差不多最后分析水平却差出一大截差的就是这些不太起眼的基础工作。最后分享一个小技巧。做网点数据可视化时别一上来就画全量散点图那只会看到一团密密麻麻的点。先按地市或者区县做聚合用聚合值画分级统计图整体格局一目了然再对重点区域做局部放大落点看细节。这样由面到点地看数据很容易在汇报里讲出故事感。这份邮储网点数据后续还可以继续叠加工商企业数据、土地交易数据、人口流动数据做空间上的交叉验证扩展空间还很大。基础数据就摆在那里能挖出什么很大程度上取决于愿意花多少心思在预处理上。