python - 如何将 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)
编辑:当前输出(小剪辑 - 返回非常大的数据列表) 在此处输入图像描述
解决方案
推荐阅读
- xampp - 更新到 MacOS Catalina 后 XAMPP 本地主机访问禁止错误 403
- vue.js - 使用多个组件在 Vue Router 中传递 props
- c - strlen AVX-512 __builtin_ctz 无效值
- wordpress - 在 Woocommerce 结帐中隐藏字段中的标签文本
- c++ - 包含点的 C/C++ 宏参数(成员访问运算符)
- javascript - CSS Transform Rotate 3D - 悬停在卡片的每个角落
- python - 在 Pycharm 中运行我的优化模型之前启动一个 bash 脚本
- android - 如何在android中实现垂直标签布局?
- android - 应用程序在前台服务最后停止时继续运行
- python - 由于 RAM 的过度消耗(在本地机器和 Google Colab 上),Tensorflow 内核被自动杀死