首页 > 解决方案 > 如何将 netCDF CMIP5 气候数据解压缩到 Python 中的数据框?

问题描述

我是 .nc 文件格式的新手,并且已经通过可用的答案进行了广泛的研究——如果我遗漏了一些东西,我们将不胜感激!

我有一个 CMIP5 气候文件(netCDF4 格式)——维度是十年内的每日值:纬度、经度、温度、气候预测、时间。我需要遍历每个投影的每个位置(纬度/经度对),并按位置对每个月或每年的温度数据执行操作(例如,我想将一年中所有天的温度值相加)单个位置)。

使用 ncdump,可以获得以下数据:

在此处输入图像描述

目前,我正在尝试将文件作为 Python 中的数组或数据框写入中间形式。有没有一种简单的方法来解压 netCDF 数据并写入数组?理想的输出格式将沿着数据帧的行,其中每一行是具有以下列标题的单个条目:“纬度”、“经度”、“投影”、“温度”、“时间”。我见过 2D 或 3D 数组的示例,但似乎不适用于更高维数据。

时间/内存不如使用中间数据格式来检查计算重要。

代码:

import netCDF4
import collections
from collections import defaultdict

t1 = netCDF4.MFDataset("Extraction_tasmax.nc") #
t1.variables.keys()
tmax = t1.variables['tasmax']


lat = t1.variables['latitude'][:]    
lon = t1.variables['longitude'][:]
time = t1.variables['time'][:]
tempmax = t1.variables['tasmax'][:, :, :, :] # projection, time, lat, lon
column_names = ['tempmax', 'projection', 'time', 'latitude', 'longitude']
temp_list = []


for projection in tempmax:
    for time in projection:
        for lat in time:
            for lon in lat:
                temp_list.append([tempmax, projection, time, lat, lon])


temperature_data = pd.DataFrame(temp_list, columns = column_names)

编辑:当前输出(小剪辑 - 返回非常大的数据列表) 在此处输入图像描述

标签: pythonpandas

解决方案


推荐阅读