一字见心,一名见命

中文姓氏开放数据集

把站内 109 个姓氏页里的结构化信息抽出来,做成一份可以直接拿来用的数据:每个姓的普通话读音、得姓时代、得姓始祖、发源地、主要郡望、堂号、全国人口排名与当代人口估算、史籍所见名人,以及一段得姓源流说明。提供 JSON 与 CSV 两种格式,CC BY 4.0 授权,商用、教学、做工具、喂给模型都行。

109姓氏记录
30有全国排名
42有人口数字
109含堂号
16字段

做这份数据的起因很直接:想找一个带拼音、带郡望、带源流说明的中文姓氏表,找了一圈,要么只有「赵钱孙李」的顺序没有解释,要么是残缺的爬虫结果,要么授权不明。索性自己整理一份,顺手放出来。

一、字段说明

每条记录 16 个字段,字段名用英文、内容用中文,方便程序处理也方便人读。数组类字段(郡望、堂号、名人)在 CSV 里以竖线 | 分隔。rank 是给人看的展示串,rank_num 才是排序用的整数;要按人口排队直接用后者,不要去正则解析前者。

字段含义说明
surname汉字姓氏单字或复姓,如「李」「欧阳」
pinyin普通话读音带声调符号,如 lǐ
era得姓时代该姓主体形成的朝代,如 商末 / 西周 / 春秋
ancestor得姓始祖史籍所载受姓之祖,异说并存时并列
origin发源地今地名,便于对应现代行政区
junwang主要郡望数组,魏晋至唐衡量门第的坐标
tanghao堂号数组,含名称与由来
rank全国人口排名按 2020 年公安部户政管理研究中心全国姓名报告,该表只排前 100 名、不列人数;无排名则为空
rank_num排名的数字版整数,如 2;无排名为 null。排序、做图用这个,不要自己解析 rank
population当代人口展示串,如「约 1.05 亿人」;无统计时为「人数稀少」或空。与 rank 不同源,见 population_source
population_est人口估算的整数版单位:人,如 101000000;「人数稀少」与空值均为 null,不补 0
population_source人口数字的来源口径mps2020=2020 年公安部报告原文数字(仅复姓);estimate=其他统计或估算,年份不一;qualitative=只有「人数稀少」定性描述;空=无数据
notables史籍所见名人数组,用于感受该姓在真实语境中的语感
origin_note得姓源流一段说明,交代姓氏来源与主要支系
url详情页该姓在站内的完整起名指南

当前版本 v2.1(2026-11-15):新增 population_source 标注人口数字的来源口径;此前 v2.0(2026-11-15)新增 rank_num 与 population_est,v1.0(2026-11-13)为首版。字段只增不改,旧读法继续可用。

二、覆盖范围与已知缺口

这 109 个姓不是按人口取的前 109 名,而是按站内已经写完详情页的姓收录的,所以既有李、王、张、刘这类大姓,也有百里、单于、淳于这类罕见复姓。读数据前请先看清三个缺口:

三、常见问题

这 109 个姓是按人口选的,还是按什么选的?

都不是按人口选的。收录范围是站内已经写完详情页的 109 个姓,所以既有李、王、张、刘这类大姓,也有万俟、尉迟、长孙这类罕见复姓——79 个单字姓、30 个复姓。想要「人口前 109 名」的名单,这份数据不是,也不打算是:那种榜单网上已经很多,缺的是带源流解释的那种。

能商用吗?要怎么署名?

能。CC BY 4.0 允许复制、修改、商用和再分发,唯一要求是署名并附许可链接。写在 README 里一行就够:姓氏数据来自 中文起名网 https://naming-cn.pages.dev/opendata(CC BY 4.0)。

为什么只有 30 个姓有全国排名?

因为官方只发布这么多。2020 年公安部户政管理研究中心的全国姓名报告,「百家姓」表只排前 100 名、表内不列人数,第 101 位之后没有公开统计。另有 12 个复姓(欧阳、诸葛一类)该报告在「常见复姓」一节单列了人数,但排不进前 100,于是有人口数字、没有排名;剩下 67 个姓没有任何数字。这些字段一律为 null,不插值、不补 0。

为什么按人口排序会出现排名倒挂?

因为这两列不同源。排名来自 2020 年报告,30 个单姓的人口数字来自其他年份的统计与估算,放在一起排序会出现 5 处相邻倒挂:林(第 18 位,约 1420 万人)高于 何(第 17 位,约 1300 万人);高(第 20 位,约 1450 万人)高于 罗(第 19 位,约 1400 万人);宋(第 24 位,约 1120 万人)高于 谢(第 23 位,约 1050 万人);韩(第 27 位,约 980 万人)高于 许(第 26 位,约 900 万人);冯(第 29 位,约 950 万人)高于 邓(第 28 位,约 920 万人)。这不是排版错误,而是数据源的年代差异,已用 population_source 字段标出。要排序请用 rank_num,population_est 只适合看量级。

既然有 rank_num 了,为什么还留着 rank?

rank 是姓氏详情页上显示的那串中文(「全国第 2 位」),留着是为了让数据和读者在页面上看到的一致;rank_num 才是给代码排序用的整数。两个都留,比要求每个使用者自己去正则解析中文数字便宜得多。

前端能直接 fetch 吗?需要 key 或注册吗?

都不需要。JSON 与 CSV 都带 Access-Control-Allow-Origin: *,浏览器里直接 fetch 即可,无 key、无注册、无代理、无限流。

「人数稀少」为什么不按 0 处理?

因为它不是 0。「人数稀少」表示该姓确有传承、但人口少到没有公开统计,属于「已知很少、数值未知」,当前有 18 条这样记录。折成 0 会让求和、均值、排序全部失真,所以 population_est 保持 null,只在 population 里保留这段原话,让人知道「为什么没有数字」。

能用于学术引用吗?准确性怎么保证?

全国排名与 12 个复姓的人数引自公安部 2020 年全国姓名报告,可逐字核对;30 个单姓的人口数字来自其他统计与估算、年份不一,已用 population_source 标注,引用请注明口径。郡望依据《新唐书·宰相世系表》《元和姓纂》等姓氏书,堂号取自各族族谱与祠堂记载。姓氏源流本身多源并存,数据并列保留异说、不做裁决,所以「始祖」列两个人不是笔误。用于学术研究请回到原始文献核对;发现错漏欢迎在留言板指出,核实后发布新的版本号。

四、下载

两个文件内容等价,按用途选一个。JSON 保留了数组结构,CSV 拍平了,后者用 Excel 直接打开不会乱码(UTF-8 带 BOM)。

两个文件都允许跨域读取(Access-Control-Allow-Origin: *),前端可以直接 fetch,不需要自建代理:

const rows = await fetch('https://naming-cn.pages.dev/data/surnames.json').then(r => r.json());

// 按全国人口排名排序(用 rank_num,不用 rank)
rows.filter(r => r.rank_num).sort((a, b) => a.rank_num - b.rank_num);

// 查一个姓:rows.find(r => r.surname === '李')
// 是否有人口数字:r.population_est !== null

五、许可与引用

数据以 CC BY 4.0 授权:可以复制、修改、商用、再分发,唯一要求是署名并注明许可。建议这样引用——

中文起名网(2026).《中文姓氏开放数据集》.
https://naming-cn.pages.dev/opendata(CC BY 4.0)

如果是用在程序里,README 或关于页写一行就够:姓氏数据来自 中文起名网 https://naming-cn.pages.dev/opendata(CC BY 4.0)。

六、109 条记录预览

下表就是数据集本身,可以直接在页面上筛。输入汉字、拼音或朝代都能匹配。

共 109 条

