标签: hdf

pd.read_df throws'无法将WRITABLE标志设置为此数组的True'

跑步时

pd.read_hdf('myfile.h5')

我收到以下回溯错误:

[[......一些较长的追溯]]

read_array中的〜/ .local/lib/python3.6/site-packages/pandas/io/pytables.py(self,key,start,stop)2487 2488 if isinstance(node,tables.VLArray): - > 2489 ret = node [0] [start:stop] 2490 else:2491 dtype = getattr(attrs,'value_type',None)

getitem中的〜/ .local/lib/python3.6/site-packages/tables / vlarray.py(self,key)

阅读中的〜/ .local/lib/python3.6/site-packages/tables/vlarray.py(自我,开始,停止,步骤)

tables.hdf5extension.VLArray._read_array()中的tables/hdf5extension.pyx

ValueError:无法将WRITEABLE标志设置为此数组的True

不知道发生了什么.我已经尝试重新安装tables,pandas一切基本上,但不想阅读它.

python pytables pandas hdf

16
推荐指数
2
解决办法
5741
查看次数

使用pandas返回hdf文件中所有数据集的列表

这可能是一个愚蠢的问题,但我还没有在熊猫文档或其他地方找到答案.在之前已经提出了同样的问题.但唯一的答案是看看大熊猫文档,正如我所说的那样,没有提供这个问题的答案.

我希望能够构建一个包含多个数据集的hdf文件.一旦关闭了这个hdf,我希望能够列出其中包含的每个数据集.例如:

import pandas as pd
import numpy as np

store = pd.HDFStore('test.h5')
df1 = pd.DataFrame(np.random.randn(10,2), columns=list('AB')
df2 = pd.DataFrame(np.random.randn(10,2), columns=list('AB')
store['df1'] = df1
store['df2'] = df2
print(store)
Run Code Online (Sandbox Code Playgroud)

返回:

<class 'pandas.io.pytables.HDFStore'>
File path: test.h5
/df1           frame          (shape->[10,2])
/df2           frame          (shape->[10,2])
Run Code Online (Sandbox Code Playgroud)

但是,如果您关闭hdf store.close()然后尝试使用pd.read_hdf()以下错误返回它:

ValueError: key must be provided when HDF contains multiple datasets.
Run Code Online (Sandbox Code Playgroud)

有没有办法返回所有这些数据集的列表?

在此先感谢您的帮助!

python pandas hdf

10
推荐指数
1
解决办法
2541
查看次数

将hdf文件读入R并将其转换为geoTIFF栅格

我正在尝试将MODIS 17数据文件读入R,操纵它们(裁剪等),然后将它们保存为geoTIFF.数据文件.hdf格式化,似乎没有一种简单的方法将它们读入R.

与其他主题相比,没有很多建议,其中大部分都是几年之久.其中一些还建议使用其他程序,但我想坚持使用R.

人们用什么包来处理.hdfR中的文件?

gis r gdal geotiff hdf

10
推荐指数
2
解决办法
1万
查看次数

将大熊猫df保存到hdf时发生OverflowError

我有一个大的Pandas数据框(〜15GB,8300万行),我有兴趣另存为h5(或feather)文件。一列包含数字的长ID字符串,该字符串应具有字符串/对象类型。但是即使我确保熊猫将所有列解析为object

df = pd.read_csv('data.csv', dtype=object)
print(df.dtypes)  # sanity check
df.to_hdf('df.h5', 'df')

> client_id                object
  event_id                 object
  account_id               object
  session_id               object
  event_timestamp          object
  # etc...
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

  File "foo.py", line 14, in <module>
    df.to_hdf('df.h5', 'df')
  File "/shared_directory/projects/env/lib/python3.6/site-packages/pandas/core/generic.py", line 1996, in to_hdf
    return pytables.to_hdf(path_or_buf, key, self, **kwargs)
  File "/shared_directory/projects/env/lib/python3.6/site-packages/pandas/io/pytables.py", line 279, in to_hdf
    f(store)
  File "/shared_directory/projects/env/lib/python3.6/site-packages/pandas/io/pytables.py", line 273, in <lambda>
    f = lambda store: store.put(key, value, **kwargs)
  File "/shared_directory/projects/env/lib/python3.6/site-packages/pandas/io/pytables.py", line 890, in put
    self._write_to_group(key, value, append=append, **kwargs) …
Run Code Online (Sandbox Code Playgroud)

python-3.x pandas hdf feather

9
推荐指数
1
解决办法
351
查看次数

将HDF5转换为Parquet而不加载到内存中

我有一个大型数据集(~600 GB)存储为HDF5格式.由于它太大而无法放入内存中,我想将其转换为Parquet格式并使用pySpark执行一些基本数据预处理(归一化,查找相关矩阵等).但是,我不确定如何将整个数据集转换为Parquet而不将其加载到内存中.

我看了这个要点:https://gist.github.com/jiffyclub/905bf5e8bf17ec59ab8f#file-hdf_to_parquet-py,但似乎整个数据集都被读入内存.

我想到的一件事是以块的形式读取HDF5文件并将其逐步保存到Parquet文件中:

test_store = pd.HDFStore('/path/to/myHDFfile.h5')
nrows = test_store.get_storer('df').nrows
chunksize = N
for i in range(nrows//chunksize + 1):
    # convert_to_Parquet() ...
Run Code Online (Sandbox Code Playgroud)

但是我找不到任何允许我逐步构建Parquet文件的文档.任何进一步阅读的链接将不胜感激.

python hdf5 pandas parquet hdf

8
推荐指数
1
解决办法
2064
查看次数

在 java 中的流中读取 HDF5

我想读取一些几 GB 的 HDF5 流。为了可移植性,我也想留在原生 Java 中。

我已经尝试过 Java HDF 对象包和 Java HDF5 接口 (JHI5),但这些是一些 JNI 解决方案(如果我找不到更好的选择,我可能会重新考虑)。

https://github.com/jamesmudd/jhdf是一个原生 Java 库,但不支持切片或流式传输,因此不适用于大文件。

原生 Java 中还有更多选择吗?

编辑:我发现了这个:https : //www.unidata.ucar.edu/software/netcdf-java/current/ 它支持切片但不支持流式传输。

java hdf5 hdf

7
推荐指数
1
解决办法
450
查看次数

如何使用h5py读取仅包含数据集(无组)的HDF5文件?

我有HDF5文件,我想使用Python模块h5py打开(在Python 2.7中).

当我有一个包含组和数据集的文件时,这很容易:

import h5py as hdf

with hdf.File(relative_path_to_file, 'r') as f:
    my_data = f['a_group']['a_dataset'].value
Run Code Online (Sandbox Code Playgroud)

但是,在我目前的情况下,我没有团体.只有数据集.不幸的是,无论我尝试什么,我都无法访问我的数据.以下工作都没有(全部中断KeyErrors或ValueErrors):

my_data = f['a_dataset'].value #KeyError

my_data = f['/a_dataset'].value #KeyError

my_data = f['/']['a_dataset'].value #KeyError

my_data = f['']['a_dataset'].value #ValueError

my_data = f['.']['a_dataset'].value #KeyError
Run Code Online (Sandbox Code Playgroud)

如果没有解决方案,我可以重新制作我的文件以拥有一个组.看起来应该有一个解决方案,但......

似乎h5py没有看到任何键:

f.keys()
[]
Run Code Online (Sandbox Code Playgroud)

python hdf5 python-2.7 h5py hdf

6
推荐指数
1
解决办法
1万
查看次数

如何检查文件是否为有效的 HDF5 文件?

根据此处给出的示例,我将文件图像作为带有有效处理程序的字符串加载到内存中。这是使用H5LTopen_file_image().

如何检查文件是否为有效的 HDF5 文件?

我只找到了一个名为 的程序H5check,它的源代码很复杂。所以,我想知道,是否有一个带有简单返回值的简单函数来验证hid_t处理程序中的任何内容都是有效的 HDF5 文件?

c++ validation hdf5 hdf

6
推荐指数
1
解决办法
2562
查看次数

将 Pandas DataFrame 写入内存缓冲区中的 HDF

我想在内存中获取一个数据帧作为 hdf。下面的代码导致“AttributeError: '_io.BytesIO' object has no attribute 'put'”。我正在使用 python 3.5 和 Pandas 0.17

import pandas as pd
import numpy as np
import io

df = pd.DataFrame(np.arange(8).reshape(-1, 2), columns=['a', 'b'])
buf = io.BytesIO()
df.to_hdf(buf, 'some_key')
Run Code Online (Sandbox Code Playgroud)

更新:正如 UpSampler 指出的那样,“path_or_buf”不能是 io 流(我觉得这很令人困惑,因为 buf 通常可以是 io 流,请参阅to_csv)。除了写入磁盘并将其读回之外,我可以在内存中获取数据帧作为 hdf 吗?

python pandas hdf

6
推荐指数
1
解决办法
1328
查看次数

使用 h5py 锁定 HDF 文件

我有一大堆通过 h5py 与 hdf 文件交互的代码。该代码已运行多年。最近,随着 python 环境的变化,我收到了这个新的错误消息。

IOError: Unable to open file (unable to lock file, errno = 11, error message = 'Resource temporarily unavailable')

有趣的是,该错误在某些地方间歇性地发生,而在其他地方持续发生。在经常发生这种情况的地方,我查看了我的代码并确认没有其他 h5py 实例连接到该文件,并且最后一个连接已正确刷新和关闭。同样,在环境发生变化之前,这一切都运行良好。

以下是我的 conda 环境中的片段:

h5py 2.8.0 py27h470a237_0 conda-forge hdf4 4.2.13 0 conda-forge hdf5 1.10.1 2 conda-forge

hdf5 python-2.7 h5py hdf

6
推荐指数
1
解决办法
1万
查看次数

标签 统计

hdf ×10

hdf5 ×5

pandas ×5

python ×5

h5py ×2

python-2.7 ×2

c++ ×1

feather ×1

gdal ×1

geotiff ×1

gis ×1

java ×1

parquet ×1

pytables ×1

python-3.x ×1

r ×1

validation ×1