- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用 Vaex 并寻找性能提示。
我的用例如下:
我有一个大数据框 - 我们称它为 large_df
(只有几列,但有数千万行,在生产中,数据集将大于 10 倍)。其中一列称为 key
,这是一个 64 个字符的字母数字字符串。此数据帧的内容存储在多个 HDF5 文件中。我通过执行 vaex.open_many(<path/to/hdf5 files/)
创建数据框.
在每个请求中,代码都会收到少量(10s 以内)要在 large_df
中查找的键.然后我基本上必须在 large_df
中查找获取 key
的行s 匹配输入的键列表,然后对结果匹配的 df 做一些处理(它会小得多)。
据我所知,Vaex 应该非常适合我的用例,但我一直难以获得预期的性能。
我的代码基本上是这样的:
import vaex
df = vaex.open_many(</path/to/hdf5 files>)
df = df[df.key.isin(<list of input keys>)].to_pandas_df()
当所有 HDF5 文件都提前缓存在磁盘上时,这段代码在 i3.8xlarge 实例上大约需要 80 秒。代码在 Docker 容器内运行,CPU 上限为 30 个(共 32 个可用)。我阅读了有关 Vaex 如何很好地处理字符串的文章,乍一看,这似乎是 Vaex 应该能够轻松并行化并在 80 秒内更快计算的任务类型。
我也试过预先索引 short_id
包含 large_df
的数据集的列.基本上,这是一个整数,表示 key
中的前 4 个字符。柱子。然后我尝试在进行完整的字符串比较之前预过滤 df。此代码如下所示:
import vaex
df = vaex.open_many(</path/to/hdf5 files>)
short_ids = [alphanumeric_string_to_int(key) for key in <input keys>]
df = df[df.short_id.isin(short_ids)] # filter df down to a smaller size
df = df[df.key.isin(<list of input keys>)].to_pandas_df()
这缩短了大约 10 秒,但似乎应该让事情变得更快。我觉得我错过了一些明显的东西,无法让这一切变得如此快速。
我能做什么?请帮助-谢谢!
最佳答案
是的,这太慢了。 Vaex 的 .isin(..)
在这里不聪明所以我解决了你的问题 https://github.com/vaexio/vaex/pull/822 .我已经看到字符串加速了 275 倍。合并后我会发布一个版本来解决这个问题。
问候,
Maarten Breddels - vaex.io
关于vaex - 使用 Vaex 的性能提示,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62292479/
我正在使用 Vaex 并寻找性能提示。 我的用例如下: 我有一个大数据框 - 我们称它为 large_df (只有几列,但有数千万行,在生产中,数据集将大于 10 倍)。其中一列称为 key ,这是一
我想使用 Vaex 中的另一列为计算设置一个虚拟列。我需要在此计算中使用 if 语句。一般来说,我想打电话 df['calculation_col'] = log(df['original_col']
我在演示中看到可以这样做:https://youtu.be/2Tt0i823-ec?t=769 在那里,演示者有一个巨大的数据集,可以通过用鼠标选择一个矩形来快速放大。 我还看到了教程的“交互式小部件
我尝试了这个解决方案,但它并没有真正解决我的问题 x = ['a', 'b', 'c', 'd', 'e', 'f'] y = np.array(['10', '20', '30', '40', '5
我有数据文件 'for-filter.txt' a,b,c,d 1,2,3,4 2,6,7,8 -1,2,3,4 4,5,5,5 -2,3,3,3 我正在做的Vaex代码 import vaex as
我有一个包含大约 150M 行的大型 .csv 文件。我仍然可以将整个数据集放入内存并使用 Pandas 进行分组和组合。示例... aggregated_df = df.groupby(["busi
我正在为监督学习任务准备一个大型多变量时间序列数据集,我想创建我的输入特征的时移版本,以便我的模型也可以从过去的值中推断出来。 pandas 中有一个 shift(n) 命令,可让您将一列移动 n 行
我正在尝试执行以下操作 用字符串列加载一些数据 measurement_df = pd.read_csv('data/tag_measurements/all_measurements.csv') m
我有一些来自用户的条目以及该用户在我的网站上进行了多少次互动... 我有 34 万行和 70 多列,我想使用 Vaex,但我在做一些简单的事情时遇到了问题,比如删除重复项。 有人可以帮助我如何做吗?
我有一个非常大的数据集,我通过 append 以块的形式写入 hdf5,如下所示: with pd.HDFStore(self.train_store_path) as train_store:
当我使用 vaex 时如下: for i, df in enumerate(vaex.from_csv('cars.csv', convert=True,chunk_size=100_000)):
当我使用 vaex 时如下: for i, df in enumerate(vaex.from_csv('cars.csv', convert=True,chunk_size=100_000)):
我将日期作为字符串(例如:3/24/2020),我想将其转换为 datetime64[ns]格式 df2['date'] = pd.to_datetime(df1["str_date"], forma
我是一名优秀的程序员,十分优秀!