Я собираюсь измерить ситуацию с продажами автомобилей за последние несколько месяцев,
Мне нужно вычислить среднее значение и сумму за последние 6 и 12 месяцев,
То, как я делаю это в pythonв следующих кодах.
Проблема в том, что обработка данных занимает относительно много времени, когда данные относительно велики, а когда данные маленькие, они работают просто отлично.
Есть ли гениальный способ ускорить его?
def ts(x,y):
d[x+'sum12']=0
d[x+'sum6']=0
d[x+'year_flag']=0
d[x+'sum_last12']=0
d[x+'sum_last6']=0
for i in range(0,len(d)):
d.iloc[i][x+'sum6']=d.loc[(d.iloc[i]['PERIOD_ID']>=d['PERIOD_ID'])&\
(d['PERIOD_ID']>=d.iloc[i]['last6'])\
&(d.iloc[i]['RTL_DLR_ID']==d['RTL_DLR_ID'])] [y].sum()
d.iloc[i][x+'sum12']=d.loc[(d.iloc[i]['PERIOD_ID']>=d['PERIOD_ID'])&\
(d['PERIOD_ID']>=d.iloc[i]['last12'])\
&(d.iloc[i]['RTL_DLR_ID']==d['RTL_DLR_ID'])][y].sum()
d.iloc[i][x+'sum_last6']=d.loc[(d['PERIOD_ID']>=(d.iloc[i]['last6']-100))&\
(d.iloc[i]['last12']>=d['PERIOD_ID'])\
&(d.iloc[i]['RTL_DLR_ID']==d['RTL_DLR_ID'])][y].sum()
d.iloc[i][x+'sum_last12']=d.loc[(d['PERIOD_ID']>=(d.iloc[i]['PERIOD_ID']-100))&\
(d.iloc[i]['last12']>=d['PERIOD_ID'])\
&(d.iloc[i]['RTL_DLR_ID']==d['RTL_DLR_ID'])][y].sum()`enter code here`
d.iloc[i][x+'year_flag']=d.iloc[i]['MTD_SAL_VOL_MKR_NUM']-d.loc[(d.iloc[i]['last12']==d['PERIOD_ID'])&\
(d.iloc[i]['RTL_DLR_ID']==d['RTL_DLR_ID'])][y].sum()