添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

最有效的文件类型,只读取特定的行,在python中(非常大的文件)。

0 人关注

我目前正在使用parquet文件,因为它的读入时间很短。但是现在我想稍微改变我的程序的功能。文件对内存来说会变得太大,而我希望只读入文件的特定行。

每个文件大约有15gb的数据(我将使用多个文件),有几百个列和几百万行。如果我想只读入例如第x行,对其进行操作,然后再读入新的行(重复数百万次),那么最有效的文件类型是什么?

我不太关心压缩问题,因为限制我的因素是内存,而不是存储。

谢谢你的专业知识。

4 个评论
不清楚你是想从输入文件中选择特定的行,还是对给定输入文件的所有行进行一些操作。
你是否尝试过 .hdf5 文件和 h5py 包?
我们希望能够随机选择一个单行(例如),并对该行进行操作。但不需要读完整个文件。我真的很喜欢 hdf5,但是我不相信它可以不通过阅读就选择单行。我说的对吗?
你可以在不阅读内容的情况下跳到文件的任何位置。但为了使其有用,你将需要先创建一些索引。比如行尾字符的字节位置。
python
csv
file
storage
parquet
tom davison
tom davison
发布于 2021-11-03
2 个回答
Micah Kornfield
Micah Kornfield
发布于 2021-11-10
已采纳
0 人赞同

根据具体的要求,我想看看。

  • SQLite
  • RocksDB (使用 "行号 "作为键)。
  • 请注意,Rocks DB会在一个目录下产生多个文件,而不是一个单独的文件。 最后我看了一下,Rocks DB不支持二级索引,所以你只能用你对键的任何选择,除非你想重写数据。 RocksDB项目没有python绑定,但在github上有一些浮动的绑定。

    SQLLite,至少,在初始加载时可能会很慢(我建议在初始加载后在 "行号 "上创建索引)。 但它允许创建二级索引,并通过这些索引合理有效地一次找到多条记录。

    darked89
    darked89
    发布于 2021-11-10
    0 人赞同

    最有可能的是,你不会得到所有正确的处理你的日期。如果原始数据是以CSV形式存储的,不仅要节省调试时间,还要用i.e.将CSV转换为parquet。

  • https://github.com/pola-rs/polars
  • https://duckdb.org
  •