簡體   English   中英

優化執行速度,提高代碼可讀性

[英]Optimize the execution speed and improve the readability of code

如何優化以下代碼的速度並提高可讀性?

for j in range(len(Relevant_data)):
    for x in ['A', 'BB', 'BV', 'Cy', 'R','T']:
      if Relevant_data['Type'].iloc[j]==x:
           if Relevant_data['Amount'].iloc[j]>=np.asscalar(t.loc[x,0.0].values) and Relevant_data['Amount'].iloc[j]<np.asscalar(t.loc[x,0.25].values):
                Relevant_data['Bin'].iloc[j]="{} of {}".format("Bin1",x)
            elif Relevant_data['Amount'].iloc[j]>=np.asscalar(t.loc[x,0.25].values) and Relevant_data['Amount'].iloc[j]<np.asscalar(t.loc[x,0.50].values):
                Relevant_data['Bin'].iloc[j]="{} of {}".format("Bin2",x)
            elif Relevant_data['Amount'].iloc[j]>=np.asscalar(t.loc[x,0.50].values) and Relevant_data['Amount'].iloc[j]<np.asscalar(t.loc[x,0.75].values):
                Relevant_data['Bin'].iloc[j]="{} of {}".format("Bin3",x)
            elif Relevant_data['Amount'].iloc[j]>=np.asscalar(t.loc[x,0.75].values) and Relevant_data['Amount'].iloc[j]<=np.asscalar(t.loc[x,1.00].values):
                Relevant_data['Bin'].iloc[j]="{} of {}".format("Bin4",x)

我能夠提高代碼的可讀性並縮短執行時間。

def analyze(Amount_R,Type_R): 
    if np.asscalar(t.loc[Type_R,0.0].values)<=Amount_R<np.asscalar(t.loc[Type_R,0.25].values):
        return "{} of {}".format("Bin1",Type_R)  
    if np.asscalar(t.loc[Type_R,0.25].values)<=Amount_R<np.asscalar(t.loc[Type_R,0.50].values):
        return "{} of {}".format("Bin2",Type_R) 
    if np.asscalar(t.loc[Type_R,0.50].values)<=Amount_R<np.asscalar(t.loc[Type_R,0.75].values):
        return "{} of {}".format("Bin3",Type_R)  
    if np.asscalar(t.loc[Type_R,0.75].values)<=Amount_R<=np.asscalar(t.loc[Type_R,1.00].values):
        return "{} of {}".format("Bin4",Type_R) 
Relevant_data_Retailers['Bin']=np.vectorize(analyze)(Relevant_data_Retailers['Transaction_Amount'],Relevant_data_Retailers['Transaction_Type'])

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM