gpt4 book ai didi

python - PyTables 读取随机子集

转载 作者:太空狗 更新时间:2023-10-29 21:31:51 25 4
gpt4 key购买 nike

是否可以从 HDF5 中读取行的随机子集(通过 pyTables 或者,最好是 pandas)?我有一个包含数百万行的非常大的数据集,但只需要几千个样本进行分析。那么从压缩的 HDF 文件中读取呢?

最佳答案

使用HDFStore 文档为here ,压缩文档为here

0.13 支持通过构造索引进行随机访问

In [26]: df = DataFrame(np.random.randn(100,2),columns=['A','B'])

In [27]: df.to_hdf('test.h5','df',mode='w',format='table')

In [28]: store = pd.HDFStore('test.h5')

In [29]: nrows = store.get_storer('df').nrows

In [30]: nrows
Out[30]: 100

In [32]: r = np.random.randint(0,nrows,size=10)

In [33]: r
Out[33]: array([69, 28, 8, 2, 14, 51, 92, 25, 82, 64])

In [34]: pd.read_hdf('test.h5','df',where=pd.Index(r))
Out[34]:
A B
69 -0.370739 -0.325433
28 0.155775 0.961421
8 0.101041 -0.047499
2 0.204417 0.470805
14 0.599348 1.174012
51 0.634044 -0.769770
92 0.240077 -0.154110
25 0.367211 -1.027087
82 -0.698825 -0.084713
64 -1.029897 -0.796999

[10 rows x 2 columns]

要包含附加条件,您可以这样做:

# make sure that we have indexable columns
df.to_hdf('test.h5','df',mode='w',format='table',data_columns=True)

# select where the index (an integer index) matches r and A > 0
In [14]: r
Out[14]: array([33, 51, 33, 95, 69, 21, 43, 58, 58, 58])

In [13]: pd.read_hdf('test.h5','df',where='index=r & A>0')
Out[13]:
A B
21 1.456244 0.173443
43 0.174464 -0.444029

[2 rows x 2 columns]

关于python - PyTables 读取随机子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21039772/

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