问题标签 [vaex]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
635 浏览

python - 连接 dask 和 vaex 之间的进出口

我正在与 vaex 和 dask 合作进行一些分析。在分析的第一部分,我对 进行了一些处理dask.dataframe,我的目的是将我计算的数据帧导出到 vaex 读取的内容中。我想将数据导出为内存可映射格式,如 hdf 或箭头。

dask 允许导出到 hdf 和 parquet 文件。Vaex 允许以 hdf 和 arrow 的形式导入。两者都允许导出和导入为 csv 文件,但我想避免这种情况。

到目前为止,我得到了以下选项(和问题):

  • 如果我导出到 hdf5 文件,由于 dask 以行格式导出文件,但 vaex 以列格式读取它,则无法导入文件(https://vaex.readthedocs.io/en/latest/faq.html)。
  • 我可以将数据导出到镶木地板文件中,但我不知道如何从 vaex 中读取它们。我在 SO 中看到了一些将文件转换为箭头表的答案,但这需要将表加载到内存中,我不能这样做,因为表太大而无法放入内存。

我当然可以导出到 csv 并将其分块加载到 vaex 中,然后将其导出为列格式 hdf,但我认为这不应该是两个模块用于大对象的目的。

我是否缺少任何选项,并且可以兼容“桥接”这两个模块,而无需将完整表加载到内存中,或者不必读取/写入数据集两次?

0 投票
1 回答
553 浏览

python - 用 vaex 绘制大数据

我一直在努力创建一个包含数百万行的 csv 图。我正在尝试使用 vaex 模块,但我被卡住了..

输出

csv 被转换为 hdf5 并加载,但现在有 2 个索引,1 个带有奇怪的 HTML 格式。当我尝试像在文档中那样绘制它并且在这个线程中以解决方案为基准时:

我得到一个值错误。

解决方案是更改为 df.col.cov 或 df["cov"]。不过,现在我从 plot_widget 方法得到一个空输出:

谁能帮我?

亲切的问候,里卡多

编辑

csv 数据的样本。列 pos 在每一行(1.37 亿)上增加 1,cov 几乎总是 0,但在某些区域达到 1-400:

0 投票
1 回答
2141 浏览

python - 将带有日期列的 Pandas 数据框转换为 Vaex 数据框

我正在尝试执行以下操作

  1. 用字符串列加载一些数据

此时时间戳列的类型为 str:

  1. 将其转换为 Vaex

不知何故,我失去了时间戳列。有什么想法可能会出错吗?

0 投票
1 回答
108 浏览

python - 由于编码错误,无法使用 read_csv 读取数据

所以,我面临一个巨大的问题。我正在尝试读取具有“|”的 csv 文件 作为分隔符。如果我使用utf-8orutf-sig-8作为编码器,则会收到以下错误:

但我使用unicode_escape编码然后我得到这个错误:

是数据集的问题吗?

0 投票
1 回答
916 浏览

python - 将 Vaex 数据框列初始化为一个值

我想将我的 vaex 数据框的一列初始化为 int 值 0

我有以下内容:

但这将在第 3 行引发错误,抱怨 vaex 如何期待 str 表达式并得到一个整数。
如何使 vaex 表达式将列的每一行设置为单个值?

0 投票
1 回答
553 浏览

python - Why does vaex change column names that contain a period?

When using vaex I came across an unexpected error NameError: name 'column_2_0' is not defined.

After some investigation I found that in my data source (HDF5 file) the column name causing problems is actually called column_2.0 and that vaex renames it to column_2_0 but when performing operations using column names I run into the error. Here is a simple example that reproduces this error:

In this case it appears that vaex tries to rename abc.1 to abc_1 which is already taken so instead it ends up using abc_1_1.

I know that I can rename the column like dfv.rename('abc_1_1', 'abc_dot_1'), but (a) I'd need to introduce special logic for naming conflicts like in this example where the column name that vaex comes up with is already taken and (b) I'd rather not have to do this manually each time I have a column that contains a period.

I could also enforce all my column names from source data to never use a period but this seems like a stretch given that pandas and other sources where data might come from in general don't have this restriction.

What are some ideas to deal with this problem other than the two I mentioned above?

0 投票
1 回答
1190 浏览

vaex - 使用 Vaex 的性能提示

我正在使用 Vaex 并寻找性能提示。

我的用例如下:

  • 我有一个大数据框 - 我们称之为large_df(只有几列但有数千万行,在生产中,数据集将大于 10 倍)。其中一列称为key,这是一个 64 个字符的字母数字字符串。此数据帧的内容存储在多个 HDF5 文件中。我通过做来创建数据框vaex.open_many(<path/to/hdf5 files/)

  • 在每个请求中,代码都会收到少量(在 10 秒内)要在 中查找的键large_df。然后我基本上必须查找large_df以获取keys 与输入键列表匹配的行,然后对生成的匹配 df 进行一些处理(这会小得多)。

根据我的阅读,Vaex 应该非常适合我的用例,但是我一直在努力获得我所期望的性能。

我的代码基本上是这样的:

当所有 HDF5 文件提前缓存在磁盘上时,此代码在 i3.8xlarge 实例上大约需要 80 秒。代码在 Docker 容器内运行,CPU 上限为 30(可用的 32 个)。我阅读了有关 Vaex 如何很好地处理字符串的文章,乍一看,这似乎是 Vaex 应该能够轻松并行化并以超过 80 秒的速度计算的任务类型。

我还尝试将一列预索引short_id到包含large_df. 基本上,这是一个整数,表示key列中的前 4 个字符。然后,我尝试在进行完整字符串比较之前对 df 进行预过滤。此代码如下所示:

这缩短了大约 10 秒,但这似乎应该让事情变得更快。我觉得我遗漏了一些明显的东西来说明如何快速完成这个任务。

我能做些什么?请帮忙 - 谢谢!

0 投票
1 回答
2562 浏览

python - vaex 列名称更改

嗨,我刚刚开始使用 Python 中的 Vaex。我有一个列名混乱的数据集。我正在尝试用“_”替换空格。

在熊猫中,我可以 df.column = df.columns.str.replace(' ', '_')

但在 Vaex

我收到以下错误


----> 1 df_new = df.column_names.str.replace('\s', '_', regex=True) 中的 AttributeError Traceback (最近一次调用最后一次) AttributeError: 'list' object has no attribute 'str'

有谁知道我可能做错了什么?

谢谢迈克

0 投票
1 回答
1105 浏览

python - 如何有效地从具有多列的 Vaex DataFrame 中删除非有限值?

我的数据具有等于正无穷大和负无穷大的值。Vaex 具有 的功能dropnadropmissingdropnan不能用于删除非有限值。

我目前的方法是遍历感兴趣的每一列并覆盖过滤数据集,从每一列中删除非有限值:

虽然这种方法确实给了我正确的结果,但它似乎效率很低,因为它需要很长时间才能运行,即使我的数据集只有几行和几千列。

在 Vaex 中删除具有非有限值的行的首选方法是什么?

更新:

这是一个工作示例,用于演示我在即使是微不足道的数据集上也遇到的缓慢:

更新 2:单元格中的值略有不同,另一种选择有限记录的方法可以快速工作但返回不正确的结果:

0 投票
1 回答
151 浏览

vaex - Vaex 列不评估

我有以下计算:

奇怪的是,>>>df不显示结果,只显示该列中的旧值。但是,df.t显示计算值。

因此,当我将结果导出到 pandas 时with dfp = df.to_pandas_df(),它也会获得原始旧值。甚至dfp.t = df.t没有帮助。

那么,如何获得计算值?