mhpn.cn mhpn.cn

Article

全国行政区划代码表:3050条记录四种格式选型与地址匹配实战

TEMPLATE PREVIEW · 文章页模板示意 · 正文由后台文章数据自动填充 · 配图自动生成
特种作业理论考场全景示意图
简介全国行政区划代码表数据库面向GIS开发、统计分析、地址标准化及物流路径规划等场景的开发者与数据分析人员提供从国家级到县区级的标准化行政编码体系共收录3050条记录。资源包为zip格式内含4个文件涵盖json、xlsx、csv、sql四种主流格式SQL文件可直接导入MySQL、Oracle等数据库进行查询分析JSON以键值对形式便于Web应用与API接口交互CSV适合Excel打开编辑及各类编程语言处理XLSX则以表格形式支持排序、过滤与计算。压缩包整体约201KB体积轻巧便于快速部署。目前已有2026人学习下载适合需要快速接入行政区划数据的开发与统计工作。使用时需注意数据来源于网络整理可能存在误差建议结合权威来源校验并关注行政区划变更带来的更新维护需求。1. 全国行政区划代码表3050 条记录、四种格式到底该怎么选做地址标准化、物流分单或者 BI 看板的朋友大概率都遇到过同一个问题用户填的「广东省深圳市南山区」和系统里的「南山区」对不上或者邮编匹配时发现同一个城市名对应了三个不同的行政代码。这类问题的根子往往不在业务逻辑而在你手里那张行政区划代码表是不是完整、是不是最新、格式是不是顺手。全国行政区划代码表数据库这份资源本质就是把国家到县区级的行政单位编码整理成了一份可直接落库、可解析、可导入 Excel 的数据集一共 3050 条记录同时给了 SQL、JSON、CSV、XLS 四种格式。它适合做 GIS 底表、地址清洗、统计口径对齐、物流路径规划的人也适合刚接触数据库增删改查、想拿一份真实数据练手的新手。下面我按「这份资源怎么用起来」的顺序把选型、导入、校验和踩坑一条条拆开讲。2. 四种格式怎么选从 SQL 建表到 JSON 嵌套的取舍拿到压缩包先别急着全导一遍四种格式对应的是四类完全不同的使用场景选错了后面全是返工。这一章先把每种格式的字段结构、适用边界和导入方式讲清楚再落到具体操作。2.1 先看清字段结构code、level、name 三列是骨架不管哪种格式核心字段基本是三个code行政代码、level级别国家级/省级/市级/县级、name行政区域名称。SQL 和 CSV 里通常是扁平的列JSON 里是键值对对象。理解这一点很关键因为后面做地址匹配时你大概率要按code前两位切省级、前四位切市级这是行政区划代码的编码规则决定的——前两位是省级中间两位是市级后两位是县级一共六位。格式典型字段适合场景导入难度SQLcode, level, name直接建表、联表查询低CSVcode, level, nameExcel 打开、脚本批处理低JSONcode, level, nameWeb 接口、前后端交互中XLScode, level, name人工查看、排序筛选低选型逻辑很简单要进数据库做联表分析就选 SQL要喂给前端或 API 就选 JSON要快速用 pandas 处理就选 CSV要给非技术同事看就选 XLS。别四种都导维护起来是灾难。2.2 SQL 格式导入建表语句和字符集是第一个坎SQL 文件最常见的用法是直接 source 进 MySQL 或 PostgreSQL。但直接导入经常翻车原因是字符集和字段长度没对齐。我一般会先手动建表再导入数据这样可控。-- 手动建表避免导入时字段类型不匹配 CREATE TABLE administrative_division ( code VARCHAR(12) NOT NULL COMMENT 行政代码, level VARCHAR(16) NOT NULL COMMENT 级别国家级/省级/市级/县级, name VARCHAR(64) NOT NULL COMMENT 行政区域名称, PRIMARY KEY (code) ) ENGINEInnoDB DEFAULT CHARSETutf8mb4 COLLATEutf8mb4_general_ci; -- 导入 CSV 数据比直接 source SQL 更可控 LOAD DATA LOCAL INFILE administrative_division.csv INTO TABLE administrative_division FIELDS TERMINATED BY , LINES TERMINATED BY \n IGNORE 1 ROWS;这里code用VARCHAR而不是INT是因为行政代码有前导零的可能用整型会把110000存成110000没问题但某些县级代码如果被当成数字处理前导零会丢。utf8mb4是为了兼容生僻地名里的多字节字符。IGNORE 1 ROWS跳过 CSV 表头如果你的文件没有表头就去掉这行。导入后先SELECT COUNT(*)确认是不是 3050 条数量对不上说明有行被截断或分隔符冲突。2.3 JSON 与 CSV 的解析pandas 和原生解析的差别CSV 用 pandas 一行搞定但要注意编码。国内整理的数据集经常是 GBK 或 UTF-8 with BOM直接读会报UnicodeDecodeError。import pandas as pd # 常见坑编码不对会直接抛异常先试 utf-8-sig df pd.read_csv(administrative_division.csv, encodingutf-8-sig, dtype{code: str}) print(df.shape) # 期望 (3050, 3) print(df[level].value_counts()) # 看各级别分布是否合理 # JSON 解析注意可能是数组或按层级嵌套 import json with open(administrative_division.json, r, encodingutf-8) as f: data json.load(f) # 如果是扁平数组直接转 DataFrame df_json pd.DataFrame(data)dtype{code: str}是血泪经验不加的话 pandas 会把代码列推断成 int64前导零和后续字符串匹配都会出问题。value_counts()用来快速验证数据分布正常情况下省级 30 多个、市级 300 多个、县级 2800 多个如果某一级数量明显异常说明数据有缺失或重复。2.4 XLS 格式的定位别拿它当数据源XLS 最大的价值是给人看不是给程序读。用 openpyxl 或 xlrd 读 XLS 比读 CSV 慢一个数量级而且容易遇到合并单元格、格式行等干扰。我的习惯是XLS 只用来人工核对几条关键记录真正的数据源永远用 CSV 或 SQL。如果你非要用程序读记得指定sheet_name别默认读第一个 sheet 就完事。3. 把代码表接进业务地址匹配、层级查询与增量更新数据导进来只是第一步真正体现价值的是拿它做地址标准化和层级查询。这一章讲三个高频操作用代码前缀做层级过滤、用名称做模糊匹配、以及行政区划变更时怎么增量维护。3.1 用代码前缀做层级查询一条 SQL 搞定省市区行政区划代码的编码规则是「省 2 位 市 2 位 县 2 位」所以查某个省下面所有市直接按前两位过滤就行。这比按名称匹配可靠得多因为名称会有「市」「地区」「自治州」等后缀差异。-- 查广东省44下所有市级单位 SELECT code, name FROM administrative_division WHERE level 市级 AND LEFT(code, 2) 44; -- 查深圳市4403下所有县级单位 SELECT code, name FROM administrative_division WHERE level 县级 AND LEFT(code, 4) 4403; -- 统计每个省下有多少个县级单位 SELECT LEFT(code, 2) AS province_code, COUNT(*) AS county_count FROM administrative_division WHERE level 县级 GROUP BY LEFT(code, 2) ORDER BY county_count DESC;LEFT(code, 2)和LEFT(code, 4)是核心它利用了编码的位置语义。注意level字段的值要和数据里的实际写法一致有的数据集写「省」「市」「县」有的写「省级」「市级」「县级」导入后先SELECT DISTINCT level看一眼别想当然。3.2 名称模糊匹配地址清洗里最容易翻车的一步用户输入的地址千奇百怪「深圳南山区」「南山区」「深圳市南山区」都可能出现。做匹配时不要直接LIKE %南山区%因为「南山区」在多个城市可能存在重名必须结合上级代码缩小范围。import pandas as pd df pd.read_csv(administrative_division.csv, encodingutf-8-sig, dtype{code: str}) def match_district(raw_address, city_code_prefixNone): 按名称模糊匹配县级单位可选按市级代码前缀限定范围 candidates df[df[level] 县级] if city_code_prefix: candidates candidates[candidates[code].str.startswith(city_code_prefix)] # 去掉常见后缀再匹配减少「区」「县」差异带来的漏配 key raw_address.replace(区, ).replace(县, ).replace(市, ) hit candidates[candidates[name].str.contains(key, naFalse)] return hit[[code, name]].values.tolist() print(match_district(南山区, city_code_prefix4403))city_code_prefix这个参数是防重名的关键。不加限定「南山区」可能同时命中深圳、鹤岗等地的同名区。replace去后缀是常见做法但要注意别把「市辖区」这类特殊名称误伤实际项目里我会先跑一遍全量匹配把歧义结果人工确认后再固化规则。3.3 增量更新行政区划变更时怎么不打乱已有数据行政区划不是一成不变的撤县设区、合并、更名每年都有。直接全量替换风险很大因为你的业务表里可能已经存了旧代码。常见做法是加一个is_active或updated_at字段做软更新。-- 加字段标记有效性而不是物理删除 ALTER TABLE administrative_division ADD COLUMN is_active TINYINT DEFAULT 1; ALTER TABLE administrative_division ADD COLUMN updated_at DATE; -- 新版本导入到临时表后对比差异再更新 CREATE TABLE administrative_division_new LIKE administrative_division; -- 导入新数据到 _new 表 -- 找出新增的代码 SELECT code, name FROM administrative_division_new WHERE code NOT IN (SELECT code FROM administrative_division); -- 找出已失效的代码旧表有、新表没有 SELECT code, name FROM administrative_division WHERE code NOT IN (SELECT code FROM administrative_division_new);先对比再更新别直接TRUNCATE重导。业务表里引用了旧代码的外键一旦断裂排查起来非常痛苦。is_active标记法让历史数据还能查到只是不再参与新业务匹配。4. 避坑与排查这份数据集用起来最容易栽的五个地方这一章是我自己踩过的坑按「现象 → 原因 → 解决」写你对着排查能省不少时间。4.1 导入后条数不是 3050现象SELECT COUNT(*)出来只有 2900 多条。原因通常是 CSV 里有字段包含逗号比如名称里带逗号被错误分隔或者文件末尾有空行被跳过。解决用LOAD DATA时检查FIELDS TERMINATED BY是否和实际一致导入前用wc -l看行数CSV 行数应该等于记录数加表头。4.2 代码前导零丢失现象110000变成了110000看着没事但某些代码在 Excel 里被显示成科学计数法或丢了前导零。原因Excel 和 pandas 默认把纯数字列推断为数值型。解决CSV 导入时强制dtype{code: str}Excel 里先把列格式设成文本再打开。4.3 名称匹配到多个结果现象搜「朝阳区」出来北京朝阳和长春朝阳两条。原因行政区划重名是客观存在的不是数据错误。解决匹配时必须带上城市代码前缀或者让用户在候选列表里选别自动取第一条。4.4 字符集乱码现象导入后地名显示成问号或方块。原因源文件是 GBK数据库是 utf8mb4中间没做转换。解决导入前用iconv -f GBK -t UTF-8转一遍或者建表时明确CHARSETutf8mb4导入命令里加CHARACTER SET utf8mb4。4.5 拿旧数据做新业务现象业务上线后发现某些区已经撤并但代码表里还是旧的。原因这份数据来源于网络收集整理更新滞后是常态。解决把它当基线上线前用官方发布的最新代码做一次差异比对重点核对近两年有变更的省份。提示这份数据集明确说明可能存在误差任何涉及合规、统计上报的场景都要以权威来源二次校验别直接拿它当唯一依据。5. 进阶用法用代码表做地址标准化流水线前面讲的都是单点操作实际项目里我会把这份代码表串成一条地址标准化流水线原始地址 → 分词提取省市区关键词 → 按代码前缀逐级匹配 → 输出标准六位代码和规范名称。核心技巧是「逐级收敛」——先匹配省级锁定范围后再匹配市级最后匹配县级每一步都用代码前缀缩小候选集比一次性模糊匹配准确率高得多。import pandas as pd df pd.read_csv(administrative_division.csv, encodingutf-8-sig, dtype{code: str}) def normalize_address(raw): 逐级收敛的地址标准化省 - 市 - 县 result {province: None, city: None, district: None} # 省级按名称包含匹配 provinces df[df[level] 省级] for _, row in provinces.iterrows(): key row[name].replace(省, ).replace(市, ).replace(自治区, ) if key and key in raw: result[province] row[code] break if not result[province]: return result # 市级限定在省级代码前两位内 cities df[(df[level] 市级) (df[code].str.startswith(result[province][:2]))] for _, row in cities.iterrows(): key row[name].replace(市, ).replace(地区, ).replace(自治州, ) if key and key in raw: result[city] row[code] break if not result[city]: return result # 县级限定在市级代码前四位内 districts df[(df[level] 县级) (df[code].str.startswith(result[city][:4]))] for _, row in districts.iterrows(): key row[name].replace(区, ).replace(县, ).replace(市, ) if key and key in raw: result[district] row[code] break return result print(normalize_address(广东省深圳市南山区科技园)) # {province: 440000, city: 440300, district: 440305}这段代码的关键在startswith(result[province][:2])和startswith(result[city][:4])它把每一级的候选集从 3050 条压缩到几十条既快又准。replace链是为了抹平「省」「市」「自治区」「地区」「自治州」这些后缀差异但要注意「内蒙古自治区」这种名称去掉「自治区」后剩「内蒙古」匹配时用户输入里通常也有「内蒙古」所以能命中。验证方法很简单拿一批真实用户地址跑一遍统计province、city、district三级都命中的比例低于 80% 就说明你的后缀处理或关键词提取需要调。从那以后我每次接地址相关的需求都会先把这份代码表导进一个临时库跑一遍全量匹配率再动手写业务逻辑而不是上来就写正则。希望帮到你。本文还有配套的精品资源点击获取

