一、数据介绍

中国地面气候资料日值数据集(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年),仅供科研论文使用,如分享交流,请后台私信。

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