实操教程:Python + Stata 获取中国气象历史数据(以 NOAA ISD-Lite 为例)

✅ 一、获取气象数据(以 NOAA ISD-Lite 为例)

数据源网址(ISD-Lite 格式):

https://www.ncei.noaa.gov/data/global-hourly/doc/isd-lite-format.txt
https://www.ncei.noaa.gov/pub/data/noaa/

1. 确定台站编号(如北京首都国际机场:54511099999)
2. 构造下载地址:

格式:https://www.ncei.noaa.gov/pub/data/noaa/<年份>/<台站ID>-<年份>.gz

示例(北京 2020 年):

https://www.ncei.noaa.gov/pub/data/noaa/2020/54511099999-2020.gz

✅ 二、Python 实操:自动下载并解析 .gz 气象数据

import requests
import gzip
import shutil
import pandas as pd
import os

def download_gz_file(url, save_path):
    r = requests.get(url, stream=True)
    if r.status_code == 200:
        with open(save_path, 'wb') as f:
            f.write(r.content)
        print(f"Downloaded: {save_path}")
    else:
        print(f"Failed to download: {url}")

def extract_gz(file_path, extract_to):
    with gzip.open(file_path, 'rb') as f_in:
        with open(extract_to, 'wb') as f_out:
            shutil.copyfileobj(f_in, f_out)
    print(f"Extracted to: {extract_to}")

def parse_isd_lite(file_path):
    cols = ['YEAR', 'MONTH', 'DAY', 'HOUR', 'TEMP', 'DEWP', 'SLP', 'WDIR', 
            'WSPD', 'SKC', 'VIS', 'CEIL', 'PRECIP']
    df = pd.read_csv(file_path, delim_whitespace=True, names=cols)
    df.replace(9999, pd.NA, inplace=True)
    df['DATETIME'] = pd.to_datetime(df[['YEAR','MONTH','DAY','HOUR']])
    return df

# 示例执行
year = 2020
station = '54511099999'
url = f'https://www.ncei.noaa.gov/pub/data/noaa/{year}/{station}-{year}.gz'
gz_path = f'{station}-{year}.gz'
txt_path = f'{station}-{year}.txt'

download_gz_file(url, gz_path)
extract_gz(gz_path, txt_path)
df = parse_isd_lite(txt_path)
df.to_csv(f'{station}-{year}.csv', index=False)
print(df.head())

✅ 三、Stata 阶段处理

假设你已经有了处理好的 54511099999-2020.csv 文件,可在 Stata 中执行:

import delimited using "54511099999-2020.csv", clear
gen date = dofc(datetime)
format date %td
tsset date, daily

可进一步汇总每日平均气温等:

collapse (mean) TEMP, by(date)
tsline TEMP

✅ 四、进阶建议

  • 多台站批量下载时可封装函数批处理;
  • 如果目标是中国 CMA 站点数据,可使用中国气象数据网(需注册申请);
  • 也可以尝试 AkShare、pyCMA、气象局 FTP 等数据源。

来自这里https://www.lianxh.cn/details/793.html

Logo

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

更多推荐