看完文章还有疑问?直接问顾问

三门峡、驻马店特种作业考证问题:报名条件、考试批次、材料整理、证书复审,电话或邮箱都能找到我们,当天回复,企业团报另对接 HR 专人。

预约咨询 18236992212

Keep Reading

继续阅读相关资讯

考试公告、政策解读、行业动态持续更新,考证路上保持关注不踩坑;看完本文想动手报名的,往下看服务流程。

服务窗口递交复审与报考资料

How We Help

看懂文章之后,报名这样走不绕路,材料不返工

三门峡、驻马店两地学员,从咨询到拿证复审的完整路径,四步走完。每一步该准备什么、容易卡在哪,顾问会提前讲清楚,不用自己摸索,也不用被网上各种说法绕晕,更不用怕遇到"免考拿证"的骗子。

1

条件自查

年龄、学历、体检三项硬性条件先过一遍,不符合的讲清楚补救办法,避免材料做了一半才发现报不上名。

2

材料预审

身份证、学历证明、体检报告、照片提前把关,规格不对一次说清,缺项一次补齐,报名窗口一开就能提交。

3

赶批次报名 + 考前辅导

同步河南应急管理厅考试批次,开报即报不拖堂;理论按题库结构梳理重点,实操陪练走一遍考核流程。

