Ковзні вікна у pandas

Опрацювання часових рядів у Python

Stefan Jansen

Founder & Lead Data Scientist at Applied Artificial Intelligence

Віконні функції в pandas

  • Вікна визначають підперіоди у вашому часовому ряді
  • Обчислюйте метрики для підперіодів усередині вікна
  • Створіть новий часовий ряд метрик
  • Два типи вікон:
    • Ковзне: фіксований розмір, зсувне (це відео)
    • Наростаюче: містить усі попередні значення (наступне відео)
Опрацювання часових рядів у Python

Обчислення ковзного середнього

data = pd.read_csv('google.csv', parse_dates=['date'], index_col='date')
DatetimeIndex: 1761 entries, 2010-01-04 to 2016-12-30
Data columns (total 1 columns):
price     1761 non-null float64
dtypes: float64(1)

Ковзні вікна з pandas.010

Опрацювання часових рядів у Python

Обчислення ковзного середнього

# Розмір вікна за кількістю елементів
data.rolling(window=30).mean() # фіксована кількість спостережень
DatetimeIndex: 1761 entries, 2010-01-04 to 2017-05-24
Data columns (total 1 columns):
price    1732 non-null float64
dtypes: float64(1)
  • window=30: к-ть робочих днів
  • min_periods: встановіть < 30, щоб мати результати для перших днів
Опрацювання часових рядів у Python

Обчислення ковзного середнього

# Розмір вікна за зсувом (offset)
data.rolling(window='30D').mean() # фіксована тривалість періоду
DatetimeIndex: 1761 entries, 2010-01-04 to 2017-05-24
Data columns (total 1 columns):
price    1761 non-null float64
dtypes: float64(1)
  • 30D: к-ть календарних днів
Опрацювання часових рядів у Python

Ковзне середнє за 90 днів

r90 = data.rolling(window='90D').mean()

google.join(r90.add_suffix('_mean_90')).plot()

Ковзні вікна з pandas.017

Опрацювання часових рядів у Python

Ковзні середні за 90 і 360 днів

data['mean90'] = r90

r360 = data['price'].rolling(window='360D'.mean()
data['mean360'] = r360; data.plot()

Ковзні вікна з pandas.020

Опрацювання часових рядів у Python

Кілька ковзних метрик (1)

r = data.price.rolling('90D').agg(['mean', 'std'])

r.plot(subplots = True)

Ковзні вікна з pandas.022

Опрацювання часових рядів у Python

Кілька ковзних метрик (2)

rolling = data.google.rolling('360D')

q10 = rolling.quantile(0.1).to_frame('q10')
median = rolling.median().to_frame('median')
q90 = rolling.quantile(0.9).to_frame('q90')
pd.concat([q10, median, q90], axis=1).plot()

Ковзні вікна з pandas.024

Опрацювання часових рядів у Python

Давайте потренуємось!

Опрацювання часових рядів у Python

Preparing Video For Download...