想加快python中代码的执行速度吗

想加快python中代码的执行速度吗,python,pandas,performance,dataframe,Python,Pandas,Performance,Dataframe,我是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 pro

我是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
def计算边缘重量(df、r1、r2):
数据1=df[df.reviewer\u id==r1]
数据2=df[df.reviewer\u id==r2]
products_r1=集合(data1.product_id)#r1写入评论的产品集合
products_r2=set(data2.product_id)#r2写评论的产品集
products\u common=products\u r1.交叉点(products\u r2)
总重量=0
平均得分=0
对于产品中的p_公共:
rating1=data1[data1.product\u id==p].rating.iloc[0]
rating2=data2[data2.product\u id==p].rating.iloc[0]
time1=data1[data1.product\u id==p].date.iloc[0]
time2=data2[data2.product\u id==p].date.iloc[0]
rd=abs(额定值1-额定值2)
td=abs((dt.strtime(str(time1).strip(),'%m/%d/%Y')-dt.strtime(str(time2.strip(),'%m/%d/%Y')).days)
如果rd<2且td<10:
总重量=总重量+1
平均得分=总重量/透镜(产品/普通)
返回平均分数

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


我是这方面的开发人员,它对这些情况非常有用。

如果您有需要改进的工作代码,您可能需要检查您的问题是否可以解决。您至少应该指定代码应该做什么。分析显示,在dataframe上应用筛选器时,函数的大部分时间都在执行中。过滤数据帧的最快方法是什么?这里更好的解决方案是使用掩码,它们工作得又好又快,因为它们是用矢量计算的