Гость
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / освобождение памяти, требуемой скриптом / 1 сообщений из 1, страница 1 из 1
29.04.2020, 09:04
    #39952697
PlanB
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
освобождение памяти, требуемой скриптом
Добрый день! Написал несложный вроде вложенный цикл по расчету доверительных интервалов бутстрэпом. Однако на больших данных питон очень сильно ест оперативку. подскажите, пожалуйста, как можно сбрасывать потребляемую ОЗУ и/или усовершенствовать данный код.
Код: python
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
#coefficients
c_range = list(df1.columns[25:29])
#sectors/ind
i_range = list(['oil & gas','mining','metals',
                'chemicals','telecommunications','utilities',
                'transportation','agribusiness','retail trade','general manufcaturing'])
#date range
d_range = list(df1['bs_rep_date_corr'][df1['bs_rep_date_corr'].dt.year>=2008].unique())

N = range (0,10000) #итерации
p = 0.05 #уровень доверия

res_store = pd.DataFrame(columns=['coefficient', 'sector', 'date', 'mi low', 'mi', 'mi upp','me'])

for c in c_range: #for each coefficient
    tmp = df1[['bs_rep_date_corr', 'ind_mapping.Ind_corr2', c]].copy().reset_index(drop=True)
    for i in i_range: #for each ind/sector
        for d in d_range: #for each date
            tmp1 = tmp.loc[(tmp['ind_mapping.Ind_corr2']==i) & 
                          (tmp['bs_rep_date_corr']==d) & 
                          (tmp[c]>=-1) & (tmp[c]<=1)].reset_index(drop=True)
            
            estimate_values = [] #empty df for saving iterations
            print(c,i,d)
            
            for n in N: #boot iterations
                tmp_rnd = tmp1.sample(frac=1.,replace=True)
                estimate_values.append(tmp_rnd.mean())
            estimate_values = pd.DataFrame(estimate_values)
                     
            mi = estimate_values.mean().values[0].round(5)
            mi_lowB = estimate_values.quantile(q=p/2).values[0].round(5)
            mi_uppB = estimate_values.quantile(q=1-p/2).values[0].round(5)
            me = estimate_values.median().values[0].round(5)
            
            #saving cycle result
            out = pd.DataFrame([[c, i, d, mi_lowB, mi, mi_uppB, me]], columns=res_store.columns)
            res_store = res_store.append(out)
print('done')

Заранее большое спасибо!
...
Рейтинг: 0 / 0
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / освобождение памяти, требуемой скриптом / 1 сообщений из 1, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]