【问题标题】:Filter/selecting data before read into a pandas data frame在读入熊猫数据框之前过滤/选择数据
【发布时间】:2015-06-26 00:55:31
【问题描述】:

有没有办法在读入数据帧之前或期间过滤数据?

例如,我有以下 csv 数据文件:

 time       Event    price     Volume
00:00:00.000, B,    920.5,    57
00:00:00.000, A,    920.75,   128
00:00:00.898, T,    920.75,   1
00:00:00.898, T,    920.75,   19
00:00:00.906, B,    920.5,    60
00:00:41.284, T,    920.75,   5
00:00:57.589, B,    920.5,    53
00:01:06.745, T,    920.75,   3
00:01:06.762, T,    920.75,   2

我想仅读取 'Event'=='T''Volume'>=100 的数据行。 如果我们读入整个数据集然后过滤掉数据(这就是我现在正在做的),这很容易完成。

我拥有的每个文件都是 10MB,并且有数千个(总共大约 15 GB 数据),这个过程将永远持续下去。所以我想知道是否有一种方法可以在读入时过滤数据,或者有一些其他方法可以加快速度。也许改用数据库?

【问题讨论】:

标签: python sql pandas dataframe


【解决方案1】:

我不相信有一种方法可以过滤您想在 csv 文件中读取的内容。

尝试使用 HDFStore。它为阅读和写作提供了更好的性能。您可以从 CSV 读取一次所有数据并将其保存到 H5 文件中,他们使用这些 H5 文件作为您的数据库。一些比较结果在这个页面上,

http://pandas.pydata.org/pandas-docs/dev/io.html

我将结果复制到这里进行比较,

写性能,

In [15]: %timeit test_hdf_fixed_write(df)
1 loops, best of 3: 237 ms per loop

In [26]: %timeit test_hdf_fixed_write_compress(df)
1 loops, best of 3: 245 ms per loop

In [16]: %timeit test_hdf_table_write(df)
1 loops, best of 3: 901 ms per loop

In [27]: %timeit test_hdf_table_write_compress(df)
1 loops, best of 3: 952 ms per loop

In [17]: %timeit test_csv_write(df)
1 loops, best of 3: 3.44 s per loop

读取性能,

In [19]: %timeit test_hdf_fixed_read()
10 loops, best of 3: 19.1 ms per loop

In [28]: %timeit test_hdf_fixed_read_compress()
10 loops, best of 3: 36.3 ms per loop

In [20]: %timeit test_hdf_table_read()
10 loops, best of 3: 39 ms per loop

In [29]: %timeit test_hdf_table_read_compress()
10 loops, best of 3: 60.6 ms per loop

In [22]: %timeit test_csv_read()
1 loops, best of 3: 620 ms per loop

【讨论】:

    【解决方案2】:

    一种选择是在加载之前使用 awk 等工具过滤 csv 文件。

    基于数值范围过滤的有用 awk 示例是 here

    字符串值过滤的有用 awk 范围是here

    【讨论】:

      猜你喜欢
      • 2014-11-25
      • 1970-01-01
      • 2019-04-13
      • 2015-05-28
      • 2018-02-06
      • 2018-09-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多