首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何加快将函数应用于大熊猫的数据处理?

如何加快将函数应用于大熊猫的数据处理?
EN

Stack Overflow用户
提问于 2022-01-21 19:47:46
回答 1查看 88关注 0票数 1

因此,我昨天开始将一个函数应用于一个相当大的数据集(600万行),但它需要花费很长时间。我甚至试着用这种方法,但效果也不太好。无论如何,这是我使用的代码..。

代码语言:javascript
复制
def classifyForecast(dataframe):

    buckets = len(dataframe[dataframe['QUANTITY'] != 0])

    try:
        adi = dataframe.shape[0] / buckets
        cov = dataframe['QUANTITY'].std() / dataframe['QUANTITY'].mean()

        if adi < 1.32:
            if cov < .49:
                dataframe['TYPE'] = 'Smooth'
            else:
                dataframe['TYPE'] = 'Erratic'
        else:
            if cov < .49:
                dataframe['TYPE'] = 'Intermittent'
            else:
                dataframe['TYPE'] = 'Lumpy'

    except:
        dataframe['TYPE'] = 'Smooth'
    
    try:
        dataframe['ADI'] = adi
    except:
        dataframe['ADI'] = np.inf
    try:
        dataframe['COV'] = cov
    except:
        dataframe['COV'] = np.inf
    

    return dataframe

from pandarallel import pandarallel

pandarallel.initialize()

def quick_classification(df):
    return df.parallel_apply(classifyForecast(df))

另外,请注意,我正在将数据分割成批处理。我不希望该函数在每一行上工作,而是希望它在块上工作。这样我就可以得到特定列的.mean().std()

它不应该需要48小时才能完成。我该怎么加快速度?

EN

回答 1

Stack Overflow用户

发布于 2022-01-21 20:01:48

看起来meanstd是这里唯一的计算,所以我猜这是瓶颈。

你可以试着用numba加速它。

代码语言:javascript
复制
from numba import njit
import numpy as np

@njit(parallel=True)
def numba_mean(x):
    return np.mean(x)

@njit(parallel=True)
def numba_std(x):
    return np.std(x)

cov = numba_std(dataframe['QUANTITY'].values) / numba_mean(dataframe['QUANTITY'].values)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70806902

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档