Как получить кумулятивное значение процентиля каждой строки временного ряда Python - PullRequest
0 голосов
/ 17 июня 2020

Как получить кумулятивное значение процентиля?

Dates
1990-01-02    17.24
1990-01-03    18.19
1990-01-04    19.22
1990-01-05    20.11
1990-01-08    20.26
1990-01-09    22.20
1990-01-10    22.44
1990-01-11    20.05
1990-01-12    24.64
1990-01-15    26.34
1990-01-16    24.18

Значение процентиля 2-й строки в 2-х строках данных и значение процентиля 3-й строки в 3-х строках данных и так далее?

1 Ответ

1 голос
/ 19 июня 2020

Вы можете сделать что-то вроде этого:

import pandas as pd
import numpy as np

df=pd.read_excel('filename.xlsx') #replace filename with name of your excel file

df['date']=pd.to_datetime(df['date']) #this doesn't affect your percentile calculation but you do it to leverage full power of pandas datetime functions

val_list=df.val.values
vals=[]
perc=[]

for r in range(len(val_list)):
    l=[x for x in val_list[0:r+1]]
    vals.append(l)

for value in vals:
    perc.append(np.percentile(value,50)) #change 50 to the percentile you want to calculate
df['percentile']=perc

print(df)

Здесь следует отметить несколько ключевых моментов:

1) Я выполнил расчет, импортировав ваши данные как pandas DF. Если вы хотите сделать это в самом массиве numpy, внесите несколько изменений в приведенный выше код. Но, Pandas DF - это элегантный способ просмотра табличных данных в Python.

2) Это может быть не самый эффективный способ, но он выполняет свою работу. Так что используйте его осторожно с очень большими наборами данных.

3) Изучите комментарии, упомянутые в коде.

Надеюсь, это поможет! Если он не ответит в комментариях ниже, я постараюсь разобраться.

...