标签: vaex

导入 vaex 错误:PydanticImportError:“BaseSettings”已移至“pydantic-settings”包

我正在使用 Sagemaker 笔记本,在导入 vaex 时,出现以下错误。我使用的vaex版本是4.16.0

PydanticImportError:BaseSettings已移至pydantic-settings包中。有关更多详细信息,请参阅https://docs.pydantic.dev/2.0.2/migration/#basesettings-has-moved-to-pydantic-settings

有关更多信息,请访问https://errors.pydantic.dev/2.0.2/u/import-error

有人知道如何解决这个问题吗?

我尝试在安装 vaex 时降级 pydantic 库,但这没有帮助。

python amazon-sagemaker pydantic vaex

15
推荐指数
2
解决办法
3万
查看次数

Arrow IPC 与 Feather

Arrow IPC 和 Feather 有什么区别?

Arrow 官方文档说:

版本 2 (V2),默认版本,在磁盘上精确表示为 Arrow IPC 文件格式。V2 文件支持存储所有 Arrow 数据类型以及使用 LZ4 或 ZSTD 进行压缩。V2 首次在 Apache Arrow 0.17.0 中提供。

vaex是 的替代品pandas,它有两种不同的功能,一种用于 Arrow IPC,另一种用于 Feather。Polars是 pandas 的另一个替代品,表明 Arrow IPC 和 Feather 是相同的。

pandas feather apache-arrow vaex

12
推荐指数
1
解决办法
3952
查看次数

如何快速比较两个文本文件并获得唯一的行?

我有 2 个文本文件 (*.txt),其中包含以下格式的唯一字符串:

udtvbacfbbxfdffzpwsqzxyznecbqxgebuudzgzn:refmfxaawuuilznjrxuogrjqhlmhslkmprdxbascpoxda
ltswbjfsnejkaxyzwyjyfggjynndwkivegqdarjg:qyktyzugbgclpovyvmgtkihxqisuawesmcvsjzukcbrzi
Run Code Online (Sandbox Code Playgroud)

第一个文件包含5000 万行(4.3 GB),第二个包含100 万行(112 MB)。一行包含 40 个字符、分隔符 : 和另外 45 个字符。

任务:获取两个文件的唯一值。也就是说,您需要一个csv 或 txt文件,其中的行在第二个文件中而不在第一个文件中。

我正在尝试使用vaex ( Vaex )来做到这一点:

import vaex

base_files = ['file1.txt']
for i, txt_file in enumerate(base_files, 1):
    for j, dv in enumerate(vaex.from_csv(txt_file, chunk_size=5_000_000, names=['data']), 1):
        dv.export_hdf5(f'hdf5_base/base_{i:02}_{j:02}.hdf5')

check_files = ['file2.txt']
for i, txt_file in enumerate(check_files, 1):
    for j, dv in enumerate(vaex.from_csv(txt_file, chunk_size=5_000_000, names=['data']), 1):
        dv.export_hdf5(f'hdf5_check/check_{i:02}_{j:02}.hdf5')

