jueves, 16 de julio de 2020

Algunos trabajos con frecuencias de tiempo

Algunos trabajos con frecuencias de tiempo. También se usa random de numpy

In [1]:
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

declaramos una variable

per = a minutos en un año (bisiesto)

In [2]:
per = 1440

Definimos un rango de tiempo en función de la variable per. con una frecuencia T

In [3]:
tidx = pd.date_range('2020-01-01', periods = per, freq='T')
print(tidx)
DatetimeIndex(['2020-01-01 00:00:00', '2020-01-01 00:01:00',
               '2020-01-01 00:02:00', '2020-01-01 00:03:00',
               '2020-01-01 00:04:00', '2020-01-01 00:05:00',
               '2020-01-01 00:06:00', '2020-01-01 00:07:00',
               '2020-01-01 00:08:00', '2020-01-01 00:09:00',
               ...
               '2020-01-01 23:50:00', '2020-01-01 23:51:00',
               '2020-01-01 23:52:00', '2020-01-01 23:53:00',
               '2020-01-01 23:54:00', '2020-01-01 23:55:00',
               '2020-01-01 23:56:00', '2020-01-01 23:57:00',
               '2020-01-01 23:58:00', '2020-01-01 23:59:00'],
              dtype='datetime64[ns]', length=1440, freq='T')

declarar una variable que genera números random en función de la variable per

Se usa random.randn que en nunpy genera numeros de -1 al 1, sin ser 0
In [4]:
data = np.random.randn(per)

Genera un serie: dat es el data de lista. Index es tidx

luego se obtinen estadisticas de la lista
In [5]:
ts = pd.Series(data=data, index=tidx, name='SERIE_TIEMPO') 
tp = ts.describe()
ts
Out[5]:
2020-01-01 00:00:00   -1.014779
2020-01-01 00:01:00   -0.508143
2020-01-01 00:02:00   -0.730068
2020-01-01 00:03:00   -0.398964
2020-01-01 00:04:00   -1.245432
                         ...   
2020-01-01 23:55:00    0.629801
2020-01-01 23:56:00    0.419006
2020-01-01 23:57:00    1.292841
2020-01-01 23:58:00    1.350318
2020-01-01 23:59:00    0.354990
Freq: T, Name: SERIE_TIEMPO, Length: 1440, dtype: float64

Obtenemos muestras cada 15 minutos.

In [6]:
tp = ts.resample('15T').last()

Luego podemos hacer gráficos. por ejemplo la mínima, la máxima y la media de esa muestra.

In [7]:
ts.resample('15T').agg(['min', 'mean', 'max']).plot()
Out[7]:
<matplotlib.axes._subplots.AxesSubplot at 0x7fb6f39b7b90>
Share: