Summarizing data by week

Dan Bishop danb_83 at yahoo.com
Tue Jan 9 22:39:22 EST 2007


On Jan 9, 1:57 pm, "Mike Orr" <sluggos... at gmail.com> wrote:
> What's the best way to summarize data by week?  I have a set of
> timestamped records, and I want a report with one row for each week in
> the time period, including zero rows if there are weeks with no
> activity.  I was planning to use ISO weeks because datetime has a
> convenient .isocalendar() method, but I want each output row to have a
> label like this:
>
>     2006 week 5 (Feb)
>
> However, to get the month (of the Thursday of that week) I have to
> convert it back to an actual date,and I don't see a method to do that
> in datetime or dateutil or mx.DateTime.
>
> I was planning to use a dateutil.rrule to generate the weeks from the
> minimum to maximum date, including any weeks that have no activity (so
> they won't be in the dictionary).  But rrule sequences are based on an
> actual start date, not an ISO week, so that won't work.  Unless perhaps
> I take the minimum date and calculate the Thursday of that week, and
> start from there.  Then all my conversions would be to iso_week rather
> than from iso_week.

That would work.  The first Thursday of the year can be computed as:

def first_thursday(year):
    jan1 = datetime.date(year, 1, 1)
    return jan1 + datetime.timedelta((3 - jan1.weekday()) % 7)




More information about the Python-list mailing list