{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "# Real-world data in a few minutes with Google Science Journal\n", "\n", "**Author:** [Fernando Perez](https://github.com/fperez) ([@fperez_org](https://twitter.com/fperez_org)).\n", "\n", "Using an Android phone and Google's new [Science Journal](https://makingscience.withgoogle.com/science-journal/activities) app, it's very easy to collect real-world data. \n", "\n", "The first thing I did was to try their basic light example, using the phone's light sensor. I recorded for a few seconds moving my phone under a lamp, this is what the app shows:\n", "\n", "![Google Science Journal App](screenshot.png)\n", " \n", "Let's see how we can get a bit more detail with just a few lines of code.\n", " \n", "From within the app, it takes just a couple of taps to export the data to a CSV file and put it on dropbox, from where we can pick it up with the computer and continue our experiments here." ] }, { "cell_type": "code", "execution_count": 1, "metadata": { "collapsed": false }, "outputs": [], "source": [ "%matplotlib inline\n", "import pandas as pd" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Let's have a quick peek at the data, it's always a good idea to do this, to know how to best load it:" ] }, { "cell_type": "code", "execution_count": 2, "metadata": { "collapsed": false }, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "timestamp,value\r\n", "1463893627134,10.0\r\n", "1463893627209,12.0\r\n", "1463893627238,12.0\r\n", "1463893627340,12.0\r\n", "1463893627441,12.0\r\n", "1463893627542,12.0\r\n", "1463893627643,12.0\r\n", "1463893627743,12.0\r\n", "1463893627817,10.0\r\n" ] } ], "source": [ "fname = \"Untitled Experiment Trial 1.csv\"\n", "!head \"$fname\"" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "OK, the timestamps look like miliseconds from the epoch. \n", "\n", "For convenience, we'll subtract the first timestamp from all of them to get 0-offset data (basically setting our \"laboratory clock\" at $t=0$ for data collection). This is done by the `tc` function below, applied to column 0 in `converters`.\n", "\n", "We can also ask Pandas to use the time directly as our data index (`index_col=0`) and we'll name the columns ourselves, by providing the column names and asking it to skip the header (`header=0`):" ] }, { "cell_type": "code", "execution_count": 3, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
lux
time
010.0
7512.0
10412.0
20612.0
30712.0
\n", "
" ], "text/plain": [ " lux\n", "time \n", "0 10.0\n", "75 12.0\n", "104 12.0\n", "206 12.0\n", "307 12.0" ] }, "execution_count": 3, "metadata": {}, "output_type": "execute_result" } ], "source": [ "tc = lambda x: int(x)-1463893627134\n", "df = pd.read_csv(fname, index_col=0, converters={0:tc}, names=[\"time\", \"lux\"], header=0)\n", "df.head()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Now let's get some quick summary statistics on the data:" ] }, { "cell_type": "code", "execution_count": 4, "metadata": { "collapsed": false }, "outputs": [ { "data": { "text/html": [ "
\n", "\n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", " \n", "
lux
count146.000000
mean1604.424658
std6590.471272
min6.000000
25%8.000000
50%12.000000
75%23.000000
max32767.000000
\n", "
" ], "text/plain": [ " lux\n", "count 146.000000\n", "mean 1604.424658\n", "std 6590.471272\n", "min 6.000000\n", "25% 8.000000\n", "50% 12.000000\n", "75% 23.000000\n", "max 32767.000000" ] }, "execution_count": 4, "metadata": {}, "output_type": "execute_result" } ], "source": [ "df.describe()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This already gives us more detail that Google does (cf screenshot above), as we have more precise min/max/average values, as well as extra statistics.\n", "\n", "We can also plot the data, but because of the sharp variation in the intensity, the linear scale provided by the app isn't too informative, a log y scale will be much more useful:" ] }, { "cell_type": "code", "execution_count": 5, "metadata": { "collapsed": false }, "outputs": [ { "data": { "image/png": "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\nhOJzD/BYzgAAAABJRU5ErkJggg==\n", "text/plain": [ "" ] }, "metadata": {}, "output_type": "display_data" } ], "source": [ "df.plot(logy=True);" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "This little exercise only took me a few minutes to code up, from installing the app in the first place to having the data loaded and minimally summarized. While obviously I haven't done anything interesting with this 5-minute proof of concept, I find it exciting that with this app, accessing real-world data that we can then load into Jupyter for more complex analysis has become *incredibly* easy. Now we should start playing with fun and/or meaningful data and questions..." ] } ], "metadata": { "kernelspec": { "display_name": "IPython (Python 3)", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.5.1" }, "widgets": { "state": {}, "version": "1.1.1" } }, "nbformat": 4, "nbformat_minor": 1 }