Pandas создание дополнительных фреймов данных с циклом for - PullRequest
0 голосов
/ 14 февраля 2020

Для целей SO это некоторые данные временного ряда:

import pandas as pd 
import numpy as np 
from numpy.random import randint 

np.random.seed(10)  # added for reproductibility                                                                                                                                                                 

rng = pd.date_range('10/9/2018 00:00', periods=1000, freq='1H') 
df = pd.DataFrame({'Random_Number':randint(1, 100, 1000)}, index=rng) 

Вопрос, как мне создать функцию, которая может возвращать повторные выборки ежедневных значений 97,5 и 2,5 процентилей для каждого дня в день? pandas фрейм данных? Я знаю, что этот код ниже даже не близок, он просто вернет верхний и нижний процентили всего набора данных. В конечном счете, я пытаюсь разбить это число на день, и возвращаемым фреймом данных будет метка времени (дата) дня повторной выборки.

def createDfs(data):
    for day in df:
        dfDay = pd.DataFrame()

        hi = df.quantile(0.975)[0]
        low = df.quantile(0.025)[0]

        data = {'upper_97.5%': [hi],
                'lower_2.5%' : [low]}     

        dfUpperLower = pd.DataFrame(data)
        #dfUpperLower.set_index('Date')

    return dfUpperLower

Любые советы очень ценятся ..

1 Ответ

2 голосов
/ 14 февраля 2020

Я думаю, вы просто хотите использовать .resample с .quantile:

In [10]: df.resample('1D').quantile([0.025, 0.975]).unstack()
Out[10]:
           Random_Number
                   0.025   0.975
2018-10-09         5.600  91.700
2018-10-10        12.575  94.425
2018-10-11         5.575  92.400
2018-10-12         9.875  97.425
2018-10-13         2.725  87.550
2018-10-14        10.200  96.425
2018-10-15        10.725  96.425
...
...