#!/usr/bin/env python # coding: utf-8 # #### Graph Gmail inbox data with IPython notebook # In[29]: from IPython.display import Image # In[31]: Image('http://i.imgur.com/SYija2N.png') # ###### Download your Gmail inbox as a ".mbox" file by clicking on "Account" under your Gmail user menu, then "Download data" # ###### Install the Python libraries mailbox and dateutils with sudo pip install mailbox and sudo pip install dateutils # In[12]: import mailbox from email.utils import parsedate from dateutil.parser import parse import itertools import plotly.plotly as py from plotly.graph_objs import * # In[13]: path = '/Users/jack/Desktop/All mail Including Spam and Trash.mbox' # ##### Open your ".mbox" file with mailbox # In[22]: mbox = mailbox.mbox(path) # ##### Sort your mailbox by date # In[23]: def extract_date(email): date = email.get('Date') return parsedate(date) sorted_mails = sorted(mbox, key=extract_date) mbox.update(enumerate(sorted_mails)) mbox.flush() # ##### Organize dates of email receipt as a list # In[24]: all_dates = [] mbox = mailbox.mbox(path) for message in mbox: all_dates.append( str( parse( message['date'] ) ).split(' ')[0] ) # ##### Count and graph emails received per day # In[25]: email_count = [(g[0], len(list(g[1]))) for g in itertools.groupby(all_dates)] # In[26]: email_count[0] # In[27]: x = [] y = [] for date, count in email_count: x.append(date) y.append(count) # In[28]: py.iplot( Data([ Scatter( x=x, y=y ) ]) ) # ##### Restyle the chart in Plotly's GUI # In[10]: import plotly.tools as tls tls.embed('https://plot.ly/~jackp/3266') # ##### Custom css styling # In[11]: from IPython.core.display import HTML import urllib2 HTML(urllib2.urlopen('http://bit.ly/1Bf5Hft').read())