1.数据结构
  NetCDF(network Common Data Form)网络通用数据格式包括变量、维和属性。通量数据RDMF_2011_L3.nc可利用软件Panoply进行可视化,如下图所示:
2.数据读取
  Pyton读取nc数据,现在大部分的方法利用netCDF4包的Dataset方法读取文件,但nc格式的通量数据则无法利用Dataset读取出变量的值。

import pandas as pd
import os
from netCDF4 import Dataset# 获取nc文件的内部信息
nc =Dataset(r'D:\NC_files\fifth_page\Red Dirt Melon Farm OzFlux tower site\RDMF_2011_L3.nc')
# 获取RDMF_2011_L3.nc中所有的变量
vars=nc.variables.keys()
print(vars)

输出结果:odict_keys([‘Ah’, ‘Ah_QCFlag’, ‘Cc’, ‘Cc_QCFlag’, ‘Day’, ‘Day_QCFlag’, ‘Fa’, ‘Fa_QCFlag’, ‘Fc’, ‘Fc_QCFlag’, ‘Fe’, ‘Fe_QCFlag’, ‘Fg’, ‘Fg_QCFlag’, ‘Fh’, ‘Fh_QCFlag’, ‘Fld’, ‘Fld_QCFlag’, ‘Flu’, ‘Flu_QCFlag’, ‘Fm’, ‘Fm_QCFlag’, ‘Fn’, ‘Fn_QCFlag’, ‘Fsd’, ‘Fsd_QCFlag’, ‘Fsu’, ‘Fsu_QCFlag’, ‘Hdh’, ‘Hdh_QCFlag’, ‘Hour’, ‘Hour_QCFlag’, ‘Minute’, ‘Minute_QCFlag’, ‘Month’, ‘Month_QCFlag’, ‘Precip’, ‘Precip_QCFlag’, ‘Second’, ‘Second_QCFlag’, ‘Sws’, ‘Sws_QCFlag’, ‘Sws_50cm’, ‘Sws_50cm_QCFlag’, ‘Sws_5cm’, ‘Sws_5cm_QCFlag’, ‘Ta’, ‘Ta_QCFlag’, ‘Ts’, ‘Ts_QCFlag’, ‘Wd_CSAT’, ‘Wd_CSAT_QCFlag’, ‘Ws_CSAT’, ‘Ws_CSAT_QCFlag’, ‘Year’, ‘Year_QCFlag’, ‘eta’, ‘eta_QCFlag’, ‘ps’, ‘ps_QCFlag’, ‘theta’, ‘theta_QCFlag’, ‘ustar’, ‘ustar_QCFlag’, ‘xlDateTime’, ‘xlDateTime_QCFlag’])

import pandas as pd
import os
from netCDF4 import Dataset# 获取nc文件的内部信息
nc =Dataset(r'D:\NC_files\fifth_page\Red Dirt Melon Farm OzFlux tower site\RDMF_2011_L3.nc')
# 获取RDMF_2011_L3.nc中所有的变量
vars=nc.variables.keys()
for var in vars:#读取每个变量的值var_data=nc.variables[var][:].dataprint(var,var_data)

输出结果:Traceback (most recent call last):
File “E:/05study/Pycode/Python/TSTLProject/test.py”, line 52, in
var_data=nc.variables[var][:].data

ValueError: could not convert string to float: '0,50’
根据以上代码无法读取变量的值,出现错误:ValueError: could not convert string to float: ‘0,50’,其原因我猜可能是变量的属性描述中的valid_range = “0,50”,如下图所示,如果哪位知道真实原因,欢迎评论交流。

经过多次尝试,我们引入了gdal包进行通量数据的读取,以读取变量Ah为例,其他变量都是如此,代码如下:

import pandas as pd
import os
from osgeo import gdal#RDMF_2011_L3.nc文件路径
dir=r'D:\NC_files\fifth_page\Red Dirt Melon Farm OzFlux tower site\RDMF_2011_L3.nc'
#打开RDMF_2011_L3.nc中的Ah变量
variable = gdal.Open('NETCDF:' + dir + ':' + 'Ah')
# 获取变量值,并按行的方式将多维数组变成一维
variable_value = variable.ReadAsArray().flatten('C')
print(variable_value)

输出结果:[ 9.884751e+00 -9.999000e+03 -9.999000e+03 … 1.499470e+01 1.622357e+01 1.678135e+01],数据格式为numpy数组。
3.变量值写入CSV

import pandas as pd
import os
from osgeo import gdal
from netCDF4 import Dataset#RDMF_2011_L3.nc文件路径
dir=r'D:\NC_files\fifth_page\Red Dirt Melon Farm OzFlux tower site\RDMF_2011_L3.nc'
# 获取nc文件的内部变量
nc = Dataset(dir)
# 定义一个DataFrame()存储变量值
df = pd.DataFrame()
#循环获取nc中的各个变量,并且把变量的值读出
for var in nc.variables.keys():variable = gdal.Open('NETCDF:' + dir + ':' + var)# 获取变量值,并按行的方式将多维数组变成一维variable_value = variable.ReadAsArray().flatten('C')# 将变量和值写入到DataFrame中df[var] = pd.Series(variable_value)
#将DataFrame中的变量值写入到test.csv中
df.to_csv('test.csv', encoding='utf-8', index=False)

4.结果

通量数据处理(Python)——NC格式转为CSV格式相关推荐

  1. 气象nc文件转为csv格式

    #需要安装netCDF4安装包 from netCDF4 import Dataset import numpy as np import os from pandas import Series i ...

  2. 批量将NC文件转为tif格式

    批量将多年的NC文件转为tif格式进行处理(来源:https://www.geek-share.com/detail/2763962738.html) 所参考和借鉴的文章的链接如下: https:// ...

  3. python快速批量将jpg图片格式转为pgm格式

    python快速批量将jpg或者png图片格式转为pgm格式. 代码里两个部分要改成你自己的路径,已经在代码备注. import os import cv2path = r'D:\DeepLearni ...

  4. 如何批量将 Excel 文档转为 Csv 格式

    概要:CSV 称为逗号分隔值,其文件以纯文本形式存储表格数据(数字和文本),而熟悉 Excel 的小伙伴应该也知道 Excel 也是存储表格数据,只不过 Excel 不仅支持文本,还支持图片.视频等多 ...

  5. Convert PLY to VTK Using PCL 1.6.0 or PCL 1.8.0 使用PCL库将PLY格式转为VTK格式

    PLY格式是比较流行的保存点云Point Cloud的格式,可以用MeshLab等软件打开,而VTK是医学图像处理中比较常用的格式,可以使用VTK库和ITK库进行更加复杂的运算处理.我们可以使用Par ...

  6. ML之FE:基于FE特征工程对RentListingInquries数据集进行预处理并导出为三种格式文件(csv格式/txt格式/libsvm稀疏txt格式)

    ML之FE:基于FE特征工程对RentListingInquries数据集进行预处理并导出为三种格式文件(csv格式/txt格式/libsvm稀疏txt格式) 目录 输出结果 设计思路 核心代码 输出 ...

  7. Sql:成功解决将sql输出的datetime时间格式转为常规格式

    Sql:成功解决将sql输出的datetime时间格式转为常规格式 目录 SQL应用案例 1.将sql输出的datetime时间格式转为常规格式 SQL应用案例 1.将sql输出的datetime时间 ...

  8. Excel 转 vCard格式、CSV格式

    Excel 转vCard格式(常用于Gmail, Yahoo, 163等).CSV格式(常用于Outlook, Foxmail等) 最近公司邮件通讯录需要更新,我就将原来的通讯录给删除了,准备重新导入 ...

  9. 腾讯视频下载视频QLV格式转为MP4格式

    腾讯视频下载视频QLV格式转为MP4格式(最新) 腾讯视频跟新之后缓存路径 现在里面就没有vodcache文件夹了,所以也没有tdl文件了,那么之前大部分教程里在cmd命令中用copy/E 0*.td ...

最新文章

  1. 【每日一算法】买卖股票的最佳时机
  2. pip卸载模块/宏包(python)
  3. Java 中类的比较与排序方法(应用Comparable接口与Comparator接口)通俗易懂
  4. linux安装mysql启动失败的原因_爱在linux系统安装mysql启动失败如何处理?
  5. linux静默删除文件夹,Linux常用命令10 - unzip
  6. python numpy遍历_NumPy 迭代数组
  7. idea更新maven依赖包
  8. eclipse中自定义videoview类_android控件之VideoView建立自己的播放器
  9. LeetCode 792. 匹配子序列的单词数(Number of Matching Subsequences)
  10. mysql innodb 浅读
  11. DC-DC转换器分类-和讯康讲堂
  12. 圣思园 java_圣思园Java8新特性及实战视频教程 下载
  13. 极智装修知识|飘窗五大改造妙招,让你只想窝在这
  14. 程序员经常浏览的网站
  15. 凹凸贴图、法线贴图、置换贴图
  16. 用Vue-cli从头搭建项目
  17. 二维vector的输入
  18. 使用Databricks作为分析平台
  19. Layui表格中的图片
  20. java jode_Java中joda日期格式化工具的使用示例

热门文章

  1. 在Ubuntu 16.04下安装g2o
  2. 物联网设备安全2.1 酒店门锁和磁卡
  3. 酒店智能门锁方案功能及其特点介绍
  4. tf.ones、tf.zeros、tf.ones_like、tf.zeros_like、tf.fill、tf.eye、tf.one_hot、tf.range、tf.linspace函数
  5. 阿里云移动测试平台MQC移动测试沙龙
  6. 工商管理专业知识与实务(初级)【8】
  7. 关于windows安全权限
  8. 北醒激光雷达模组 资料汇总
  9. 硬件光线追踪实现移动端影视级画质! Imagination、腾讯、完美技术大咖这样说...
  10. “核高基”重大专项取得阶段性成果