4

考后跟踪

成绩查询、证书领取方式、复审到期提醒都记在台账里,企业团报的客户,台账对接到 HR 统一管理。

Renewal Reminder

证书快到期?别等失效才想起来,提前三个月排期

特种作业操作证按周期复审,过期未复审不能继续上岗。把发证日期告诉我们,到期前三个月主动提醒,材料、培训、考试一次性排好,三门峡、驻马店均可办理;企业客户可批量核对在岗人员证书有效期,检查前一次盘清。

查看复审办理流程
特种作业报考与复审材料整理

Next Step

文章看完了,下一步按您的状态选,别一步跨太大

还没报名的、材料在准备的、证书快到期的,对应动作不一样,按自己的阶段对号入座,不用全看一遍。

还没报名:先查条件

年龄、学历、体检三项硬条件先过一遍,再看批次窗口。条件卡住别硬报,先电话问补救办法,确定能报再准备材料,方向感更清楚。

查最近考试批次

材料在准备:先做预审

身份证、学历证明、体检报告、照片规格逐项核对,缺项一次补齐,别等到报名窗口开了才发现材料不对,白白错过这一批。

了解材料预审

证书快到期:提前复审

复审要走培训与考核流程,提前三个月安排最稳妥。把发证日期告诉我们,到期前主动提醒,不用自己记着日子。

