=数据分析=中国地面气候资料日值数据集(V3.0)+中国地面基本气象观测数据(新疆气象站数据为例)
一、数据介绍
中国地面气候资料日值数据集(V3.0):(1951-2020年),2020年以后就不再更新了,官网数据集就变为了:中国地面基本气象观测数据(2020-2026年),小时数据,合并为日值数据就接上了。
需要注意的是:以新疆为例,V3.0数据集里面有107个气象站,而新的数据集里面只有66个站点,变化比较大,其它省份基本无太大变动,具体见中国气象数据网:

"中国地面气候资料日值数据集(V3.0)"数据集包含了中国2481个站点1951年1月以来的气压、气温、降水量、蒸发量、相对湿度、风向风速、日照时数和0cm地温要素的日值数据。数据是按年-月存放的, 每年每月的所有站点数据每一项气象要素都放在一个文本文件中,全国站点空间位置以及每个文本的详细内容如下:
下载后是这样的:

以降水数据为例:

中国地面基本气象观测数据:中国地面基本气象观测逐三小时数据,包括气温、气压、湿度、风、降水等要素。其中统计值为前一小时统计量,降水量为三小时累计降水量,滞后2天,每日滚动更新。
2020.11-2023.02,期间数据为逐小时数据,2023.02-至今,变为三小时数据了,不过最后合并统计为日值数据,无变化。
下载整理后是这样的:


二、数据分析
中国地面气候资料日值数据集(V3.0):
第一步:合并降水数据txt文件
此处用到的是bat命令,
bat代码如下:
===============================
copy *.txt PRE.txt
================================
此时生成了1个特别大的txt文件:PRE.txt
![]()
文件有3个多G!
第二步:接下来要做的是提取每个站点的数据
再使用bat命令的话,有点慢了,我们要使用更高效的python软件
1. 准备文件
创建文件夹
o在你的电脑上创建一个文件夹,例如:
§ 在 Windows 系统中,可以创建一个名为 “data_processing” 的文件夹,路径为 “C:\data_processing”。
§ 在 macOS 可以创建一个名为“data_processing” 的文件夹,路径为“/users/yourusername/data_processing”(将 “yourusername” 替换为你的系统用户名)。
2. 放置输入文件
o将需要处理的 txt 文件(假设为 “original.txt”)复制到上述文件夹中。
3. 创建 Python 脚本文件
(1)打开文本编辑器
o在 Windows 上,可以打开 “记事本”(Notepad)。
§ 通过点击 “开始” 菜单,搜索 “记事本” 并打开它。
o在 macOS 上,可以打开 “TextEdit”。
§ 通过点击 “Finder” 中的 “应用程序” 文件夹,找到 “TextEdit” 并打开它。
(2)输入脚本代码
o将以下代码粘贴到文本编辑器中:
import mmap
import os
from collections import defaultdict
def process_large_file_with_mmap(file_path):
class_files = defaultdict(list)
with open(file_path, 'r+b') as file:
mmap_file = mmap.mmap(file.fileno(), 0, access=mmap.ACCESS_READ)
for line in iter(mmap_file.readline, b""):
line = line.decode().strip()
if line:
class_key = line[:5]
class_files[class_key].append(line)
mmap_file.close()
return class_files
def write_class_files(class_files):
for class_key, lines in class_files.items():
with open(f"{class_key}.txt", 'w') as file:
file.writelines([line + "\n" for line in lines])
if __name__ == "__main__":
input_file = "C:/data_processing/original.txt" # Windows 文件路径
# input_file = "/users/yourusername/data_processing/original.txt" # macOS 文件路径
class_files =process_large_file_with_mmap(input_file)
write_class_files(class_files)
print("分类完成!")
需要再啰嗦一下:
·如果你使用的是 Windows 系统,代码中应保留 input_file = "C:/data_processing/original.txt"。
·如果你使用的是 macOS 系统,代码中应将 input_file 修改为 /users/yourusername/data_processing/original.txt,其中 yourusername 替换为你的系统用户名。
(3)保存文件
o点击文本编辑器的 “文件” 菜单,选择 “另存为”。
o将文件名设置为“process_large_file.py”。
o将文件保存到与“original.txt” 文件相同的文件夹中(例如 “C:\data_processing” 或 “/users/yourusername/data_processing”)。
运行脚本
脚本右键—打开方式---pycharm打开—运行即可
运行后结果为:

已按照站点分类好!
第三步:将txt转换为Excel文件
方法很多,当年比较笨,科研小白,所以直接用Excel表里面命令实现的。
1、打开Excel并启用开发工具:
打开Excel。
点击 “文件” -> “选项” -> “自定义功能区”。
在右侧的 “主选项卡” 列表中,勾选 “开发工具”,然后点击 “确定”。
2、打开VBA编辑器:
在 “开发工具” 选项卡中,点击 “Visual Basic” 按钮,打开VBA编辑器。
3、插入新模块:
在VBA编辑器中,右键点击 “VBAProject (你的工作簿名称)” -> “插入” -> “模块”。
4、编写VBA代码:
将以下代码复制到模块中:
=====
Sub TxtToExcel()
Dim txtFolder As String
Dim excelFolder As String
Dim txtFile As String
Dim fileNum As Integer
Dim textLine As String
Dim cleanedData As Variant
Dim i As Integer
Dim ws As Worksheet
Dim nextRow As Long
Dim wb As Workbook
' 设置txt文件所在的文件夹路径
txtFolder = "E:\PRE\"
' 设置输出Excel文件的文件夹路径
excelFolder = "E:\output\"
' 创建输出文件夹(如果不存在)
If Dir(excelFolder, vbDirectory) = "" Then
MkDir excelFolder
End If
' 遍历txt文件夹中的所有txt文件
txtFile = Dir(txtFolder & "*.txt")
Do While txtFile <> ""
' 创建一个新的Excel工作簿
Set wb = Workbooks.Add
Set ws = wb.Sheets(1)
' 打开txt文件
fileNum = FreeFile
Open txtFolder & txtFile For Input As fileNum
' 读取txt文件内容
nextRow = 1
Do While Not EOF(fileNum)
Line Input #fileNum, textLine
' 去除多余的空格并分割数据
cleanedData = Split(Replace(textLine, " ", " "), " ") ' 替换连续空格为单个空格
' 进一步处理可能存在的连续空格
ReDim preservedData(0 To UBound(cleanedData))
Dim j As Integer
j = 0
For i = 0 To UBound(cleanedData)
If cleanedData(i) <> "" Then
preservedData(j) = cleanedData(i)
j = j + 1
End If
Next i
ReDim Preserve preservedData(0 To j - 1)
' 将数据写入工作表
For i = 0 To UBound(preservedData)
ws.Cells(nextRow, i + 1).Value = preservedData(i)
Next i
nextRow = nextRow + 1
Loop
' 关闭txt文件
Close fileNum
' 保存Excel文件
wb.SaveAs excelFolder & Left(txtFile, Len(txtFile) - 4) & ".xlsx"
wb.Close
' 获取下一个txt文件
txtFile = Dir
Loop
MsgBox "转换完成!", vbInformation
End Sub
=======
5、运行宏:
在VBA编辑器中,按 F5 或点击 “运行” 按钮来运行 ImportTxtFiles 宏。
6、啰嗦两句:
将上述代码复制到Excel的VBA编辑器中。
修改代码中的 txtFolder 和 excelFolder 路径,分别指向你的txt文件所在文件夹和希望输出Excel文件的文件夹。
运行宏,完成!(PS这个方法时间有点长,尤其是文件比较多时,上个厕所或者出去玩一会再回来)


中国地面基本气象观测数据(2020-2026年):
数据下载:




加入数据框后,生成订单,下载即可,不过目前官网下载限制比较多,如果研究期需要该数据,最好能够提前准备下载。
数据分析:
该数据集下载后处理比较简单,所使用到的方法和上面的基本差不多。
数据的引用:(参考官方要求)
中央气象局. 地面气象观测规范. 气象出版社, 1979。
国家气象中心. 全国地面气候资料(1961-1990)统计方法. 内部文献, 1990。
中国气象局预测减灾司. 常规气象资料信息化模式文本汇编. 气象出版社, 2001。
中国气象局. 地面气象观测规范. 气象出版社, 2003
中国气象局. 气象要素分类与编码(QX/T 133-2011). 气象出版社, 2011。
中国气象局. 气象数据归档格式 地面(QX/T 119-2010). 气象出版社, 2010。
中国气象局. 气象数据集核心元数据(QX/T 39-2005). 气象出版社, 2005。
中国气象局. 气象数据集说明文档格式标准(送审稿). 2012。
如有数据使用需求请按照官方平台的要求进行引用,更多数据详情可以查看官网获悉!
★补充说明
该方法简单,无需编程基础也可以很快学会,适合入门,感觉有用的话帮点个赞或者转发给需要的同学,谢谢!
PS:该数据目前已更新至最新(2026年),仅供科研论文使用,如分享交流,请后台私信。
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)