采样 Pandas Dataframe 的最快方法?

2024-02-13

首先,我想从三个数据帧(每个 150 行)中随机采样并连接结果。其次,我想尽可能多地重复这个过程。

对于第 1 部分,我使用以下函数:

def get_sample(n_A, n_B, n_C):
    A = df_A.sample(n = n_A, replace=False)
    B = df_B.sample(n = n_B, replace=False)
    C = df_C.sample(n = n_C, replace=False)
    return pd.concat([A, B, C])

对于第 2 部分,我使用以下行:

results = [get_sample(5,5,3) for i in range(n)] 

目前与n = 50.000在我的 MacBook 上,分析大约需要 1 分 40 秒。欢迎就如何提高此过程的速度提出任何建议!

PM 三个数据帧(df_A、df_B、df_C)仅在一个分类特征上有所不同。挑战在于我想要每个类别的特定数量的样本。


使用 numpy ndarrays 应该更快,因为 pandas 本身是基于 numpy 构建的。采样可以通过以下方式完成:numpy.random.choice,如所解释的here https://docs.scipy.org/doc/numpy-1.15.0/reference/generated/numpy.random.choice.html。这应该相当于pd.sample。然后你可以从 numpy 切换回 pandas。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

采样 Pandas Dataframe 的最快方法? 的相关文章

随机推荐