Каков самый быстрый способ получить стандартные отклонения, повторяемые по строкам с уменьшающейся численностью населения?

#python #pandas #dataframe

Вопрос:

Я пытаюсь рассчитать отклонения std для определенных категорий (CAT1, CAT2, CAT3) данных «Процент PD» и хочу знать, как изменяется отклонение std по мере приближения даты истечения срока действия. То, что я пытался сделать, — это повторить каждую строку для каждой категории и рассчитать разработчиков std за оставшиеся дни в серии категорий. Например, Cat1 начинается с DTE 50, поэтому я бы выполнил разработку Std с 50 до 0 DTE, несмотря на последний день (ODTE). В принципе, отклонение std рассчитывается для сокращающейся популяции, и я ищу любую помощь в том, как достичь этого быстрее, чем итерация, если это возможно.

 for category in category_list:
    for exp_date in exp_dates_list:    
        min_dte = df[df['category'] == category].loc[df['Expiration Date'] == exp_date]['DTE'].min()
            if min_dte == 0:
                dte_list = list(df[df['category'] == category].loc[df['Expiration Date'] == exp_date]['DTE'])
                for dte in dte_list:
                    std_dev = df[(df['category'] == category)  amp; (df['Expiration Date'] == exp_date) amp; (df['DTE'] <= dte) ]['Price Delta Percent'].std()
                    df.loc[(df['category'] == category)  amp; (df['Expiration Date'] == exp_date) amp; (df['DTE'] == dte), 'PDP StdDev'] = std_dev
 

Я только начал изучать Панд в прошлом месяце и все еще учусь, поэтому прошу любых советов, как сделать это быстрее, так как я полностью поглощен медленной итерацией. Ниже приведены данные на случай, если вы захотите работать самостоятельно. Спасибо за помощь!

Необработанные данные: Pastebin CSV-данные, ИТЕРАЦИЯ СТРОКИ STD DEV

Комментарии:

1. Нет, я просмотрел предложенный пост «Группировка фреймов данных Панд для расчета стандартного отклонения численности населения», прежде чем задать этот вопрос, и он не отвечает на мой вопрос, потому что этот другой вопрос не учитывает сокращение численности населения, что я и пытаюсь сделать. Пожалуйста, повторите мой вопрос.

2. Возможно, вам захочется перефразировать название на что-то, что подчеркивает сокращение численности населения.