问题标签 [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.
python - 时间序列抽取基准:Dask vs Vaex
我目前使用 Vaex 为直方图生成分箱数据并抽取大时间序列数据。本质上,我将数百万个时间序列点减少到多个 bin 中,并计算每个 bin 的平均值、最大值和最小值。我想比较Vaex(读取 HDF 文件)和 Dask(读取 Parquet 文件)并将其保持为“核外内存”。
更新 3(我已删除以前的更新):
第一次运行 Dask 比 Vaex 快 30%,但重复运行后 Vaex 快 4.5 倍。我相信 Vaex 通过内存映射获得了这种加速。Dask 有没有办法提高重复运行的执行时间?
首先,创建一些随机数据并生成一些文件,警告:这将生成 1.5GB 的数据。
现在进行 Vaex 和 Dask 处理:
python - 如何在 vaex 数据框中访问特定单元格?
vaex 是一个类似于 pandas 的库,它提供了一个数据框类,我正在寻找一种按行和列访问特定单元格的方法
例如:
python - Groupby 并使用 Vaex 组合数据框
我有一个.csv
大约 150M 行的大文件。我仍然可以将整个数据集放入内存并使用 Pandas 进行分组和组合。例子...
在上面的示例中,数据框包含两个整数列business_partner
和contract_account
,它们用作分组操作的键。可以假设剩余的列都是我想要聚合的浮点特征。
但是,这只使用了我工作站上 48 个内核中的 1 个。我正在尝试使用vaex来利用我所有的内核,但无法弄清楚执行 groupby 和 combine 的 API 调用。也许在 Vaex 中还不可能?
编辑:
- 我知道这个操作可以在 dask 中完成,但是对于这个问题,我想专注于 Vaex。
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/0247f0673c5c0473001b0b66adcbc716560536aa/docs/source/tutorial.ipynb但结果是相同的。
我的动机是找到一个可以处理大量点的绘图程序,如下所述:Large plot: ~20M samples, GB data
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=4
,plot_widget
但它没有工作,大概这个后端不支持它们。
也许有一种方法可以配置bqplot
来改变它的绘图风格?
在 vaex 2.0.2 上测试。
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?
Complete answer if somebody wants to now how to plot big data statistics:
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.
python - 错误:命令“cmake”失败:没有这样的文件或目录
在使用 Python3.8 在 Pycharm 中安装 vaex 时出现错误我在 Win-10 64 位上运行它之前已经安装在下面:
错误日志:
任何想法,我错过了什么?
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)] `有更好的方法吗?
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 文件中?
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
我得到以下信息。