promedio de datos cada media hora solo para los días de semana

Estoy tratando de obtener el promedio (durante 24 horas a intervalos de 30 minutos) de una sección de datos de series temporales.

Actualmente tengo:

# Data of interest
START = datetime(2010,2,1,0,0,0)
END = datetime(2010,2,8,23,59,59)

# Function to group by time of day
def minutes(date):
    time = date.strftime("%H:%M:%S")
    dt = datetime.strptime("2009-04-01 " + time, "%Y-%m-%d %H:%M:%S")
    return dt

# Truncate data to desired section
telford = store.get_data("spd_mw").TELR.truncate(START,END)

# Group and average
telford.groupby(minutes).mean()

He intentado usar asfreq(datetools.BDay()) pero quita los datos de media hora. ¿Es un caso de escribir mi propio DateOffset?

¿Existe una forma más limpia de agrupar los datos anteriores por minutos?

Por un lado: ¿truncar debe ser índices existentes en los datos? Recibo el siguiente error (en un conjunto de datos diferente al anterior):

Traceback (most recent call last):
  File "power-weather.py", line 21, in <module>
    egph_temp = store.get_data("weather_EGPH").TemperatureC.truncate(START,END)
  File "/usr/local/lib/python2.6/dist-packages/pandas-0.7.3-py2.6-linux-x86_64.egg/pandas/core/generic.py", line 702, in truncate
    result = self.ix[before:after]
  File "/usr/local/lib/python2.6/dist-packages/pandas-0.7.3-py2.6-linux-x86_64.egg/pandas/core/indexing.py", line 35, in __getitem__
    return self._getitem_axis(key, axis=0)
  File "/usr/local/lib/python2.6/dist-packages/pandas-0.7.3-py2.6-linux-x86_64.egg/pandas/core/indexing.py", line 167, in _getitem_axis
    return self._get_slice_axis(key, axis=axis)
  File "/usr/local/lib/python2.6/dist-packages/pandas-0.7.3-py2.6-linux-x86_64.egg/pandas/core/indexing.py", line 372, in _get_slice_axis
    i, j = labels.slice_locs(start, stop)
  File "/usr/local/lib/python2.6/dist-packages/pandas-0.7.3-py2.6-linux-x86_64.egg/pandas/core/index.py", line 842, in slice_locs
    beg_slice = self.get_loc(start)
  File "/usr/local/lib/python2.6/dist-packages/pandas-0.7.3-py2.6-linux-x86_64.egg/pandas/core/index.py", line 523, in get_loc
    return self._engine.get_loc(key)
  File "engines.pyx", line 101, in pandas._engines.DictIndexEngine.get_loc (pandas/src/engines.c:2498)
  File "engines.pyx", line 108, in pandas._engines.DictIndexEngine.get_loc (pandas/src/engines.c:2460)
KeyError: datetime.datetime(2010, 2, 1, 0, 0)

preguntado el 22 de mayo de 12 a las 17:05

Como primera oración, ¡hubiera sido bueno que nos dijeras lo que estabas tratando de lograr! -

1 Respuestas

Resuelto:

def weekdays(date):
    if 0 < int(datetime.strftime(date, "%w")) < 6:
        return True
    return False

def weekends(date):
    if int(datetime.strftime(date, "%w")) == (0 or 6):
        return True
    return False

telford = telford.select(weekdays)

contestado el 24 de mayo de 12 a las 13:05

No es la respuesta que estás buscando? Examinar otras preguntas etiquetadas or haz tu propia pregunta.