gpt4 book ai didi

python - 将数据集转换为 HDF5 数据集

转载 作者:太空宇宙 更新时间:2023-11-03 13:15:14 24 4
gpt4 key购买 nike

我有一个数据集,我想将其转换为 HDF5 格式。它是来自 NOAA 的数据集.目录结构类似于:

NOAA
├── code
├── ghcnd_all
├── ghcnd_all.tar.gz
├── ghcnd-stations.txt
├── ghcnd-version.txt
├── readme.txt
└── status.txt

我正在使用 pandas 进行数据分析。我有兴趣这样做的主要原因是为了节省空间,数据集约为 25Gb。

如何将此数据集转换为单个 .hdf5 文件?

最佳答案

HDF5 中的数据存储在数据集中,这些数据集可能是多维的,最多 32 个维度,每个维度最多有一个无符号的 64 位整数长度(列数),并且包含任意大小的数据类型,包括复合数据类型单个数据集的上限超过 16 艾字节。数据集旨在保存结构化数据,例如 numpy 数组、pandas DataFrame、图像和电子表格。我还没有找到任何方法可以直接将纯文本或 tar.gz 文件放入 HDF5。但是,使用 Python,您可以将文件读入字符串并将其放入数据集中,如 Strings in HDF5 所示。 .除了数据集之外,组是 HDF5 中的另一个主要对象类型,是数据集和其他组的容器。数据集和组类似于文件和目录(或文件夹),并为像 Unix 文件系统这样的分层格式提供基础,其中可以使用以/开头的路径名访问对象。 HDF5 文件是可能包含多个数据集和组的容器,并且没有大小限制。

为了更好地了解 HDF5 是什么,我建议从 HDF5 Downloads 下载它和随附的实用程序以及 HDFView。 ,全部安装然后通过 Learning HDF5 with HDFView ,可在 30 分钟内完成。 HDFView 是一个 Java GUI,可以轻松地与 HDF5 进行交互,但是您不能简单地将文件拖放到其中,但可以将文件数据导入到数据集中。使用 pandas 创建 HDF5 文件并向其中添加数据帧非常容易,这是将数据放入 HDF5 文件的好方法。下面是一个演示。有关 HDF5 的更多信息,您可以查看 HDF5 Tutorials 上列出的其他教程。 , HDF5 Python Examples by API , Additional HDF5 Python Examples和 Python h5py 包文档位于 HDF5 for Python .有关 Pandas 的更多信息,10 Minutes to pandas是一个很好的起点,然后是 pandas Cookbook一系列代码示例和 Python for Data Analysis由韦斯·麦金尼 (Wes McKinney) 撰写,这是自他发明和开发大部分 Pandas 以来最好的整体教程,并且是一位出色的作者。

这是一个使用 pandas 创建 HDF5 文件的示例,将 DataFrame 加载到其中并检索它的副本并将其存储在另一个变量中:

In [193]: import pandas as pd

In [194]: frame = pd.read_csv('test.csv')

In [195]: frame
Out[195]:
a b c d message
0 1 2 3 4 one
1 5 6 7 8 two
2 9 10 11 12 three

In [196]: type(frame)
Out[196]: pandas.core.frame.DataFrame

In [197]: hdf5store = pd.HDFStore('mydata.h5')

In [198] %ls mydata.h5
Volume in drive C is OS
Volume Serial Number is 5B75-665D

Directory of C:\Users\tn\Documents\python\pydata

09/02/2015 12:41 PM 0 mydata.h5
1 File(s) 0 bytes
0 Dir(s) 300,651,331,584 bytes free

In [199]: hd5store['frame'] = frame

In [200]: hdf5store
Out[200]:
<class 'pandas.io.pytables.HDFStore'>
File path: mydata.h5
/frame frame (shape->[3,5])

In [201]: list(hdf5store.items())
Out[201]:
[('/frame', /frame (Group) ''
children := ['block0_values' (Array), 'block0_items' (Array), 'axis1' (Array), 'block1_items' (Array), 'axis0' (Array), 'block1_values' (VLArray)])]

In [202]: hdf5store.close()

现在演示从 mydata.h5 检索帧的能力:

In [203]: hdf5store2 = pd.HDFStore('mydata.h5')

In [204]: list(hdf5store2.items())
Out[204]:
[('/frame', /frame (Group) ''
children := ['block0_values' (Array), 'block0_items' (Array), 'axis1' (Array), 'block1_items' (Array), 'axis0' (Array), 'block1_values' (VLArray)])]

In [205]: framecopy = hdf5store2['frame']

In [206]: framecopy
Out[206]:
a b c d message
0 1 2 3 4 one
1 5 6 7 8 two
2 9 10 11 12 three

In [207]: framecopy == frame
Out[207]:
a b c d message
0 True True True True True
1 True True True True True
2 True True True True True

In [208]: hdf5store2.close()

关于python - 将数据集转换为 HDF5 数据集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32358443/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com