复审办理流程

Local Service

三门峡、驻马店,两地都能办,企业个人各有通道

个人学员按批次走,企业客户按排期走,两条流程互不干扰。

三门峡方向

湖滨、陕州、灵宝、渑池、卢氏学员常见诉求是配合项目工期拿证:按最近批次排材料,考前辅导集中安排,理论与实操都有人盯进度,不用自己追着问。

驻马店方向

驿城、平舆、汝南、西平方向工厂与物业岗位占比高,低压电工咨询最多;企业团报可按车间统一建档,复审节点统一提醒,HR 不用逐个追。

企业客户

资质检查、项目备案要核对持证台账。团报通道统一排期、统一培训、档案归口,到期复审批量通知,检查前心里有底。

FAQ

报考前经常被问到的几个问题,一次写清楚

收费、材料、团报门槛——电话里回答过无数遍的问题,这里一次写清楚,不用您再重复问,也不用翻聊天记录找答案,看完就有底。

咨询收费吗?

不收费。报名条件、工种方向、批次窗口这些问题,电话里直接讲清楚,您听完再决定要不要跟着走流程,没有"必须报班"这一说。

材料不齐能先报上名吗?

不建议。报名审核对材料规格卡得严,缺项或照片不合规都会被打回,反而耽误批次。先做材料预审,补齐了再提交更稳妥,窗口开了当天就能报上名。

企业团报最低多少人起?

没有硬性门槛,三五人的班组也能按团报流程走,只是人数越多排期效率越高、档案管理越省事。三门峡、驻马店企业可先电话报人数、说清工期节点谈细节。

这篇文章没解决的问题,电话里说清楚,方案当场给

报名条件、考试批次、材料清单、复审周期——咨询免费,方案当场给。企业团报可统一排期、档案归口,合同与发票流程当面讲清,不用线上扯皮。

咨询电话 18236992212 · 809451989@qq.com · 三门峡 / 驻马店两地均可办理
预约咨询