问题标签 [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 投票
0 回答
2278 浏览

python - 时间序列抽取基准:Dask vs Vaex

我目前使用 Vaex 为直方图生成分箱数据并抽取大时间序列数据。本质上,我将数百万个时间序列点减少到多个 bin 中,并计算每个 bin 的平均值、最大值和最小值。我想比较Vaex(读取 HDF 文件)和 Dask(读取 Parquet 文件)并将其保持为“核外内存”。

更新 3(我已删除以前的更新):

第一次运行 Dask 比 Vaex 快 30%,但重复运行后 Vaex 快 4.5 倍。我相信 Vaex 通过内存映射获得了这种加速。Dask 有没有办法提高重复运行的执行时间?

首先,创建一些随机数据并生成一些文件,警告:这将生成 1.5GB 的数据。

现在进行 Vaex 和 Dask 处理:

0 投票
1 回答
1071 浏览

python - 如何在 vaex 数据框中访问特定单元格?

vaex 是一个类似于 pandas 的库,它提供了一个数据框类,我正在寻找一种按行和列访问特定单元格的方法

例如:

0 投票
2 回答
6292 浏览

python - Groupby 并使用 Vaex 组合数据框

我有一个.csv大约 150M 行的大文件。我仍然可以将整个数据集放入内存并使用 Pandas 进行分组和组合。例子...

在上面的示例中,数据框包含两个整数列business_partnercontract_account,它们用作分组操作的键。可以假设剩余的列都是我想要聚合的浮点特征。

但是,这只使用了我工作站上 48 个内核中的 1 个。我正在尝试使用vaex来利用我所有的内核,但无法弄清楚执行 groupby 和 combine 的 API 调用。也许在 Vaex 中还不可能?

编辑:

  1. 我知道这个操作可以在 dask 中完成,但是对于这个问题,我想专注于 Vaex。
0 投票
2 回答
2779 浏览

vaex - 如何在 Vaex 中进行交互式 2D 散点图缩放/点选择?

我在演示期间看到可以做到这一点:https ://youtu.be/2Tt0i823-ec?t=769

在那里,演示者有一个巨大的数据集,并且可以通过用鼠标选择一个矩形来快速放大。

我还看到了教程的“交互式小部件”部分:https ://docs.vaex.io/en/latest/tutorial.html#Interactive-widgets

但是,我无法轻松复制该设置。实现它的最小步骤是什么?

在 Ubuntu 19.04 vaex 2.0.2 上,我尝试过:

然后我创建了一个笔记本并粘贴在笔记本中:

但我得到的只是没有图表和消息:

相反,如果我这样做:

然后我确实得到了一个情节,但这只是一个非交互式图像。

我还尝试 git 克隆作为阅读文档页面来源的笔记本:https ://github.com/vaexio/vaex/blob/024​​7f0673c5c0473001b0b66adcbc716560536aa/docs/source/tutorial.ipynb但结果是相同的。

我的动机是找到一个可以处理大量点的绘图程序,如下所述:Large plot: ~20M samples, GB data

0 投票
1 回答
390 浏览

vaex - 如何更改 vaex 交互式 Jupyter bqplot plot_widget 中的点样式以使单个点更大且可见?

我正在评估 vaex 中描述的交互式异常值选择用例:大图:~2000 万个样本,千兆字节的数据

基本上,我有一些单独的点是异常值,我想在图表上看到它们以手动选择它们并进一步检查它们。

问题是如果数据集的其余部分太大,单个点就会变得不可见。

如何使这些单独的点可见?

例如,如果我生成一个包含 10 亿个点且中心顶部有一个异常值的数据集:

然后在 Jupyter 笔记本上显示:

我在 Jupyter 上得到了这个:

在此处输入图像描述

所以我看不到应该在中心顶部的异常值。

但是,我可以选择它,因为我知道它在哪里,并且它确实显示在selection=True方法上。它只是没有显示出来。

有一些例子:https://vaex.readthedocs.io/en/latest/tutorial.html#Smaller-datasets-/-scatter-plot看起来很明显,但我尝试添加额外的参数c="red", alpha=0.5, s=4plot_widget但它没有工作,大概这个后端不支持它们。

也许有一种方法可以配置bqplot来改变它的绘图风格?

在 vaex 2.0.2 上测试。

0 投票
1 回答
100 浏览

python - How to scale data to make area under the graph equal to 1

I made a function which can plot statistics for large arrays (10**8) less than 2 seconds. How can I scale Y-axis to make area under the graph equal to 1?

enter image description here

Complete answer if somebody wants to now how to plot big data statistics:

enter image description here

To moderators: this site doesn't alow me to post code even if it is the answer: It looks like your post is mostly code; please add some more details.

0 投票
1 回答
8658 浏览

python - 错误:命令“cmake”失败:没有这样的文件或目录

在使用 Python3.8 在 Pycharm 中安装 vaex 时出现错误我在 Win-10 64 位上运行它之前已经安装在下面:

错误日志:

任何想法,我错过了什么?

0 投票
2 回答
264 浏览

python - Jupyter Pandas - 丢弃平均超过阈值的项目

我有一个包含物品及其价格的数据框,如下所示: ╔══════╦═════╦═══════╗ ║ Item ║ Day ║ Price ║ ╠══════╬═════╬═══════╣ ║ A ║ 1 ║ 10 ║ ║ B ║ 1 ║ 20 ║ ║ C ║ 1 ║ 30 ║ ║ D ║ 1 ║ 40 ║ ║ A ║ 2 ║ 100 ║ ║ B ║ 2 ║ 20 ║ ║ C ║ 2 ║ 30 ║ ║ D ║ 2 ║ 40 ║ ║ A ║ 3 ║ 500 ║ ║ B ║ 3 ║ 25 ║ ║ C ║ 3 ║ 35 ║ ║ D ║ 3 ║ 1000 ║ ╚══════╩═════╩═══════╝

我想从这个 df 中排除所有行,其中项目的平均价格超过 200。所以过滤后的 df 应该如下所示: ╔══════╦═════╦═══════╗ ║ Item ║ Day ║ Price ║ ╠══════╬═════╬═══════╣ ║ B ║ 1 ║ 20 ║ ║ C ║ 1 ║ 30 ║ ║ B ║ 2 ║ 20 ║ ║ C ║ 2 ║ 30 ║ ║ B ║ 3 ║ 25 ║ ║ C ║ 3 ║ 35 ║ ╚══════╩═════╩═══════╝

我是python和pandas的新手,但第一步是考虑这样的事情来获得平均价格的新df:avg_prices_df = df.groupby('ItemID').Price.mean().reset_index 然后不知道如何从那里开始。甚至不确定第一步是否正确。

更复杂的是,我使用 vaex 读取 ndf5 格式的数据,因为我有超过 4 亿行。

非常感谢您的任何建议。

编辑:所以我得到了以下代码,尽管我确信它没有被优化..

`

创建 ItemID 及其平均价格的数据框

df_item_avg_price = df.groupby(df.ItemID, agg=[vaex.agg.count('ItemID'), vaex.agg.mean('Price')])

按平均价格阈值过滤这个新数据框

df_item_avg_price = (df_item_avg_price[df_item_avg_price["P_r_i_c_e_mean"] <= 50000000])

创建平均价格低于阈值的 ItemID 列表

items_in_price_range = df_item_avg_price['ItemID'].tolist()

过滤原始数据框以仅包含价格范围内的项目的行

filters_df = df[df.ItemID.isin(items_in_price_range)] `有更好的方法吗?

0 投票
1 回答
2045 浏览

python - 将通过 pandas/pytables 编写的大型 hdf5 数据集转换为 vaex

我有一个非常大的数据集,我通过 append 分块写入 hdf5,如下所示:

数据太大而无法加载到一个 DataFrame 中,所以我想尝试 vaex 进行进一步处理。不过有几件事我真的不明白。

由于 vaex 在 hdf5 中使用的表示形式与 pandas/pytables (VOTable) 不同,我想知道如何在这两种格式之间进行转换。我尝试将数据分块加载到 pandas 中,将其转换为 vaex DataFrame 然后存储它,但似乎无法将数据附加到现有的 vaex hdf5 文件中,至少我找不到。

真的没有办法从 vaex 中创建大型 hdf5 数据集吗?是将现有数据集转换为 vaex 表示的唯一选择(通过 python 脚本或 TOPCAT 构建文件)?

与我之前的问题相关,如果我在核心外使用 vaex 中的大型数据集,是否可以将我在 vaex 中应用的任何转换的结果保存到 hdf5 文件中?

0 投票
3 回答
1101 浏览

python - Pandas 过滤并将日期转换为 datetime64ns

我试图找出一个问题,但到目前为止我找不到任何解决方案,希望您能提供帮助。我有一个 DataFrame,我想转换str为,datatime但有一些我想过滤掉的无效行。这里有两个例子:

df我很好,它只有date列中的有效日期。但是df2有一些无效的行。让我们df首先看一下我可以转换为的以下行datetime

效果很好:

现在我尝试用一​​个非常简单的str.contains::

它只有5 Rows. 现在我尝试转换并收到一条很好的错误消息:

说:ValueError:数组的长度是5,而DataFrame的长度是5,由于过滤,(未过滤的)长度是6。

但据我了解,df2_filtered我只有 5 行。我不知道为什么df2.

基本上我的问题是如何过滤掉不必要的数据并将列转换为日期时间?

更新

基于Maarten Breddels我尝试使用:

这似乎有效,但是当我尝试使用时,df2_filtered我得到以下信息。