Skip to content

Instantly share code, notes, and snippets.

@jryans
Created June 27, 2015 09:50
Show Gist options
  • Save jryans/9cbcec33f851513dae21 to your computer and use it in GitHub Desktop.
Save jryans/9cbcec33f851513dae21 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{"nbformat_minor": 0, "cells": [{"execution_count": 3, "cell_type": "code", "source": "import ujson as json\nimport matplotlib.pyplot as plt\nimport pandas as pd\nimport numpy as np\nimport plotly.plotly as py\nimport datetime as dt\n\nfrom moztelemetry import get_pings, get_pings_properties, get_one_ping_per_client\n\n%pylab inline", "outputs": [{"output_type": "stream", "name": "stdout", "text": "Populating the interactive namespace from numpy and matplotlib\n"}], "metadata": {"collapsed": false, "trusted": true}}, {"execution_count": 2, "cell_type": "code", "source": "sc.defaultParallelism", "outputs": [{"execution_count": 2, "output_type": "execute_result", "data": {"text/plain": "16"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": true}}, {"execution_count": 5, "cell_type": "code", "source": "now = dt.datetime.now()\nstart = now - dt.timedelta(7)\nend = now - dt.timedelta(1)\n\npings = get_pings(sc, \n app=\"Firefox\", \n channel=\"aurora\", \n submission_date=(start.strftime(\"%Y%m%d\"), end.strftime(\"%Y%m%d\")), \n fraction=1)", "outputs": [], "metadata": {"collapsed": false, "trusted": true}}, {"execution_count": 16, "cell_type": "code", "source": "def plot_keyed_property(key_name):\n def get_keyed_properties(pings, histogram_name):\n pings = pings.map(lambda p: json.loads(p))\n\n keys = pings.flatMap(lambda p: p.get(\"keyedHistograms\", {}).get(histogram_name, {}).keys()).distinct().collect()\n keys = filter(lambda x: \"/\" not in x, keys)\n return map(lambda k: \"keyedHistograms/{}/{}\".format(histogram_name, k), keys)\n\n properties = get_keyed_properties(pings, \"DEVTOOLS_WEBIDE_\" + key_name)\n\n subset = get_pings_properties(pings, properties)\n\n histograms = subset.flatMap(lambda p: list(p.iteritems()))\n\n byKey = histograms.reduceByKey(lambda x, y: x + y).collect()\n\n votes = map(lambda x: (x[0], x[1][1]), byKey)\n votes = filter(lambda x: not x[0].endswith(\"_parent\"), votes)\n votes = map(lambda x: (x[0].split(\"/\")[1], x[1]), votes)\n\n aggregates = pd.Series(dict(votes))\n\n frame = pd.DataFrame(aggregates)\n\n frame.plot(kind = \"bar\")\n plt.title(key_name)", "outputs": [], "metadata": {"collapsed": false, "trusted": true}}, {"execution_count": 17, "cell_type": "code", "source": "plot_keyed_property(\"CONNECTED_RUNTIME_TYPE\")", "outputs": [{"output_type": "display_data", "data": {"image/png": "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\n", "text/plain": "<matplotlib.figure.Figure at 0x7fa240161250>"}, "metadata": {}}], "metadata": {"collapsed": false, "trusted": true}}, {"execution_count": null, "cell_type": "code", "source": "", "outputs": [], "metadata": {"collapsed": true, "trusted": true}}], "nbformat": 4, "metadata": {"kernelspec": {"display_name": "Python 2", "name": "python2", "language": "python"}, "language_info": {"mimetype": "text/x-python", "nbconvert_exporter": "python", "version": "2.7.9", "name": "python", "file_extension": ".py", "pygments_lexer": "ipython2", "codemirror_mode": {"version": 2, "name": "ipython"}}}}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment