1969年前中国历史地震目录:字段拆解、数据清洗与典型应用
搞地震数据处理或者地质灾害分析的人大概都体会过翻历史资料的痛苦纸质地方志、散落的档案、不同年代出版的地震目录汇编格式口径五花八门连地震时间都有农历公历、地方时区之分。我去年做区域地震活动性分析的时候前期最耗时的反而是数据整理直到拿来了CnOpenData的这份中国1969年前历史地震目录信息表整个数据准备周期一下子缩短了大半。这篇就围绕这份数据集聊聊它到底装了什么内容、字段是怎么组织的、使用时有哪些容易踩的坑以及我实际清洗分析过程中的一些具体操作希望能给正在找历史地震数据的人省点时间。1. 这份数据到底装了什么1.1 1969年这个时间分界线是怎么来的先解释一个最直观的问题为什么偏偏是1969年之前。这个时间节点并不是拍脑袋定的它跟我国地震观测能力的转折有直接关系。在上世纪六十年代后期之前国内虽然已经有了一些零散的地震台站比如东部沿海城市在二十世纪初就开始有仪器记录但整体覆盖范围很小台网没有形成统一的运行规范和编目标准各地记录到的地震参数经常对不上。而到了1969年前后国家层面的地震观测台网逐步走向统一调度地震目录的编目口径开始趋于一致震级测定、定位方法也有了相对统一的流程。换句话说1969年之后的目录来自仪器观测为主、口径相对统一的时代而1969年之前的地震记录来源复杂、测定方法多样恰恰是最需要整理和标注源信息的部分。这份目录就是把这些早期地震事件归拢成结构化表格的成果。它的时间跨度覆盖了从有文字记载以来一直到1969年的漫长时期空间范围聚焦中国大陆及周边区域。对做研究的人来说1969年以前的记录恰恰是研究长期地震活动规律所必需的——只靠现代几十年的仪器记录很难看清大地震的复发周期和空间迁移规律。1.2 这份数据的核心价值与适用人群历史地震目录的价值在于把史料变成数据。原始史料里的地震记载长什么样很多地方志里的记载是某县地大震墙屋倾颓压死人畜无算这种定性描述没有仪器参数没有经纬度更没有震级。要把这些信息变成可供统计分析的量化数据需要做大量考证工作确定发震年份、判断震中大概位置、根据破坏记载的范围反推震级和烈度。所以这份目录解决的核心问题是把一百多条甚至更多的历史地震事件整理成包含时间、地点、震级、烈度等关键字段的表格让你可以直接用数据分析工具去处理。适合的人群很明确做地震危险性评估、区划研究的工程师和研究人员需要长历史目录来估计地震复发周期做灾害史、历史地理研究的学者需要把地震事件和历史文献记载对应起来做地质相关课程设计、论文分析的学生需要一个结构可靠的基础数据集作为分析起点做数据可视化和科普内容的人想展示历史地震的时空分布。2. 字段结构拆解每条地震记录里有什么2.1 核心字段及含义拿到数据集第一步肯定是看字段结构。这类历史地震目录常见的字段大致如下表所示你拿到手后可以逐一核对字段类别典型字段说明时间信息年、月、日、时、分部分早期记录只有年月甚至只有年份空间信息经度、纬度早期记录精度较低可能只精确到度震级震级数值、震级类型常见有面波震级、体波震级、里氏震级等烈度震中烈度通过历史破坏记载估算多为罗马数字或整数值震源深度深度值早期记录多缺失仪器记录后才有系统深度地点参考地名可能包含历史地名与现代地名对照来源史料来源或参考文献用于追溯数据出处方便核验备注破坏情况、余震说明部分目录会描述具体震害信息不同版本的目录字段命名可能差异很大有的叫震级Ms有的直接写震级有的还会多出等震线面积有感范围这类字段。我的建议是第一步先打印字段清单逐个对照数据说明文档确认含义尤其要确认经度纬度的坐标系统是不是同一套。2.2 震级与烈度的换算逻辑历史地震没有仪器记录那震级是怎么来的这是理解这份数据的关键。早期目录里很多震级并不是直接测出来的而是通过震中烈度或者等震线资料反推的。烈度反映的是地震对地表和建筑物的破坏程度可以通过史料中的描述来进行评定比如房屋倒塌十之二三地裂数尺涌沙出水这类记载可以和烈度评定标准相对应。有了烈度之后再通过经验公式转换成震级。常见的经验关系式大致形如M a × I0 b不同的研究区域和资料年代会给出不同的系数。这里要特别注意这种换算得到的震级本身带有不小的不确定性同一历史地震在不同目录里震级相差0.3到0.5级是很正常的。所以我在分析时一般不会把历史地震的震级当成精确值而是当作一个量级级别的估计。2.3 历史地名的处理历史地震地点记录还有个特殊问题地名演变。史料里记载的县名、府名、州名跟今天完全不是一回事同一地点在不同朝代还可能反复改名。比较好的目录会同时给出历史地名和现代地名甚至附上对应的经纬度。如果你拿到的表里只有历史地名就要另外准备一份历史地名辞典做映射。我自己的习惯是保留原始地名字段不做修改另起一列放标准化后的现代地名或者直接以经纬度为准。不要在原字段上直接覆盖因为后续如果发现映射错误你还能回到原始记录重新核对。3. 数据清洗与统计实操流程3.1 读入数据与初步检查拿到Excel或CSV格式的数据后第一步自然是读入并做初步体检。我用Python的pandas库代码很简单import pandas as pd df pd.read_excel(pre1969_earthquake.xlsx) # 按实际文件名调整 print(df.shape) print(df.columns.tolist()) print(df.head(10))看到列名之后别急着分析先把每个字段的缺失情况摸一遍missing_summary df.isnull().sum() print(missing_summary[missing_summary 0])历史数据的缺失率通常不低尤其是震源深度和发震时刻这类字段早期记录大量空缺这本身就是一个信息。先搞清楚哪些字段能用、哪些字段基本是空的再决定后续分析策略。3.2 时间字段标准化接下来需要把时间字段统一成标准格式。历史地震数据的时间有几个常见坑一是年号纪年古代记录里经常是明万历三十四年这种写法需要先换算成公历年份二是农历和公历混用部分记载用的是农历日期三是很多记录只有年份没有月日。处理思路是先把能解析的字段解析出来不能解析的保留原值并标注缺失原因。# 示例从1909-09-21字符串中提取标准时间 df[date_std] pd.to_datetime(df[日期], errorscoerce) df[year] df[date_std].dt.year df[month] df[date_std].dt.month这里用errorscoerce的目的是把无法解析的日期变成缺失值后面再单独处理。对只有年份的记录可以直接取年份字段单独分析日期的缺失不影响年尺度上的统计。3.3 震级字段的统一处理震级类型不统一是所有历史地震目录的通病。早期目录里可能同时混着面波震级、体波震级和经过烈度换算的推定震级这些值放在一起直接统计是有问题的。我在处理时的做法是先看数据列的类型标注如果有震级类型或类似字段就按类型分组统计如果没有则结合资料说明推断主震级类型。# 按震级区间分档统计 bins [0, 3, 4, 5, 6, 7, 8, 10] labels [3, 3-4, 4-5, 5-6, 6-7, 7-8, 8] df[mag_bin] pd.cut(df[震级], binsbins, labelslabels, rightFalse) print(df[mag_bin].value_counts().sort_index())分档统计可以快速看出数据分布是否合理也能帮你判断是否有异常值比如震级为0或超过9的记录通常需要回头核对原始来源。3.4 空间分布与基础统计清洗完时间、震级和经纬度之后就可以做基础的空间分析了。我会先画一张震中空间分布散点图看看数据在空间上是否覆盖了预期区域。历史地震的记录存在严重的不均匀性东部地区因为文献记录相对丰富早期地震记载很多西部的记录则明显偏少这不代表西部地震少而是人口稀少、文献缺失导致的历史记录盲区。分析时要把这种观测偏差放在心上不能直接把历史目录的频次当成真实地震活动水平。import matplotlib.pyplot as plt plt.figure(figsize(10, 8)) sc plt.scatter(df[经度], df[纬度], cdf[震级], cmaphot_r, s8, alpha0.7) plt.colorbar(sc, label震级) plt.xlabel(经度) plt.ylabel(纬度) plt.title(1969年前历史地震震中分布) plt.show()如果用地图底图建议叠加今天的省界或板块边界线做参照这样更容易看出地震带的位置关系比如南北向的地震带走向是否清晰。4. 使用中的常见坑与排查实录4.1 同一地震出现多条重复记录历史目录最容易遇到的问题之一就是同一地震被重复收录或者被分拆成多条。造成这种情况的原因主要在于古代通讯不便不同地方的记录者对同一个事件的描述差异很大后人编目时如果没有仔细比对可能把一个地震当成了两个。排查方法是按时间、震中位置和震级做聚类匹配设定一个合理的时间窗口比如前后1天和空间距离阈值比如经纬度差不超过1度把满足条件的记录列出来人工比对。# 按年份和经纬度粗略查重 dup_check df[df.duplicated(subset[year, 经度, 纬度], keepFalse)] print(dup_check.sort_values([year, 经度, 纬度]))查重时要注意某些年份确实可能在同一区域短时间发生多次地震所以别机械地删重复数据一定要结合震级和备注信息判断。4.2 经纬度精度不足的问题早期地震的震中位置很多是根据史料记载的破坏范围推断出来的存在明显误差。有的记录经纬度只精确到整数度意味着实际震中可能偏离几十公里。对做大尺度空间统计的人来说这可能可以接受但如果你要精确分析某条地震与断层的空间关系就必须谨慎。我的处理原则是在结果图中把这种不确定性体现出来比如给震中位置画误差范围圈或者在做空间匹配时把容差设定得大一些。4.3 目录间口径不一致不同来源的目录对同一地震的记载可能不一致震级差异0.5级、日期相差几天的现象并不罕见。遇到这种情况我的建议是不要试图调和出一个唯一答案而是选择一条主目录作为分析基准遇到关键事件时再交叉核对其他目录把差异写入备注。分析时还可以做一个敏感性检验用不同的震级值重新计算相关统计量看看会不会改变主要结论。如果结论对0.5级的震级差都很敏感那这个结论本身就站不住脚。4.4 缺失值的处理策略历史数据的缺失是常态不能简单删除。我常用的策略是分场景处理震源深度缺失严重常超过一半直接放弃该字段不参与建模发震时刻缺失按天粒度分析即可不追求精确时刻震级缺失的记录在统计频率时不能直接丢弃否则会低估地震活动水平。可单独统计一个有震级记录子集和全量时间分布对照。其实缺失信息本身就是历史数据的重要特征它反映了特定时期资料记录能力的高低在做长期趋势分析时要把记录完备性因素纳入考虑。5. 典型应用场景与延伸思路5.1 历史地震目录用于活动性参数计算地震活动性分析里常用的震级-频度关系就是经典的b值分析。完整的目录尤其是长历史目录对估计低震级段的完整性有帮助。把历史目录和现代仪器目录拼接使用时一定要注意两个时段的数据完整性和震级口径差异最好先做完整性分析确定各自可靠的震级下限再做拼接。否则统计结果会被人为的目录变化误导。5.2 空间可视化用于近代地震格局展示把历史地震震中按时间分色画在地图上能直观看到地震活动在不同时期的空间迁移。这种图很适合作为区域地震构造分析的前置参考。我自己做过一次按世纪分组的动画式分布图能看到不同时期的地震记录重心明显不同早期集中在东部文献发达地区往近代逐渐转向西部。这个变化既有真实地震活动的因素也有记录能力变化的影响解读时要同时考虑两方面。5.3 与其他资料的交叉验证历史地震目录不应该孤立使用。把它和地质构造资料、现代仪器记录、历史人口分布数据放在一起交叉分析可以做很多有意思的工作。比如研究某条活动断裂的历史地震复发间隔或者评估一个区域内历史大地震与现代地震活动的关系。我印象比较深的是目录里有一条震级超过8级的明代特大地震记录把它和当地断层调查结果对照之后整个区域的地震危险性认识都会变得立体起来。提示在论文或报告中引用历史地震数据时一定要说明数据来源、版本和编目口径同时注明早期震级为估算值。这是基本的学术规范也是对自己分析结论负责。6. 实操中的一些经验补充最后分享几个我自己用这份数据时的实操细节。第一拿到表先看有没有数据备注或参考文献这类列别嫌它烦查数据时它是最有用的线索。第二做空间图时建议把震级标成点的大小和颜色同时也要把烈度单独做一张图烈度信息对历史地震的破坏程度评估比震级更直接。第三如果要做长周期趋势分析建议先统计每个年代的记录条数和人口分布对照避免把记录能力提升误解为地震增多。还有一个小技巧是建议把整理后的数据保存一份轻量级的中间格式比如去掉冗长备注的简化版方便后续反复加载画图。每次重新从原始表读取清洗既慢又容易因为代码改动产生不一致。历史地震数据这份工作做得越细越能体会到记录背后的考证工作量。好的数据目录确实能把大量前期工作省下来但数据的局限性和不确定性同样要心里有数。希望这篇基于实际操作经验的梳理能让你在拿到这份目录后少走一些弯路。

相关新闻

SAP成本核算培训:从费用流转到生产订单月结的完整闭环

SAP成本核算培训:从费用流转到生产订单月结的完整闭环

简介:面向SAP FICO顾问、成本会计及企业财务管理人员,这份PPT系统讲解产品成本控制(CO-PC)的核心知识,从标准成本体系、成本差异处理到物料账与月结流程,覆盖成本计划、成本对象控制、实际成本核算等关键环…

2026/10/14 2:47:29 阅读更多 →
DeepSeek-R1本地部署实战:Ollama+ChatBox全链路避坑指南

DeepSeek-R1本地部署实战:Ollama+ChatBox全链路避坑指南

简介:本资源是一份面向AI技术实践者与本地化部署需求者的DeepSeek大模型落地指南,专为应对近期DeepSeek在线服务频繁中断、响应延迟及隐私顾虑等问题而设计,适合具备基础命令行操作能力、关注数据安全与低延迟交互的开发者、研究人员及技术爱…

2026/10/14 2:47:29 阅读更多 →
Spring Cloud Gateway实战:从选型到生产排错的完整指南

Spring Cloud Gateway实战:从选型到生产排错的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/14 2:47:29 阅读更多 →

最新新闻

Virglrenderer 虚拟化技术深入解析 · 专栏目录

Virglrenderer 虚拟化技术深入解析 · 专栏目录

一套面向工程师的 virglrenderer 源码级技术专栏。从概述与演进讲起,再深入核心抽象、各后端实现、部署集成与工程实践。所有内容以仓库源码为准。 这里讲一下我为什么关注 virglrenderer,因为国产 GPU 的虚拟化需求。 随着国产化替代的推进&#xff0c…

2026/10/14 3:23:34 阅读更多 →
Kestrel_VLLM_CUDA - 04 · 分组量化 GEMM 内核

Kestrel_VLLM_CUDA - 04 · 分组量化 GEMM 内核

04 分组量化 GEMM 内核 一句话:一个内核同时服务 decode(M1)与 prefill(M32),用「每线程固定几列、沿 K 扫」的映射让权重按 warp 满事务读、激活广播;用 z-split 把小 M 的欠填充网格补满&…

2026/10/14 3:23:34 阅读更多 →
Spring Boot 单元测试怎么写?物联网平台 MockMvc 接口测试与 Mockito 消息链路测试实战(附 JaCoCo 覆盖率报告)

Spring Boot 单元测试怎么写?物联网平台 MockMvc 接口测试与 Mockito 消息链路测试实战(附 JaCoCo 覆盖率报告)

真实运行截图:一、功能都写完了,为什么还要写测试? 我这个物联网设备接入平台(Spring Boot 3.5 EMQX MySQL),从设备注册、MQTT 接入、消息入库到密钥轮换,功能主线已经跑通了。但每次面试话题…

2026/10/14 3:23:34 阅读更多 →
宁波执业律师张娟:配偶背的债你要还吗——夫妻共同债务认定规则拆解

宁波执业律师张娟:配偶背的债你要还吗——夫妻共同债务认定规则拆解

结论先行:配偶单方所负的债务,并不天然由你连带承担。民法典第1064条确立了共债共签原则——共同签字或事后追认、为家庭日常生活需要所负的债务才是共同债务;超出日常生活需要的,原则上由举债方自担,除非债权人能证明…

2026/10/14 3:23:34 阅读更多 →
铝制小青瓦筑就江南院墅 复刻黛瓦白墙的东方栖居

铝制小青瓦筑就江南院墅 复刻黛瓦白墙的东方栖居

坐落于苏州的拙政江南,以拙政园为文脉基底,打造连片式低密新中式院墅群落。白墙围合私家庭院,黛瓦错落铺陈屋面,亭廊婉转、叠石理水,将苏州园林的雅致意境藏进每一方栖居空间。项目全线屋面采用铝制小青瓦,以现代建材工艺复刻传统江南小青瓦的形与韵,更从根源破解传统陶瓦的运维…

2026/10/14 3:23:34 阅读更多 →
中国起名服务正在发生什么变化?从“大师经验”到专业化、品牌化服务

中国起名服务正在发生什么变化?从“大师经验”到专业化、品牌化服务

很长时间里,人们对于“找人起名”的想象都非常简单: 找一位有经验的老师, 报出生时间, 老师根据经验给出几个名字。 整个服务高度依赖: “这个大师厉不厉害”。 但今天再观察国内专业起名市场,会发现它已经…

2026/10/14 3:22:34 阅读更多 →

日新闻

AnyPS5通用适配层设计:兼容性与性能的工程取舍

AnyPS5通用适配层设计:兼容性与性能的工程取舍

1. 从"AnyPS5"这个名字说起:它到底想解决什么问题第一次看到"AnyPS5"这个标题,我脑子里冒出来的第一个念头是:这大概率是一个围绕"跨平台运行"或者"通用适配"做文章的项目。名字里的"Any"…

2026/10/14 0:00:41 阅读更多 →
Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

Flutter跨平台开发实战:二手交易应用与HarmonyOS适配

1. 项目概述:Flutter跨平台二手交易应用开发作为一名长期从事移动应用开发的工程师,我最近完成了一个基于Flutter框架的二手物品交易平台项目。这个项目最吸引我的地方在于它完美结合了Flutter的跨平台优势与HarmonyOS的生态特性,实现了"…

2026/10/14 0:00:41 阅读更多 →
DFS算法解决飞机降落调度问题实战

DFS算法解决飞机降落调度问题实战

1. 项目背景与核心思路飞机降落问题是一个经典的调度优化场景,也是算法竞赛和面试中的高频题目。这个题目要求我们合理安排多架飞机的降落顺序和时间,确保所有飞机都能安全着陆而不发生冲突。在实际航空管制中,这类问题直接关系到飞行安全和机…

2026/10/14 0:00:41 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/13 16:22:04 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 22:01:27 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/13 14:57:39 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →