- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在试验不同的 pandas 友好存储方案来存储报价数据。迄今为止最快的(就读取和写入而言)是使用具有 blosc 压缩和“固定”格式的 HDFStore。
store = pd.HDFStore(path, complevel=9, complib='blosc')
store.put(symbol, df)
store.close()
我通过股票代码进行索引,因为这是我的常用访问模式。但是,此方案每个符号 增加了大约 1 MB 的空间。也就是说,如果微型市值股票的数据框仅包含当天的一千个报价点,则文件的大小将增加一兆字节。因此,对于大量小型股票而言,.h5
文件很快就会变得笨拙。
有没有办法在保持 blosc/fixed 格式的性能优势的同时减小尺寸?我试过“表格”格式,每个符号大约需要 285 KB。
store.append(symbol, df, data_columns=True)
但是,这种格式的读写速度非常慢。
如果有帮助,这是我的数据框的样子:
exchtime datetime64[ns]
localtime datetime64[ns]
symbol object
country int64
exch object
currency int64
indicator int64
bid float64
bidsize int64
bidexch object
ask float64
asksize int64
askexch object
blosc 压缩本身效果很好,因为生成的 .h5
文件每行仅需要 30--35 字节。所以现在我主要关心的是减少 HDFStore 中每个节点的大小损失。
最佳答案
据我所知,PyTables 中的 block 大小有一定的最小值。
这里有一些建议:
您可以使用选项 chunkshape='auto'
ptrepack
文件。这将使用通过查看所有数据计算得出的 block 形状来打包它,并且可以以更有效的 block 大小重新打包数据,从而产生更小的文件大小。原因是 PyTables 需要被告知最终数组/表大小的预期行数。
您可以通过传递 expectedrows=
(并且仅执行一次追加)在 Table
格式中实现最佳 block 大小。但是,ptrepacking
在这里仍然有优势。
你也可以试试用Table格式写,不用设置所有的data_columns=True
,只传format='table'
;它将写入表格格式(但您将无法通过索引进行查询);但它存储为单个 block ,因此几乎与固定的一样快(但空间效率更高)
在 PyTables 3.1(刚刚发布)中,有一个新的 blosc
过滤器。这可能会减少文件大小。参见 here
关于python - 如何减少 HDFStore 的大小开销?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21635224/
我将所有数据都放入了 HDFStore(是的!),但是如何从中取出数据.. 我在我的 HDFStore 中保存了 6 个数据帧作为 frame_table。这些表格中的每一个看起来如下所示,但长度各不
我确定这可能非常简单,但我无法弄清楚如何通过日期时间索引对 Pandas HDFStore 表进行切片以获得特定范围的行。 我有一个看起来像这样的表: mdstore = pd.HDFStore(st
我有一个 pandas HDFStore,我尝试从中进行选择。我想在一个大的 np.array 中选择两个时间戳之间的数据和一个 id。以下代码可以工作,但仅在查询列表中的成员身份时才会占用过多内存。
我对 pandas' HDFStore 有一些问题速度太慢了,不幸的是我无法从这里的其他问题中找到令人满意的解决方案。 情况 我有一个很大的 DataFrame,其中大部分包含 float ,有时包含
我对 pandas' HDFStore 有一些问题速度太慢了,不幸的是我无法从这里的其他问题中找到令人满意的解决方案。 情况 我有一个很大的 DataFrame,其中大部分包含 float ,有时包含
清楚我做错了什么吗? 我正在尝试 pandas HDFStore.select start 和 stop 选项,但没有什么区别。 我使用的命令是: import pandas as pd hdf =
我希望将我读入的两个表存储在数据框中。 我正在将 h5 文件读入我的代码中: with pd.HDFStore(directory_path) as store: self.df = stor
我在平面文件中有数 TB 的数据(在子集中),我想使用 Python Pandas/Pytables/H5py 将这些数据转换为 HDF5 以加快查询和搜索速度。我计划使用 to_hdf 之类的方法转
我有一个 pandas HDFStore,我试图从中进行选择。我想在一个大的 np.array 中选择两个带有 id 的时间戳之间的数据。以下代码有效,但仅在查询列表中的成员资格时占用过多内存。如果我
问题:如何创建一个允许对 pandas HDFStore 对象中的多个列进行迭代的生成器? 我正在尝试为 pandas HDFStore 对象创建一个包装类。我试图实现的功能之一是能够按给定的 blo
我在具有多索引的 HDFStore 中将frame_table 称为“数据”。在 DataFrame 中,它可能看起来像这样 var1 var2 va
以下代码片段: HDFStore = pandas.io.pytables.HDFStore lock = threading.RLock() with lock:
Pandas "Group By" Query on Large Data in HDFStore? 我已经尝试了答案中的示例,只是我希望能够按两列进行分组。 基本上,修改代码看起来像 with pd
我通过 Pandas 将大量数据帧导出到一系列 HDFStore 文件。我需要能够根据需要快速提取每个数据帧的最新记录。 设置: File path: /data/storage_X100.hdf
这很好用: cols = ['X', 'Y'] ind = [('A', 1), ('B', 2)] ind = pd.MultiIndex.from_tuples(index, names=['fo
假设我有一个 store = pd.HDFStore('cache/cache.h5') 我有一个存储的 DataFrame store['myDF'] 如果在我的代码中,我这样做: a = stor
我是 pytables 的新手,对存储压缩的 pandas DataFrame 有疑问。我当前的代码是: import pandas # HDF5 file name H5name="C:\\MyDi
我想知道为什么 HDFStore 会在 pandas 中的字符串列上发出警告。我认为它可能是我真实数据库中的 NaN,但在这里尝试它会给我两个列的警告,即使一个没有混合并且只是字符串。 使用 .13.
我正在试验不同的 pandas 友好存储方案来存储报价数据。迄今为止最快的(就读取和写入而言)是使用具有 blosc 压缩和“固定”格式的 HDFStore。 store = pd.HDFStore(
我有以下 DataFrame,它作为名为数据的 frame_table 存储在 HDFStore 对象中: shipmentid qty catid
我是一名优秀的程序员,十分优秀!