gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 00:26:02 24 4
gpt4 key购买 nike

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

aggregated_df = df.groupby(["business_partner", "contract_account"]).sum()

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

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

编辑:

  1. 我知道此操作可以在 dask 中完成,但对于这个问题,我想重点关注 Vaex。

最佳答案

您可以在 https://docs.vaex.io/en/latest/api.html#vaex.dataframe.DataFrameLocal.groupby 中找到一个工作示例

以您按 2 列分组并获得总和聚合的示例为例:

import pandas as pd, numpy as np
import vaex

# Create input dataframe

n=10**6 # Change this to adjust df size

a_c1 = [1,2,3]*n
a_c2 = [1,1,2,2,3,3]*int(n/2)
a_x = np.arange(float(len(a_c1)))
df = pd.DataFrame({'c1':a_c1,'c2':a_c2,'x1':a_x, 'x2':a_x})

# Convert dataframe to vaex

# dfv = vaex.from_pandas(df) # This also works, but it's slower
dfv = vaex.from_arrays(c1=a_c1, c2=a_c2, x1=a_x, x2=a_x)

df_result1 = df.groupby(['c1','c2']).sum()
df_result2 = dfv.groupby(['c1','c2'],agg='sum')

输出结构会略有不同:

> print(df_result1)

x1 x2
c1 c2
1 1 7.499985e+11 7.499985e+11
2 7.500000e+11 7.500000e+11
2 1 7.499990e+11 7.499990e+11
3 7.500005e+11 7.500005e+11
3 2 7.499995e+11 7.499995e+11
3 7.500010e+11 7.500010e+11

> print(df_result2)

# c1 c2 x_1_sum x_2_sum
0 2 3 7.50000e+11 7.50000e+11
1 2 1 7.49999e+11 7.49999e+11
2 3 2 7.5e+11 7.5e+11
3 3 3 7.50001e+11 7.50001e+11
4 1 2 7.5e+11 7.5e+11
5 1 1 7.49998e+11 7.49998e+11

关于python - Groupby 并使用 Vaex 组合数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56767423/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com