使用Python读取nc数据
在地学领域,nc 格式的文件可谓随处可见,这种文件可以存储多维数字矩阵,同时又封装了自描述信息(例如经纬度、高度层、时间戳、单位等),因此使用起来十分方便,不用担心数据和描述信息分离而导致数据不可用。Python、 NCL 、 Matlab 等都可以对其进行读写操作。以下尝试使用 Python 对 nc 文件进行读取操作。
安装netCDF4模块包
要用 Python 读取 nc 文件最常用的是netCDF4模块,需要先安装该模块才能使用。
安装该模块最方便的方法是使用 conda ,在命令行中输入conda install netCDF4进行安装即可。
ImportError: DLL load failed while importing _netCDF4: 找不到指定的程序
如果安装 netCDF4 完成后,在 python 中使用import netCDF4提示ImportError: DLL load failed while importing _netCDF4: 找不到指定的程序。,则大概率 netCDF4 已经安装,但是该模块的一些依赖库安装不正确。在命令行中使用conda search netCDF4 --info查看 netCDF4 的依赖。如下图所示, netCDF4 依赖于 hdf5 模块,使用 conda install hdf5 安装该模块后即可。

nc 数据读取
以下使用中国的颗粒物浓度数据作为样例数据。
查看数据存储内容
import netCDF4 as nc
file = 'data_dir/sample.nc'
dataset = nc.Dataset(file)
print(dataset.variables.keys())

dataset = nc.Dataset(file): 使用 netCDF4 的 Dataset 方法读取文件,并把netCDF4文件对象赋值给变量 dataset 。dataset.variables.keys(): 查看数据集中所有的属性,此处可以看到数据包括经度、纬度和颗粒物浓度三个属性
查看具体属性值
import netCDF4 as nc
file = 'data_dir/sample.nc'
dataset =nc.Dataset(file)
BC=dataset.variables['BC']
print(BC)
print(dataset.variables['LON'][:])
print(BC[1000][1000])

dataset.variables[name]: 获取数据集中对应的变量。print(dataset.variables[name]): 查看变量相关的属性信息- 通常情况下nc文件中每个变量都会封装其属性,一般会包括全名(long_name),单位(units)等等。
- 除了全名、单位等常规信息,变量属性中还有几个需要注意的信息:
- 变量的类型和维度信息 : 输出字符串的第二行显示了变量的类型和维度信息,如
float32 BC(LAT, LON)表示变量 BC 数据类型为 float32 ,数据是一个二维数组,维度顺序依次是 纬度 LAT 、经度 LON 。 - missing_value : 缺省值,一般都是一个非常大的数字或者非常小的数字,这个数字在正常数据中是不可能出现的。在对数据的处理过程中要考虑和重视缺省值,否则你最后可能会处理处虚假的结果
- add_offset、scale_factor : 这两个参数为解包参数,用于在存储时对数据进行打包,在实际使用的时候再通过解包算法将其还原为真实值。解包算法为
真实值 = 打包值 * scale_factor + add_offset。如果你遇到一个nc文件,读出来的数据很奇怪(很整齐的整数、不合理的数据范围),或者解包参数不为默认值,则需要进行解包处理。
- 变量的类型和维度信息 : 输出字符串的第二行显示了变量的类型和维度信息,如
dataset.variables[name][index]: 获取所需属性property对应索引位置index的属性值,如dataset.variables['LON'][:]获取所有的经度数据,dataset.variables['BC'][1000][500]获取 BC 变量中第1000行第500列对应的数据
本文参考:
使用Python读取nc数据的更多相关文章
- 使用 python 处理 nc 数据
前言 这两天帮一个朋友处理了些 nc 数据,本以为很简单的事情,没想到里面涉及到了很多的细节和坑,无论是"知难行易"还是"知易行难"都不能充分的说明问题,还是& ...
- Windows下Python读取GRIB数据
之前写了一篇<基于Python的GRIB数据可视化>的文章,好多博友在评论里问我Windows系统下如何读取GRIB数据,在这里我做一下说明. 一.在Windows下Python为什么无法 ...
- Python读取JSON数据,并解决字符集不匹配问题
今天来谈一谈Python解析JSON数据,并写入到本地文件的一个小例子. – 思路如下 从一个返回JSON天气数据的网站获取到目标JSON数据串 使用Python解析出需要的部分 写入到本地文件,供其 ...
- python 读取excel数据并将测试结果填入Excel
python 读取excel数据并将测试结果填入Excel 读取一个Excel中的一条数据用例,请求接口,然后返回结果并反填到excel中.过程中会生成请求回来的文本,当然还会生成一个xml文件.具体 ...
- Python读取Excel数据并根据列名取值
一直想将自己接触到的东西梳理一遍,可就是迈不出第一步,希望从这篇总结开始不要再做行动的矮人了. 最近测试过程中需要用到python读取excel用例数据,于是去了解和学习了下xlrd库,这里只记录使用 ...
- python——读取MATLAB数据文件 *.mat
鉴于以后的目标主要是利用现有的Matlab数据(.mat或者.txt),主要考虑python导入Matlab数据的问题.以下代码可以解决python读取.mat文件的问题.主要使用sicpy.io即可 ...
- 利用Python读取外部数据文件
不论是数据分析,数据可视化,还是数据挖掘,一切的一切全都是以数据作为最基础的元素.利用Python进行数据分析,同样最重要的一步就是如何将数据导入到Python中,然后才可以实现后面的数据分析.数 ...
- python 读取二进制数据到可变缓冲区中
想直接读取二进制数据到一个可变缓冲区中,而不需要做任何的中间复制操作.或者你想原地修改数据并将它写回到一个文件中去. 为了读取数据到一个可变数组中,使用文件对象的readinto() 方法.比如 im ...
- Python读取文件数据
1题目要求: 文本文件有这些数据,需要的只有其中的5个属性,如下颜色标记 像以下的数据达到75万组: 1product/productId: B0000UIXZ4 2product/title: Ti ...
- Python读取excel 数据
1.安装xlrd 2.官网 通过官网来查看如何使用python读取Excel,python excel官网: http://www.python-excel.org/ 实例: (1)Excel内容 把 ...
随机推荐
- [转帖]Linux系统中的Page cache和Buffer cache
Free命令显示内存 首先,我们来了解下内存的使用情况: Mem:表示物理内存统计 total:表示物理内存总量(total = used + free) used:表示总计分配给缓存(包含buffe ...
- [转帖]Linux中的用户和用户组
https://www.jianshu.com/p/76700505cac4 1,Linux中的用户分类 超级用户:拥有对系统的最高管理权限,默认是root用户. 普通用户:只能对自己目录下的文件进行 ...
- Sysbench简单测试数据库性能
摘要 先进行了一个PG数据库的测试. Mysql数据库的测试稍后跟上. 紧接着上一篇的安装, 部分文件可能需要特定路径才可以. sysbench 测试的说明 一个参数 这里稍微说一下参数的问题 sys ...
- 简单进行Springboot Beans归属模块单元的统计分析方法
简单进行Springboot Beans归属模块单元的统计分析方法 背景 基于Springboot的产品变的复杂之后 启动速度会越来越慢. 公司同事得出一个结论. beans 数量过多会导致启动速度逐 ...
- React中Props的详细使用和props的校验
props中的children属性 组件标签只用有子节点的时候,props就会有该属性; children的属性跟props一样的,值可以是任意值;(文本,React元素,组件,函数) 组件: < ...
- hadoop实践02---eclipse操作hdfs的api上传文件
1.eclipse中编写代码后双击main方法--->Run as ---> java application ,然后指定的文件 就会提交到hdfs中. 2.查看文件:http://192 ...
- ILRuntime性能测试
我们公司有一个Unity原生开发语言C#写的项目,目前已经在安卓测试过多次,上架IOS在考虑热更,所以对ILRuntim进行性能测试,在测试过程中已经按照官方文档进行了CLR绑定和生成Release的 ...
- 从零开始配置vim(31)——git 配置
很抱歉又拖更了这么久了,在这个新公司我想快速度过试用期,所以大部分的精力主要花在日常工作上面.但是这个系列还是得更新下去,平时只能抽有限的业余时间来准备.这就导致我写这些文章就慢了一些. 废话不多说, ...
- 从零开始配置vim(27)——代码片段
我们之前介绍过缩写相关的内容,缩写是可以自动帮我们将缩写的单词展开成一段完整的话.但是代码本身是结构话的,仅仅使用缩写来配置是无法完成自动生成代码这个步骤的.好在我们大量的插件来进行配置.本篇我们将要 ...
- Couldn't launch Python exit code 9009
Couldn't launch Python exit code 9009 start stable-diffusion-webui,发现,python 环境没有,我本地其实是已经安装完毕的,后来发现 ...