首页 > 解决方案 > 想加快我在 python 中的代码执行速度

问题描述

我是 python 新手,想加快代码执行速度。有人可以帮助我提高代码的性能吗?代码如下:

def calcualte_edge_weight(df, r1, r2):

    data1 = df[df.reviewer_id == r1]
    data2 = df[df.reviewer_id == r2]
    
    products_r1 = set(data1.product_id)  # products set on which r1 write reviews
    products_r2 = set(data2.product_id)  # products set on which r2 write reviews
    products_common = products_r1.intersection(products_r2)
    
    total_weight = 0
    avg_score = 0
    for p in products_common:
        rating1 = data1[data1.product_id == p].rating.iloc[0]
        rating2 = data2[data2.product_id == p].rating.iloc[0]
        time1 = data1[data1.product_id == p].date.iloc[0]
        time2 = data2[data2.product_id == p].date.iloc[0]
        rd = abs( rating1 -  rating2)
        td = abs((dt.strptime(str(time1).strip(), '%m/%d/%Y') - dt.strptime(str(time2).strip(), '%m/%d/%Y')).days)
        if rd < 2 and td < 10:
            total_weight = total_weight + 1
        avg_score = total_weight/len(products_common)
    return avg_score

标签: pythonpandasperformancedataframe

解决方案


有很多工作可以加速您的代码,首先,pandas iloc 不是从系列中读取标量的最快方法。无论如何,我建议您将代码分成几部分并对其进行分析。分而治之是一种很好的做法。我建议使用分析工具。

我是perf_tool的开发者,它对这些情况非常有用。


推荐阅读