Python读取并修改CDF文件with spacepy

文章提供了一步步的指南来安装和使用spacepy库,该库用于读取和修改CDF(CoordinatedDataFormat)文件。首先,介绍了如何在Windows上下载和安装NASA的CDFLib,然后通过pip安装spacepy。接着,设置CDFLIB的环境变量,并展示了如何使用Python接口读取CDF文件,将其数据转化为DataFrame进行后续的数据分析和处理。
摘要由CSDN通过智能技术生成

使用指南,包括读取,修改CDF文件:https://spacepy.github.io/pycdf.html

安装:https://spacepy.github.io/install_windows.html#windows-cdf

step 1

下载安装NASA CDF Lib,https://spacepy.github.io/install_windows.html#windows-cdf有安装可执行文件的下载,但是是3.7。
https://cdf.gsfc.nasa.gov/ 最新版本和说明(目前3.9)。
工位windows path: C:\Program Files\CDF_Distribution, 用的是3.7的版本。
这个文件夹下有三个GUI,但是目前还没用过,都是用的Python接口。命令行不说了,不会用。

step 2

安装spacepy

$pip install spacepy

所需wheel查看https://spacepy.github.io/install_windows.html#windows-cdf

$conda install m2w64-gcc-fortran libpython

step 3

复制lib文件夹的路径,如C:\Program Files\CDF_Distribution\cdf37_1-dist\lib
配置CDFlib的环境变量

import os
os.environ["CDF_LIB"] = "C:\Program Files\CDF_Distribution\cdf37_1-dist\lib"

step 4

读取cdf并创建dataframe,准备处理数据

from spacepy import pycdf

cdf = pycdf.CDF('sta_l1s_mag_sc_20230224000000_20230227235859.cdf')
cdf_dat = cdf.copy()
cdf_dat

>>>{'Epoch': VarCopy([datetime.datetime(2023, 2, 24, 0, 0, 0, 91000),
          datetime.datetime(2023, 2, 24, 0, 0, 0, 216000),
          datetime.datetime(2023, 2, 24, 0, 0, 0, 341000), ...,
          datetime.datetime(2023, 2, 27, 23, 58, 59, 681000),
          datetime.datetime(2023, 2, 27, 23, 58, 59, 806000),
          datetime.datetime(2023, 2, 27, 23, 58, 59, 931000)], dtype=object),
 'BFIELD': VarCopy([[-3.2409024,  4.032147 ,  2.3120546,  5.665414 ],
          [-3.2263246,  4.0321617,  2.326434 ,  5.6629524],
          [-3.2556577,  4.046645 ,  2.3263192,  5.6900115],
          ...,
          [ 4.8525386,  3.8185568,  2.2419784,  6.542797 ],
          [ 4.662536 ,  3.5995345,  2.4403715,  6.3495092],
          [ 4.749826 ,  3.6141431,  2.5552962,  6.465585 ]], dtype=float32),
 'CART_LABL_1': VarCopy(['Bx(s/c)', 'By(s/c)', 'Bz(s/c)', 'BTotal '], dtype='<U7'),
 'metavar0': VarCopy(['Bx(s/c)', 'By(s/c)', 'Bz(s/c)', 'BTotal '], dtype='<U7')}
 
cdf.close()
import pandas as pd
df1 = pd.DataFrame(cdf_dat['BFIELD'],index=cdf_dat['Epoch'],columns=cdf_dat['CART_LABL_1'])
df1

>>>                      Bx(s/c)	 By(s/c)	 Bz(s/c)	BTotal
2023-02-24 00:00:00.091	-3.240902	4.032147	2.312055	5.665414
2023-02-24 00:00:00.216	-3.226325	4.032162	2.326434	5.662952
2023-02-24 00:00:00.341	-3.255658	4.046645	2.326319	5.690012
2023-02-24 00:00:00.466	-3.241202	4.061195	2.355046	5.703844
2023-02-24 00:00:00.591	-3.241024	4.046680	2.326401	5.681652
...	...	...	...	...
2023-02-27 23:58:59.431	4.880218	3.657736	2.842142	6.700207
2023-02-27 23:58:59.556	4.997655	3.818484	2.557359	6.761693
2023-02-27 23:58:59.681	4.852539	3.818557	2.241978	6.542797
2023-02-27 23:58:59.806	4.662536	3.599535	2.440372	6.349509
2023-02-27 23:58:59.931	4.749826	3.614143	2.555296	6.465585
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值