Python/IPython code to analyze one's text messages. Intended to work out of the box.
Author: Michael Dezube <michael dezube at gmail dot com>
This code will:
- Find your latest iPhone sync (currently only supports doing this automatically on Macs), for PCs edit
table_connector.py
to find the file - Load up the messages database and address book database locally
- Merge the databases together into
fully_merged_messages_df
which you can freely play with - Visualize a word tree of your text messages with a specific contact, see word tree screenshot
- Show you who you text the most
- Create an interactive streamgraph to visualize how your texting with people has trended over time, see steamgraph screenshot
Note: none of your data is modified nor sent anywhere during execution
Run pip install -r requirements.txt
If you don't have pip, see https://pip.pypa.io/en/stable/installing/
- Pandas
- IPython
- An iPhone, having synced with this computer
- If running on a Mac, code will work out of the box. If running on a PC, change the variable
BASE_DIR
intable_connector.py
to the directory of your backups- This post seems to specify the location of backups on Windows.
- Internet connection to load the google visualization API, it's a very small file though
- Start the IPython notebook like so:
jupyter notebook sms_analysis.ipynb
- Under the menu choose Cell --> Run All
- Edit the
CONTACT_NAME
andROOT_WORD
in the last cell to alter the visualization and then re-run that cell, under menu choose: Cell --> Run Cell
- Run
python table_connector.py
to see a sample of the messages and address book data - Run
python table_connector.py --full
to see a sample of the messages and address book data with all of their columns - Run
python table_connector.py <output directory>
to output the messages and address book data into CSV files - Run
python table_connector.py --full <output directory>
to output the messages and address book data into CSV files with all of their columns - SEE THE ARGS DOCUMENTATION:
python table_connector.py --help
to see the arguments and their options