姓氏读音得姓时代发源地人口排名当代人口
白bái春秋河南息县——
蔡cài西周河南上蔡——
曹cáo西周山东定陶全国第 30 位约 790 万人
单于chán yú汉代内蒙古—人数稀少
陈chén西周河南淮阳全国第 5 位约 6300 万人
程chéng西周河南洛阳——
淳于chún yú西周山东安丘—人数稀少
崔cuī西周山东章丘——
戴dài西周河南商丘——
邓dèng商代河南邓州全国第 28 位约 920 万人
丁dīng西周山东淄博——
董dǒng上古山西闻喜——
东方dōng fāng西汉山东—人数稀少
杜dù西周陕西西安——
端木duān mù春秋河南浚县—人数稀少
独孤dú gū北魏山西大同—人数稀少
范fàn春秋河南范县——
方fāng上古河南洛阳——
冯féng西周陕西兴平全国第 29 位约 950 万人
傅fù商代山西平陆——
高gāo春秋山东长清全国第 20 位约 1450 万人
公孙gōng sūn春秋河南—人数稀少
公西gōng xī春秋山东—人数稀少
郭guō西周河南荥阳全国第 16 位约 1580 万人
韩hán战国陕西韩城全国第 27 位约 980 万人
郝hǎo商代山西太原——
何hé战国末安徽庐江全国第 17 位约 1300 万人
赫连hè lián十六国陕西靖边—人数稀少
胡hú西周河南淮阳全国第 15 位约 1650 万人
黄huáng夏商河南潢川全国第 7 位约 3300 万人
皇甫huáng fǔ西周河南民权—约 6.4 万人
贾jiǎ西周山西襄汾——
江jiāng西周河南正阳——
姜jiāng上古陕西宝鸡——
蒋jiǎng西周河南固始——
金jīn上古山东曲阜——
康kāng西周河南禹州——
孔kǒng春秋河南商丘——
李lǐ商末河南鹿邑全国第 2 位约 1.01 亿人
梁liáng西周陕西韩城全国第 22 位约 1130 万人
廖liào商周河南唐河——
林lín商末河南卫辉全国第 18 位约 1420 万人
令狐líng hú春秋山西临猗—约 5.5 万人
刘liú夏代河南偃师全国第 4 位约 7200 万人
卢lú春秋山东长清——
陆lù战国山东乐陵——
罗luó商周湖北宜城全国第 19 位约 1400 万人
吕lǚ上古河南南阳——
马mǎ战国河北邯郸全国第 13 位约 1910 万人
毛máo西周陕西岐山——
万俟mò qí北魏山西—人数稀少
慕容mù róng三国辽宁义县—约 0.5 万人
南宫nán gōng春秋河南—人数稀少
欧阳ōu yáng战国浙江湖州—111.2 万人
潘pān西周河南荥阳——
彭péng上古江苏徐州——
濮阳pú yáng春秋河南濮阳—人数稀少
秦qín西周甘肃天水——
邱qiū西周山东淄博——
任rén上古山东济宁——
上官shàng guān战国河南滑县—约 8.8 万人
沈shěn西周河南平舆——
申屠shēn tú西周陕西—约 1.9 万人
石shí春秋河南淇县——
史shǐ西周陕西——
司马sī mǎ西周河南武陟—约 2.3 万人
宋sòng西周河南商丘全国第 24 位约 1120 万人
苏sū商代河南温县——
孙sūn春秋山东惠民全国第 12 位约 1940 万人
太史tài shǐ西周山东—人数稀少
谭tán西周山东章丘——
唐táng西周山西翼城全国第 25 位约 1010 万人
澹台tán tái春秋山东—人数稀少
田tián春秋山东淄博——
拓跋tuò bá北魏内蒙古—人数稀少
汪wāng春秋山东——
王wáng春秋河南洛阳全国第 1 位约 1.05 亿人
完颜wán yán辽金黑龙江—约 0.6 万人
魏wèi战国山西芮城——
闻人wén rén春秋山东—人数稀少
吴wú商末江苏无锡全国第 9 位约 2780 万人
夏xià夏代河南禹州——
夏侯xià hóu西周山东—约 1.1 万人
萧xiāo春秋安徽萧县——
谢xiè西周河南南阳全国第 23 位约 1050 万人
熊xióng商末湖北秭归——
徐xú夏代江苏泗洪全国第 11 位约 2020 万人
许xǔ西周河南许昌全国第 26 位约 900 万人
轩辕xuān yuán上古河南新郑—人数稀少
薛xuē夏代山东滕州——
阎yán西周山西运城——
杨yáng西周山西洪洞全国第 6 位约 4600 万人
姚yáo上古山东菏泽——
于yú西周河南沁阳——
余yú春秋陕西凤翔——
袁yuán春秋河南淮阳——
尉迟yù chí北魏山西大同—约 0.4 万人
宇文yǔ wén北魏内蒙古—人数稀少
曾zēng夏代山东苍山——
张zhāng上古河北清河全国第 3 位约 8500 万人
长孙zhǎng sūn北魏山西大同—约 0.3 万人
赵zhào西周山西洪洞全国第 8 位约 2860 万人
郑zhèng西周陕西华县全国第 21 位约 1240 万人
钟zhōng春秋安徽凤阳——
周zhōu西周河南汝南全国第 10 位约 2680 万人
朱zhū西周山东邹城全国第 14 位约 1810 万人
诸葛zhū gě西汉山东沂南—约 4.8 万人
宗政zōng zhèng汉代陕西—人数稀少
邹zōu战国山东邹城——

数据来自本站 109 个姓氏详情页的整理。全国排名与复姓人数引自 2020 年公安部户政管理研究中心全国姓名报告;单姓人口数字来自其他统计与估算、年份不一,已在 population_source 字段中标注,请勿当作官方数字引用。郡望堂号引自《新唐书·宰相世系表》《元和姓纂》等姓氏书与各族族谱。姓氏源流存在异说,本数据集并列保留、不做裁决,如需用于学术研究请核对原始文献。发现错漏欢迎在留言板指出,核实后会更新版本。

继续了解