我的编程空间,编程开发者的网络收藏夹
学习永远不晚

美国国家气候数据中心(NCDC)数据下载与处理

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

美国国家气候数据中心(NCDC)数据下载与处理

1、数据下载网址:

ftp://ftp.ncdc.noaa.gov/pub/data/noaa/isd-lite/
注:用Google Chrome浏览器打开
数据源为NCDC(美国国家气候数据中心,National Climatic Data Center),隶属于NOAA(美国国家海洋及大气管理局,National Oceanic and Atmospheric Administration)

2、所需站点ID筛选

站点ID在isd-history里根据所属国家进行查询,中国的缩写为CH,将中国区的站点ID、经纬度全部筛选出,导入arcgis中显示为点数据NCDC_station.shp,用研究区边界对NCDC_station.shp进行裁剪,得到研究区内的站点分布,打开属性表导出,得到自己所需的站点ID,根据站点ID在网站进行对应下载,如下图所示。
打开裁剪出的站点属性表并导出,得到所需站点ID

3、站点数据下载

网站上为1901年~最新年份的数据,按年份分文件夹,每个年份的文件夹内为.gz格式的站点数据,站点文件命名格式为××××××(站点ID)-99999-××××(年份),找到自己所需的站点,点击即可下载。

4、数据格式解读

下载的数据没有表头,网站有对于各列数据含义的解读文件 isd-lite-format.txt
其中各列数据的中文含义分别是年、月、日、小时、气温、露点温度、气压、风向、风速、云量、累积降雨量-1小时、累积降雨量-6小时
NCDC数据2022年某个站点文件格式

5、为数据添加表头并输出为excel文件

用python对站点数据进行处理,代码引自他人教程

import pandas as pdimport numpy as npdata = pd.read_table('自己的文件路径/592871-99999-2022',header=None)'''原始数据中以空格分隔的12列数据,分别为:年、月、日、小时、温度、露点温度、气压、风向、风速、云量、1小时降雨量和6小时降雨量。'''# 构建空列表用于存放提取出来的各列数据data_list = []for line in data.values:    line_temp = [int(x) for x in line[0].split(' ') if x != '']    data_list.append(line_temp)df = pd.DataFrame(data_list,columns=['年','月','日','小时','温度','露点温度','气压','风向','风速','云量','1小时雨量','6小时雨量'])# 对数据中-9999的缺失值进行NaN替换df = df.replace(-9999,np.nan)# 数据说明文档中表示原始数据中温度、露点温度、气压、风速、降雨量的换算系数为10,所以要对原始数据中的对应数据除以10,进行换算。df['温度'] = df['温度']/10df['露点温度'] = df['露点温度']/10df['气压'] = df['气压']/10df['风速'] = df['风速']/10df['1小时雨量'] = df['1小时雨量']/10df['6小时雨量'] = df['6小时雨量']/10# 为了便于后续重采样分析数据,给数据增加一个DataFrame列df['Date'] = pd.PeriodIndex(year=df['年'],month=df['月'],day=df['日'],hour=df['小时'],freq='H')df = df.set_index(df['Date'])df.drop(columns= 'Date',inplace=True)print(df)# 保存为同名exceldf.to_excel('想输出的文件路径592871-99999-2022.xlsx')

6、将数据进行重采样,逐小时变为逐日

用python的数据重采样将逐小时数据处理成逐日数据,

import pandasimport pandas as pddata1=pd.read_excel('自己的文件路径578530-99999-2022.xlsx',usecols=['Date','温度'])data1['Date']=pd.to_datetime(data1['Date'])data1=data1.set_index('Date')T1_mean = data1.resample('d').mean() #mean取日均温,若处理降雨数据则为sum,日总降雨量T1_max = data1.resample('d').max() #max取日最高温T1_min = data1.resample('d').min()  #min取日最低温daily_T1 = pandas.concat([T1_mean,T1_max,T1_min])print(daily_T1)data2=pd.read_excel('F:/NOAA_NCDC_2022/2022download/578660-99999-2022.xlsx',usecols=['Date','温度'])data2['Date']=pd.to_datetime(data2['Date'])data2=data2.set_index('Date')T2_mean = data2.resample('d').mean()T2_max = data2.resample('d').max()T2_min = data2.resample('d').min()daily_T2 = pandas.concat([T2_mean,T2_max,T2_min])print(daily_T2)data3=pd.read_excel('F:/NOAA_NCDC_2022/2022download/579720-99999-2022.xlsx',usecols=['Date','温度'])data3['Date']=pd.to_datetime(data3['Date'])data3=data3.set_index('Date')T3_mean = data3.resample('d').mean()T3_max = data3.resample('d').max()T3_min = data3.resample('d').min()daily_T3 = pandas.concat([T3_mean,T3_max,T3_min])print(daily_T3)#将excel写入对象writerwriter = pd.ExcelWriter(r"想输出的路径.xlsx", engine='xlsxwriter')# 分别将表T1、T2、T3写入Excel中的sheet1、sheet2、sheet3# 命名为daily_T1、daily_T2、daily_T3daily_T1.to_excel(writer, sheet_name='daily_T1')daily_T2.to_excel(writer, sheet_name='daily_T2')daily_T3.to_excel(writer, sheet_name='daily_T3')# 保存读写的内容writer.save()

补充:批量重采样

对生成的各个站点的excel格式的数据进行批量的重采样

# -*- coding: utf-8 -*-import pandas as pdimport osfolder_path = 'E:/存储站点数据的文件夹路径/'  # 文件夹路径output_folder = 'E:/Output/'   # 输出文件夹路径file_list = []  # 存储文件列表# 遍历文件夹中的文件for file_name in os.listdir(folder_path):    if file_name.endswith('.xlsx'):  # 只处理以.xlsx结尾的文件        file_path = os.path.join(folder_path, file_name)  # 拼接文件路径        file_list.append(file_path)  # 将文件路径添加到文件列表中# 批量处理文件for file in file_list:    # 生成输出文件名    output_file = os.path.join(output_folder, os.path.basename(file).replace('.xlsx', '_Daily_T.xlsx'))    data = pd.read_excel(file, usecols=['Date', '温度'])    data['Date'] = pd.to_datetime(data['Date'])    data = data.set_index('Date')    T_mean = data.resample('D').mean()    T_max = data.resample('D').max()    T_min = data.resample('D').min()    daily_T = pd.concat([T_mean, T_max, T_min], axis=1)    # 输出到Excel文件    daily_T.to_excel(output_file, index=True)  # 保留索引    print("变量已成功写入Excel文件:", output_file)#合并文件# 文件夹路径folder_path = 'E:Output/'  #修改为你存储文件的路径# 获取文件夹中的所有Excel文件file_list = [file for file in os.listdir(folder_path) if file.endswith('.xlsx')]# 创建一个空的DataFrame用于存储合并结果combined_data = pd.DataFrame()# 批量处理文件for file in file_list:    file_path = os.path.join(folder_path, file)  # 拼接文件路径    data = pd.read_excel(file_path)  # 读取Excel文件    combined_data = pd.concat([combined_data, data], axis=1)  # 按列合并数据# 输出合并后的表格print(combined_data)# 输出合并结果到新的Excel文件output_file = 'E:/combined_Daily_T.xlsx' combined_data.to_excel(output_file, index=False)print("合并结果已保存为新的Excel文件:", output_file)

来源地址:https://blog.csdn.net/weixin_45058703/article/details/126580860

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

美国国家气候数据中心(NCDC)数据下载与处理

下载Word文档到电脑,方便收藏和打印~

下载Word文档

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录