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

python简单读取和索引.nc文件(气象小白入门版)

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

北京

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

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

看不清楚,换张图片

免费获取短信验证码

python简单读取和索引.nc文件(气象小白入门版)

 一、总代码

#数据下载,这里下载的是NCEP的气压数据,在命令行运行代码即可#wget -P /mnt/g/st_touchfish_py/data ftp://ftp.cdc.noaa.gov/Datasets/ncep.reanalysis.derived/pressure/air.mon.mean.ncimport xarray as xrimport pandas as pdimport numpy as np#用xarray库读入文件file = xr.open_dataset('/mnt/g/st_touchfish_py/data/air.mon.mean.nc')#print一下文件看看都有啥print(file)#dataarray文件包含四部分~维度DIMS&坐标cord--经度、纬度、高度、时间;值VALUE--气压;属性attributes:文件信息...#索引的顺序不能颠倒,可通过print(file.air)查看顺序print(file.air)air_00_20 = file.air.loc['2000-01-01':'2020-12-31',500,:,:]print(air_00_20)#检查格式:若是datatime格式则可以分年、月、日索引print(air_00_20.time)air_00_20_sum = air_00_20.loc[air_00_20.time.dt.month.isin([6,7,8])]print(air_00_20_sum)

二、代码解释

(1)NECP气象数据下载

wget -P /mnt/g/st_touchfish_py/data ftp://ftp.cdc.noaa.gov/Datasets/ncep.reanalysis.derived/pressure/air.mon.mean.nc

注意:/mnt/g/st_touchfish_py/data是存放文件的路径,改成自己的噢

(2)下载相应库

这里用到了三个库xarray pandas numpy(xarray是基于pandas建立的,两者很相似;numpy很常用,涉及处理数组都会用到)

#导入相应的库import xarray as xrimport pandas as pdimport numpy as np

如果命令行提示“No Model xxx”,就是没有安装对应的库。安装上就好了。

比如缺少xarray和pandas,直接在命令行里面运行:conda install -c conda-forge xarray pandas 

(如果上述命令不行,尝试pip install xarray)

(3)读入文件并查看文件内容

#用xarray库读入文件file = xr.open_dataset('/mnt/g/st_touchfish_py/data/air.mon.mean.nc')#print一下文件看看都有啥print(file)#dataarray文件包含四部分~维度DIMS&坐标cord--经度、纬度、高度、时间;值VALUE--气压;属性attributes:文件信息...

运行结果:

可以看到这是xarray读进来的数据集:红框的四部分。

Data variables是数据变量,若下载的文件是温度数据,变量就是温度;是风场数据,变量就是风速。

Dimensions是变量的维度,有四个,每个维度的数字就代表有几个值,比如level:17就是有17个高度值,想要具体看看是什么值,可以print一下

print(file.level)

如下图红框,17个高度值就存在数组中

 (4)索引文件(时间/高度/经纬度)

#索引的顺序不能颠倒,可通过print(file.air)查看顺序print(file.air)air_00_20 = file.air.loc['2000-01-01':'2020-12-31',500,:,:]print(air_00_20)

 print(file.air)运行结果如下图所示,可以看到属性存放的顺序是:时间-->高度-->纬度-->经度,索引的时候一定要按照这个顺序写约束。

这里的顺序指的是两方面:一个是属性存放的顺序(时间是第一个,高度是第二个...),还有每个属性中的数据存放的顺序(时间属性中,1948排在1949前面)。

这两个顺序在写索引的时候都不能颠倒。

loc函数就是用于索引的,比如要提取2000年到2020年,高度为500的所有气压数据,就可以写成

air_00_20 = file.air.loc['2000-01-01':'2020-12-31',500,:,:]

(而如果写成 air_00_20 = file.air.loc[500,'2000-01-01':'2020-12-31',:,:]就没遵循不同属性的顺序

写成air_00_20 = file.air.loc['2020-01-01':'2000-12-31',500,:,:]就没遵循某一个属性的具体值的存放顺序)

print一下 air_00_20:可以看到已经把对应的时间范围 和 高度 =500提取出来了 

附:如果数据是datetime格式,还可以这么索引

#若是datetime格式则可以分年、月、日索引#检查格式print(air_00_20.time)air_00_20_sum = air_00_20.loc[air_00_20.time.dt.month.isin([6,7,8])]print(air_00_20_sum)

先看看变量的格式:print(air_00_20.time),下图可以看到是datetime格式,则可以使用dt.month进行月份的索引,写法如上述代码所示。

 输出结果:将6/7/8月的值提取了出来。

来源地址:https://blog.csdn.net/Mluoo/article/details/128048391

免责声明:

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

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

python简单读取和索引.nc文件(气象小白入门版)

下载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动态编译

目录