Skip to content

Instantly share code, notes, and snippets.

@davidbrenner
Created September 18, 2015 05:06
Show Gist options
  • Save davidbrenner/b36f3ef7ae6f0fe8bdf2 to your computer and use it in GitHub Desktop.
Save davidbrenner/b36f3ef7ae6f0fe8bdf2 to your computer and use it in GitHub Desktop.
Used for creating histogram of thimble.io user signups
#!/usr/bin/env python2
import csv
from dateutil import tz
import dateutil.parser
import numpy as np
import pylab as P
from matplotlib.dates import MinuteLocator, HourLocator, DayLocator, DateFormatter
from matplotlib.dates import date2num, num2date
timestamps = []
with open('Thimble.csv', 'rb') as csvfile:
# Thimble.csv field names: id,form_id,created_at,spam,email,name
csvreader = csv.reader(csvfile, delimiter=',')
# skip header row
csvreader.next()
for row in csvreader:
# signup_time = created_at field
signup_time = dateutil.parser.parse(row[2])
from_zone = tz.gettz('UTC')
to_zone = tz.gettz('America/New_York')
utc = signup_time.replace(tzinfo=from_zone)
# strip all timezone data so we're showing NY time
timestamps.append(utc.astimezone(to_zone).replace(tzinfo=None))
(hist, bin_edges) = np.histogram(date2num(timestamps), bins=48, density=False, normed=False)
width = bin_edges[1] - bin_edges[0]
fig = P.figure()
ax = fig.add_subplot(111)
ax.bar(bin_edges[:-1], hist, width=width)
ax.set_ylabel('New Subscribers')
ax.set_xlabel('MM/DD/YY - HH:MM (New York timezone)')
ax.set_title('New Subscribers per Hour')
ax.xaxis.set_major_locator(HourLocator(interval=2))
ax.xaxis.set_major_formatter(DateFormatter('%D - %H:%M'))
fig.autofmt_xdate()
P.show()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment