IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> Python读取nc格式的CSIF数据转成csv格式 -> 正文阅读

[Python知识库]Python读取nc格式的CSIF数据转成csv格式

1 下载安装netCDF4包

使用清华大学的镜像:
pip install -i https://pypi.tuna.tsinghua.edu.cn/simple netCDF4

2 编写程序

2.1 获取netCDF4文件的格式1

#一、加载包
from netCDF4 import Dataset
import numpy as np
import os


path = "F:\\OCO2.SIF.all.daily.2001.nc"
csv_path = "F:\\test.csv"
dst = Dataset(path, mode='r', format="netCDF4")

# 二、查看nc文件中包含了什么
print(dst)
运行结果:
<class 'netCDF4._netCDF4.Dataset'>
root group (NETCDF4 data model, file format HDF5):
    dimensions(sizes): lat(360), lon(720), doy(92)
    variables(dimensions): float32 lat(lat), float32 lon(lon), int16 doy(doy), float32 all_daily_sif(doy, lat, lon)
    groups: 

由上可见CSIF数据all_daily_sif是三维的,具体size为:
d o y ( 92 ) × l a t ( 360 ) × l o n ( 720 ) doy(92)\times lat(360)\times lon(720) doy(92)×lat(360)×lon(720)
由于CSIF时间分辨率是4天,所以doy维是92;空间分辨率是0.5°,所以lat是360,lon是720。

#三、使用variables.keys()获取每个变量名,使用variables[i].ncattrs()获取每个变量的属性名
print(dst.variables.keys())
for i in dst.variables.keys():
    print('%s: %s' % (i, dst.variables[i].ncattrs()))
运行结果是:
dict_keys(['lat', 'lon', 'doy', 'all_daily_sif'])
lat: ['units', 'standard_name', 'axis', 'long_name']
lon: ['units', 'standard_name', 'axis', 'long_name']
doy: []
all_daily_sif: ['missing_value']
#四、输出每个variables[i]的信息:
print(dst.variables.keys())
for i in dst.variables.keys():
    print(dst.variables[i])
    print('\n')
运行结果:
dict_keys(['lat', 'lon', 'doy', 'all_daily_sif'])
<class 'netCDF4._netCDF4.Variable'>
float32 lat(lat)
    units: degrees_north
    standard_name: latitude
    axis: Y
    long_name: latitude
unlimited dimensions: 
current shape = (360,)
filling on, default _FillValue of 9.969209968386869e+36 used

<class 'netCDF4._netCDF4.Variable'>
float32 lon(lon)
    units: degrees_east
    standard_name: longitude
    axis: X
    long_name: longitude
unlimited dimensions: 
current shape = (720,)
filling on, default _FillValue of 9.969209968386869e+36 used

<class 'netCDF4._netCDF4.Variable'>
int16 doy(doy)
unlimited dimensions: 
current shape = (92,)
filling on, default _FillValue of -32767 used

<class 'netCDF4._netCDF4.Variable'>
float32 all_daily_sif(doy, lat, lon)
    missing_value: -999.9
unlimited dimensions: 
current shape = (92, 360, 720)
filling on, default _FillValue of 9.969209968386869e+36 used

#五、获取所有维度的size大小并输出
for i in dst.dimensions.keys():
    print('%s_sizes: %s' % (i, dst.dimensions[i].size))
运行结果:
lat_sizes: 360
lon_sizes: 720
doy_sizes: 92

2.2 提取nc数据转存为csv23

# 从cn文件中获取所有的sif、lat、lon值
    IniSif = dst.variables['all_daily_sif'][:].data    
    latdata = dst.variables['lat'][:].data
    londata = dst.variables['lon'][:].data
    
    # 确定行索引名和列索引名,与xy轴方向一致,lat为行索引
    latname = []    
    lonname = []
    for lat in range(0, 360):
        latname.append(str(latdata[lat]))
    for lon in range(0, 720):
        lonname.append(str(londata[lon]))
    
    # 将sif值转换为表格dataframe格式
    sif = IniSif[0][:]
    sifframe = pd.DataFrame(sif, index=latname, columns=lonname)
    for doy in range(1,92):
        # 下面获得第doy天的所有sif
        sif = IniSif[doy][:]
        # 下面将第doy天的sif加上行列索引信息变成表格
        siflist = pd.DataFrame(sif,index = latname,columns =lonname)
        # 下面将已经生成表格合并
        sifframe = pd.concat([sifframe, siflist])

    sifframe.to_csv(csv_path,sep=',')
    dst.close()
        

生成csv文件如下图所示,列索引为lon值,行索引为lat值:
生成csv文件截图,行列索引分别为lat值和l哦那值


  1. 参考文献:https://blog.csdn.net/ch206265/article/details/103779013 ??

  2. 参考文献:https://www.cnblogs.com/android-16/p/11131901.html ??

  3. 参考文献:https://zhuanlan.zhihu.com/p/129351199 ??

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-01-29 23:02:34  更:2022-01-29 23:04:40 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/16 1:53:09-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码