实操教程:Python + Stata 获取中国气象历史数据(以 NOAA ISD-Lite 为例)
·
实操教程: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
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)