dv_base = vaex.open('hdf5_base/*.hdf5')
dv_check = vaex.open('hdf5_check/*.hdf5')
dv_result = dv_check.join(dv_base, on='data', …
Run Code Online (Sandbox Code Playgroud)

python pandas dask vaex

8
推荐指数
2
解决办法
984
查看次数

时间序列抽取基准:Dask 与 Vaex

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

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

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

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

import numpy as np
import vaex as vx
import pandas as pd
import dask.dataframe as dd
import os

#cwd = os.getcwd() # Change this to your directory for path to save hdf and parquet files 
cwd = r'F:\temp\DaskVaexx' # Write files to this directory.  Use a fast SSD for …
Run Code Online (Sandbox Code Playgroud)

python numpy dask vaex

5
推荐指数
0
解决办法
2128
查看次数

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

在使用 Python3.8 在 Pycharm 中安装 vaex 时出现错误 在我的 Win-10 64 位上运行此命令之前,我已经安装了以下命令:

- cmake v3.15.3
- pep517 v0.8.1
- pip v19.3.1
Run Code Online (Sandbox Code Playgroud)

错误日志:

running build_ext
creating build\temp.win-amd64-3.8
creating build\temp.win-amd64-3.8\Release
-- Running cmake for pyarrow
cmake -DPYTHON_EXECUTABLE=C:\Users\xxxxx\AppData\Local\Programs\Python\Python38\python.exe  -G "Visual Studio 14 2015 Win64" -DPYARROW_BOOST_USE_SHARED=on -DCMAKE_BUILD_TYPE=release C:\Users\xxxxx\AppData\Local\Temp\pip-install-g3tufyo5\pyarrow
error: command 'cmake' failed: No such file or directory
----------------------------------------
ERROR: Failed building wheel for pyarrow
ERROR: Could not build wheels for pyarrow which use PEP 517 and cannot be installed directly.
Run Code Online (Sandbox Code Playgroud)

知道吗,我缺少什么?

python cmake pyarrow python-3.8 vaex

5
推荐指数
1
解决办法
3万
查看次数

python vaex groupby 与自定义函数

有没有办法使用 vaex DataFrameArray 的 groupby 函数将自定义函数应用于组?

我可以:
df_vaex.groupby(['col_x1','col_x2','col_x3','col_x4'], agg=vaex.agg.mean(df_vaex['col_y']))

但是有没有办法做熊猫:
df.groupby(['col_x1','col_x2','col_x3','col_x4']).apply(lambda x: my_own_function(x['col_y']))

python vaex

5
推荐指数
1
解决办法
407
查看次数

在python vaex中删除重复的行

我正在使用 python vaex,但我不知道如何删除数据框中的重复行。例如在熊猫中存在方法drop_duplicates()。vaex 有没有类似的功能?

python dataframe vaex

5
推荐指数
1
解决办法
327
查看次数

将字符串解析为 datetime64 的 Vaex 函数是什么,相当于 pandas to_datetime,允许自定义格式?

我有日期字符串(例如:3/24/2020),我想将其转换为datetime64[ns]格式

df2['date'] = pd.to_datetime(df1["str_date"], format='%m/%d/%Y')
Run Code Online (Sandbox Code Playgroud)

在 vaex dataframe 上使用 pandasto_datetime会导致错误:

ValueError: time data 'str_date' does not match format '%m/%d/%Y' (match)
Run Code Online (Sandbox Code Playgroud)

我看到可能有重复的问题

df2['pdate']=df2.date.astype('datetime64[ns]')
Run Code Online (Sandbox Code Playgroud)

然而,答案是类型转换。我的情况需要将格式('%m/%d/%Y')解析字符串为datetime64[ns],而不仅仅是类型转换。

解决方案:自定义函数,然后.apply

python datetime datetime-format pandas vaex

5
推荐指数
1
解决办法
1965
查看次数

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

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

with pd.HDFStore(self.train_store_path) as train_store:
    for filepath in tqdm(filepaths):
        with open(filepath, 'rb') as file:
            frame = pickle.load(file)

        if frame.empty:
            os.remove(filepath)
            continue

        try:
            train_store.append(
                key='dataset', value=frame,
                min_itemsize=itemsize_dict)
            os.remove(filepath)
        except KeyError as e:
            print(e)
        except ValueError as e:
            print(frame)
            print(e)
        except Exception as e:
            print(e) 
Run Code Online (Sandbox Code Playgroud)

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

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

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

与我之前的问题相关,如果我在 vaex …

python hdf5 pytables pandas vaex

4
推荐指数
1
解决办法
1766
查看次数

Python Vaex 数据类型转换:字符串到日期时间

我在一个项目中使用 Python 中的 Vaex 库;我对 Vaex 还很陌生,所以如果这是初级的,我很抱歉。我遇到数据类型转换问题。我的其中一列“Paid_at”的数据类型为 str,它应该是 DateTime。 df_paid.info

到目前为止我所做的就是从我的 df 中删除 na 以及(尝试)使用 pandas 的 to_datetime() 来转换列,但它不起作用。这在 pd 数据框中有效,但我做错了,因为我收到以下错误

df_paid['Paid_at'] = pd.to_datetime(df['Paid_at'], errors='coerce')
Run Code Online (Sandbox Code Playgroud)

-------------------------------------------------- ------------------------- ValueError Traceback(最近一次调用最后)在 ----> 1 df_paid['Paid_at'] = pd.to_datetime (df['Paid_at'], 错误='强制')

F:\Anaconda3\lib\site-packages\vaex\dataframe.py in setitem (self, name, value) 4431 self.add_column(name, value)
4432 else: -> 4433 self.add_virtual_column(name, value) 4434 else : 4435 raise TypeError(' setitem仅接受字符串作为参数,而不是 {}'.format(type(name)))

F:\Anaconda3\lib\site-packages\vaex\dataframe.py in add_virtual_column(self, name, expression, unique) 3249
'# 我们重写所有现有表达式(包括传递下来的表达式参数) 3250 self._rename(name,第3251章 3252 第3253章 3252 第3253章 3253

F:\ Anaconda3 \ lib …

python dataframe pandas vaex

4
推荐指数
1
解决办法
4213
查看次数