def group_by_year(values, aggregationfunc): """input should be [(datetime, stuff), ...] >>> indata = [(datetime.date(2012, 1, 31), 1), (datetime.date(2012, 4, 30), 3), ... (datetime.date(2012, 1, 1), -1), (datetime.date(2011, 12, 12), 0)] >>> group_by_year(indata, max) [(datetime.date(2011, 1, 1), 0), (datetime.date(2012, 1, 1), 3)] """ return _group_by_x(values, aggregationfunc, lambda x: date_trunc('year', x))
def group_by_tertial(values, aggregationfunc): """input should be [(datetime, stuff), ...] >>> indata = [(datetime.date(2012, 1, 31), 1), (datetime.date(2012, 4, 30), 3), ... (datetime.date(2012, 1, 1), -1), (datetime.date(2011, 12, 12), 0)] >>> group_by_tertial(indata, avg) [(datetime.date(2011, 9, 1), 0.0), (datetime.date(2012, 1, 1), 1.0)] """ return _group_by_x(values, aggregationfunc, lambda x: date_trunc('tertial', x))
def group_by_week(values, aggregationfunc): """input should be [(datetime, stuff), ...] >>> indata = [(datetime.date(2012, 1, 31), 1154), (datetime.date(2012, 2, 20), 3466), ... (datetime.date(2012, 2, 22), 3440), (datetime.date(2012, 3, 13), 3402), ... (datetime.date(2012, 1, 29), -2), (datetime.date(2012, 2, 27), 3436)] >>> group_by_week(indata, min) [(datetime.date(2012, 1, 23), -2), (datetime.date(2012, 1, 30), 1154), (datetime.date(2012, 2, 20), 3440), (datetime.date(2012, 2, 27), 3436), (datetime.date(2012, 3, 12), 3402)] """ return _group_by_x(values, aggregationfunc, lambda x: date_trunc('week', x))
def group_by_month(values, aggregationfunc): """input should be [(datetime, stuff), ...] >>> indata = [(datetime.date(2012, 1, 30), 1), (datetime.date(2012, 1, 31), 3), ... (datetime.date(2012, 1, 1), -1), (datetime.date(2012, 1, 1), 0)] >>> group_by_month(indata, min) [(datetime.date(2012, 1, 1), -1)] >>> group_by_month(indata, max) [(datetime.date(2012, 1, 1), 3)] >>> group_by_month(indata, avg) [(datetime.date(2012, 1, 1), 0.75)] """ return _group_by_x(values, aggregationfunc, lambda x: date_trunc('month', x))
def group_by_day(values, aggregationfunc): """input should be [(datetime, stuff), ...]""" return _group_by_x(values, aggregationfunc, lambda x: date_trunc('day', x))