{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "skip"
    }
   },
   "source": [
    "# Abstract\n",
    "\n",
    "## Titel: Einführung in Software Analytics\n",
    "\n",
    "\n",
    "## Beschreibung\n",
    "In Unternehmen werden Datenanalysen intensiv genutzt, um aus Geschäftsdaten wertvolle Einsichten\n",
    "zu gewinnen. Warum nutzen wir als Softwareentwickler Datenanalysen dann nicht auch für unsere eigenen Daten? \n",
    "\n",
    "In diesem Workshop stelle ich Vorgehen und Best Practices von Software Analytics vor. Wir sehen uns die dazugehörigen Open-Source-Werkzeuge an, mit denen sich Probleme in der Softwareentwicklung zielgerichtet analysieren und kommunizieren lassen. \n",
    "\n",
    "Im Praxisteil mit Jupyter, pandas, jQAssistant, Neo4j & Co. erarbeiten wir gemeinsam wertvolle Einsichten aus Datenquellen wie Git-Repositories, Performancedaten, Qualitätsberichten oder auch direkt aus dem Programmcode. Wir suchen nach besonders fehleranfälligem Code, erschließen No-Go-Areas in Altanwendungen und priorisieren Aufräumarbeiten entlang wichtiger Programmteile. \n",
    "\n",
    "Gerne kann bei diesem interaktiven Workshop direkt mitgearbeitet werden. Ein Notebook mit Internetzugang reicht hierfür völlig aus."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "slideshow": {
     "slide_type": "skip"
    }
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import pandas as pd"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "\n",
    "# Einführung in<br/> Software Analytics\n",
    "<b>Markus Harrer</b>, Software Development Analyst\n",
    "  \n",
    "`@feststelltaste`\n",
    "\n",
    "\n",
    "<small>ML Summit 2019, 14. Oktober 2019</small>\n",
    "\n",
    "<img src=\"../../demos/resources/innoq_logo.jpg\" width=20% height=\"20%\" align=\"right\"/>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Workshop-Aufbau (1/2)\n",
    "\n",
    "### 1. Teil: Theorie & Hands-On\n",
    "* Einführung in das Thema \"Software Analytics\"\n",
    "* Vorgehen für Datenanalysen in der Softwareentwicklung\n",
    "* Werkzeuge für leichtgewichtiges Software Analytics"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Workshop-Aufbau (2/2)\n",
    "\n",
    "### 2. Teil: Praxis\n",
    "* Gemeinsame Durchführung erster Analysen\n",
    "* Bearbeitung von Aufgaben in Kleingruppen\n",
    "* Fragen & Antworten"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Über mich\n",
    "\n",
    "<img src=\"../../demos/resources/ueber_mich.png\" style=\"width:85%;\" >"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Datenanalysen in der Softwareentwicklung?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "#  ... ein typischer Projektverlauf"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## ... ein typischer Projektverlauf\n",
    "<img src=\"../../demos/resources/schuld1.png\" style=\"width:95%;\" align=\"center\"/>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## ... ein typischer Projektverlauf\n",
    "<img src=\"../../demos/resources/schuld2.png\" style=\"width:95%;\" align=\"center\"/>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## ... ein typischer Projektverlauf\n",
    "<img src=\"../../demos/resources/schuld3.png\" style=\"width:95%;\" align=\"center\"/>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## ... ein typischer Projektverlauf\n",
    "<img src=\"../../demos/resources/schuld4.png\" style=\"width:95%;\" align=\"center\"/>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "##  \n",
    "##   \"Die Definition von Wahnsinn ist, immer wieder das Gleiche zu tun und andere Ergebnisse zu erwarten.\"\n",
    "\n",
    "<br/>\n",
    "<div align=\"right\">&ndash; Albert Einstein</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Das (Tr|D)auerthema\n",
    "<img src=\"../../demos/resources/kombar0.png\" style=\"width:95%;\" align=\"center\"/>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Das (Tr|D)auerthema\n",
    "<img src=\"../../demos/resources/kombar4.png\" style=\"width:95%;\" align=\"center\"/>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## \"Software Analytics\" als Retter?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Definition \"Software Analytics\"\n",
    "\"Software Analytics is analytics on <b>software data</b> for **managers** and <b class=\"green\">software engineers</b> with the aim of empowering software development individuals and teams to _gain and share insight from their data_ to <b>make better decisions</b>.\"\n",
    "<br/>\n",
    "<div align=\"right\"><small>Tim Menzies and Thomas Zimmermann</small></div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Welche Arten von Softwaredaten?\n",
    "\n",
    "Alles was aus der Entwicklung und dem Betrieb der Softwaresysteme so anfällt: \n",
    "* Statische Daten\n",
    "* Laufzeitdaten\n",
    "* Chronologische Daten\n",
    "* Daten aus der Software-Community"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "#### Welche Werkzeuge, Datenquellen und Daten?\n",
    "<img src=\"../../demos/resources/softwaredaten.png\" style=\"width:85%;\" align=\"center\"/>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "<b>Sehr große Auswahl == sehr große Möglichkeiten?</b>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## (M)ein Problem mit (klassischem) Software Analytics"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### (M)ein Problem mit Software Analytics\n",
    "<img src=\"../../demos/resources/freq1_en.png\" style=\"width:80%;\" align=\"center\"/>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "### (M)ein Problem mit Software Analytics\n",
    "<img src=\"../../demos/resources/freq1_en.png\" style=\"width:80%;\" align=\"center\"/>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### (M)ein Problem mit Software Analytics\n",
    "<img src=\"../../demos/resources/freq2_en.png\" style=\"width:80%;\" align=\"center\"/>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### (M)ein Problem mit Software Analytics\n",
    "<img src=\"../../demos/resources/freq3_en.png\" style=\"width:80%;\" align=\"center\"/>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### (M)ein Problem mit Software Analytics\n",
    "<img src=\"../../demos/resources/freq4_en.png\" style=\"width:80%;\" align=\"center\"/>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### (M)ein Problem mit Software Analytics\n",
    "<img src=\"../../demos/resources/freq5_en.png\" style=\"width:80%;\" align=\"center\"/>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Andere sehen dieses Problem auch!\n",
    "\n",
    "*Thomas Zimmermann in \"One size does not fit all\":*\n",
    "<br/><br/>\n",
    "<div style=\"font-size:70%;\" align=\"center\">\n",
    "\"The main lesson: There is no one size fits all model. Even if you find models that work for most, they will not work for everyone. There is much <strong>academic research</strong> into <strong>general models</strong>. In contrast, <b><span class=\"green\">industrial practitioners</span></b> are often fine with <b><span class=\"green\">models that just work for their data</span></b> if the model provides some insight or allows them to work more efficiently.\"<br/>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "Aber: \"... the methods typically are applicable on different datasets.\"<br/>\n",
    "<b>=> Analyseideen sind wiederverwendbar!</b>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### \"Es kommt drauf an!\" aka Kontext\n",
    "\n",
    "<div style=\"margin-left:160px;margin-top:80px;\">\n",
    "<img src=\"../../demos/resources/context.png\" style=\"width:70%;\" /></div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "<b>Individuelle Systeme == Individuelle Probleme => Individuelle Analysen => Individuelle Erkenntnisse!</b>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "# Wie Software Analytics dann umsetzen?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "<br/><br/>\n",
    "<div align=\"center\">\n",
    "    <h1><strong>Data Science</strong>\n",
    "    <br/><br/></h1>\n",
    "      <h2>  <i style=\"font-weight: normal;\">Eine leichtgewichtige Umsetzung von </i><b><span class=\"blue\">Software Analytics</span></b></h2>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Data Science"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Was is Data Science?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "\"**Statistics** on a <b><span class=\"green\">Mac</span></b>.\"\n",
    "<br/>\n",
    "<br/>\n",
    "<div align=\"right\"><small>https://twitter.com/cdixon/status/428914681911070720</small></div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Meine Definition"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "#### Was bedeutet \"**data**\"?\n",
    "\"Without **data** you‘re just another person with an opinion.\"\n",
    "<br/>\n",
    "<div align=\"right\"><small>W. Edwards Deming</small></div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "<b>=> Belastbare Erkenntnisse mittels <span class=\"green\">Fakten</span> liefern</b>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "#### Was bedeutet \"**science**\"?\n",
    "  \n",
    "  \n",
    "\"The aim of **science** is to seek the simplest explanations of complex facts.\"\n",
    "<br/>\n",
    "<div align=\"right\"><small>Albert Einstein</small></div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "<b>=> Neue Erkenntnisse <span class=\"green\">verständlich</span> herausarbeiten</b>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Warum Data Science?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Große (Online-)Community\n",
    "* Kostenlose Online-Kurse, -Videos und Tutorials (z. B. DataCamp mit über 4,6 Mio. Mitgliedern)\n",
    "* Direkte Hilfestellungen (z. B. Stack Overflow oder Blog-Artikel)\n",
    "* Lernen und lernen von anderen durch Online-Wettbewerbe (e. g. Kaggle, )"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Freie und einfach zu nutzende Werkzeuge!\n",
    "<br/>\n",
    "<br/>\n",
    "<img src=\"../../demos/resources/rvspy.png\" style=\"width:95%;\" >\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Data Science liegt immer noch im Trend!"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    },
    "tags": [
     "delete"
    ]
   },
   "outputs": [
    {
     "data": {
      "image/png": "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qae0cuXKNq81xrR5rjsSEhJ0+eWX6/7779drr72mSZMmac2aNZo5c6amTp0a0K8FAEAk+2Rv4+LfpKGpcrkC+3d2Twvj23QRKjZu3KiysrIWxxu2gDz55JOVnJys0aNHa9++fcrNzW0x980335TkaaPpzuc36NevnyRp7969LeZv2LCh42/Ga8eOHZLka6Px95///KfTn9MZUVFRqq9v/8ly1157rYwxevjhh/Xoo4+qvr6e1XgAALrIf8eaqcPDd//4BgR5HLeSkhLdfffdTY5t2LBBTzzxhFJTU3XhhRdKkr797W/LWqvbbrutSXAtLCzUT3/6U9+c7n6+1Nifvnz58iar8nv37m3xGe0ZMWKEJLXYj/7VV1/Vo48+2unP6Yz09HQdPnxYx44da3PO2LFjdfrpp+vll1/WQw89pL59++qiiy4KaB0AAEQ6//74yUPDuz9eorUGATBv3jw9+uijWr9+vebMmaMDBw7omWeekdvt1sMPP6yUFM+Dd2+99Va98sorevHFFzV16lSdc845qqys1F//+lcdOnRI3//+93Xaaad1+/MlaebMmZo3b57Wrl2rGTNmaMGCBTp48KBeeuklnXnmma2u1Lfmuuuu0/Lly7V48WItXLhQQ4cO1aeffqo1a9bom9/8ZkD3rz/99NP14Ycf6qyzztK8efMUFxenqVOn6rzzzmtR0+uvv66DBw/qxhtvVGJiYsBqAAAg0kXaja4SK/IIgJEjR+rdd99Vv3799NBDD+nZZ59Vdna2Vq9e3WTVODY2Vv/617/085//XJL0wAMPaOXKlRo7dqyefPJJ/epXvzquz2/w4osv6oorrlB+fr4eeOABffTRR/r1r3/d5ue3ZsqUKXrzzTc1e/ZsrV69Wg8++KBKS0v1t7/9Tddcc00Xf4fad/vtt+uaa67RF198oV/+8pe644479Pzzz7eYd/755/u2taStBgCArtlbfEwlx2olSakJMcpMC/8FMdPKTo+9kjEmJzs7O7ujR91v3bpVkjRhwoSeKCuk5eXlaeTIkVq2bJlWrFgRdp8fbnbu3KkxY8Zozpw5WrduXZeu5c8tAKC3e+mT/brxKc+W1XPHZujx78x0rJZp06Zp48aNG621x/VodlbkgTBx7733ylqrG264welSAAAIO5v3RVZbjUSPPBDS9uzZoyeffFK5ublavny5pk6d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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 250,
       "width": 377
      },
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "pd.read_csv(\"../datasets/google_trends_datascience.csv\").plot();"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "\"100\" == max. Beliebtheit!"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Mein \"Bias\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "* Masterand: Schnelle Ergebnisse notwendig"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "* Enterprise Java-Entwickler: Abends noch was Richtiges zu Stande bekommen"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "* Allgemein: Weitere Standbeine \"Data Science\" und \"Graphdatenbanken\""
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "# Wie weit weg sind <span class=\"green\">SoftwareentwicklerInnen</span></b><br/> von <strong>Data Science</strong>?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Was ist ein Data Scientist?\n",
    "\"A data scientist is someone who<br/>\n",
    "&nbsp;&nbsp;is better at **statistics**<br/>\n",
    "&nbsp;&nbsp;than any <b><span class=\"green\">software engineer</span></b><br/>\n",
    "&nbsp;&nbsp;and better at <b><span class=\"green\">software engineering</span></b><br/>\n",
    "&nbsp;&nbsp;than any **statistician**.\"\n",
    "<br/>\n",
    "<br/>\n",
    "<div align=\"right\"><small>From https://twitter.com/cdixon/status/428914681911070720</small></div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "<b>Nicht so weit weg wie gedacht!</b>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "# Wie <span class=\"blue\">Software Analytics</span> mit <strong>Data Science</strong>  beginnen?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Bewährte Ansätze nutzen\n",
    "<small>Roger Pengs \"Stages of Data Analysis\"</small>  \n",
    "I. Fragestellung  \n",
    "II. Explorative Datenanalyse  \n",
    "III. Formale Modellierung  \n",
    "IV. Interpretation  \n",
    "V. Kommunikation\n",
    "  \n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "<b>=> von der <strong>Frage</strong> über die <span class=\"green\">Daten</span> zur <span class=\"blue\" style=\"background-color: #FFFF00\">Erkenntnis</span>!</b>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### \"Seven principles...\n",
    "<small>...of inductive software engineering\" (Tim Menzies)</small>\n",
    "\n",
    "<div style=\"margin-top:20px\">\n",
    "<ol>\n",
    "    <li>Human before algorithms</li>\n",
    "    <li>Plan for Scale</li>\n",
    "    <li>Get Early Feedback</li>\n",
    "    <li>Be Open Minded</li>\n",
    "    <li>Be Smart with Your Learning</li>\n",
    "    <li>Live with the Data You Have</li>\n",
    "    <li>Develop a Broad Skill Set That Uses a Big Toolkit</li>\n",
    "</ol>\n",
    "</div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Gedanken zur Analyse strukturieren\n",
    "<br/>\n",
    "<img src=\"../../demos/resources/canvas.png\" style=\"width:85%;\" >\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "# Wie nachvollziehbar umsetzen?"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Verwende Literate Statistical Programming\n",
    "\n",
    "`(Intent + Code + Data + Results)`<br />\n",
    "`* Logical Step`<br />\n",
    "`+ Automation`<br />\n",
    "`= Literate Statistical Programming`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "Vehikel: **Computational notebooks**"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "#### Beispiel \"Computational Notebook\"\n",
    "<br/>\n",
    "  \n",
    "\n",
    "<div align=\"center\"><img src=\"../../demos/resources/notebook_approach.jpg\"></div>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Wende Best Practices in Notebooks an\n",
    "<br/>\n",
    "\n",
    "<table align=\"center\">\n",
    "    <tr><td><img src=\"../../demos/resources/sym_cols.png\" style=\"width:30%;\"/></td>\n",
    "        <td style=\"text-align: left;\">Pro Variable eine Spalte</td>\n",
    "    </tr>\n",
    "    <tr><td><img src=\"../../demos/resources/sym_rows.png\" style=\"width:30%;\"/></td>\n",
    "        <td style=\"text-align: left;\">Für jede Beobachtung eine Reihe</td>\n",
    "    </tr>\n",
    "    <tr><td><img src=\"../../demos/resources/sym_table.png\" style=\"width:30%;\"/></td>\n",
    "        <td style=\"text-align: left;\">Für alle zusammengehörigen Variablen eine Tabelle</td>\n",
    "    </tr>\n",
    "    <tr><td><img src=\"../../demos/resources/sym_link.png\" style=\"width:30%;\"/></td>\n",
    "        <td style=\"text-align: left;\">Für jede Tabelle einer Analyse eine verlinkende Spalte</td>\n",
    "    </tr>\n",
    "</table>\n",
    "<br/>\n",
    "<div align=\"right\">\n",
    "    <small>Jeff Leek: The Elements of Data Analytic Style</small>\n",
    "</div>\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Nutze Data Science Standardwerkzeuge\n",
    "\n",
    "#### z. B. einen der populärsten Stacks\n",
    "\n",
    "* Jupyter Notebook\n",
    "* Python 3\n",
    "* pandas\n",
    "* matplotlib"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Jupyter Notebook\n",
    "\n",
    "**Interactive Notebook**\n",
    "* Dokumentenorientierte Analysen\n",
    "* Ausführbare Code-Blöcke\n",
    "* Ergebnisse direkt ersichtlich\n",
    "* Alles an einem Platz\n",
    "* Jeder Analyseschritt sichtbar\n",
    "\n",
    "<b><span class=\"green\">=> Neue Erkenntnisse verständlich herausarbeiten!</span></b>\n",
    "\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Python 3\n",
    "\n",
    "**Eine beliebte Programmiersprache im Data Science**\n",
    "* Einfach\n",
    "* Effektiv\n",
    "* Schnell\n",
    "* Spaß\n",
    "* Automatisierung\n",
    "\n",
    "<b><span class=\"green\">=> Datenanalysen werden wiederholbar</span></b>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### pandas\n",
    "\n",
    "**Pragmatisches Datenanalysewerkzeug**\n",
    "* Tabellenartige Datenstrukturen (\"programmierbares Excel-Arbeitsblatt\")\n",
    "* Sehr schnelle Berechnungen\n",
    "* Flexibel \n",
    "* Ausdrucksstarke API\n",
    "\n",
    "<b><span class=\"green\">=> Guter Integrationspunkt für Datenquellen!</span></b>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### matplotlib\n",
    "\n",
    "**Progammierbare Visualisierungsbibliothek**\n",
    "\n",
    "* Pragmatische Erstellung von Grafiken\n",
    "* Diagramme wie Linien-, Balken-, XY-Diagramme und viele andere\n",
    "* Gut integriert mit pandas\n",
    "\n",
    "<b><span class=\"green\">=> Direkte Visualisierung der Diagramme / Ergebnisse!</span></b>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Das Python-Ökosystem\n",
    "<br/>\n",
    "<div class=\"row\">\n",
    "  <div class=\"column\">\n",
    "    <b>Data Analysis</b>\n",
    "    <ul>\n",
    "      <li>NumPy</li>\n",
    "      <li>scikit-learn</li>\n",
    "      <li>TensorFlow</li>\n",
    "      <li>SciPy</li>\n",
    "      <li>PySpark</li>\n",
    "      <li>py2neo</li>\n",
    "    </ul>\n",
    "  </div>\n",
    "  <div class=\"column\">\n",
    "    <b>Visualisierung und mehr</b>\n",
    "    <ul>\n",
    "      <li>pygal</li>\n",
    "      <li>Bokeh</li>\n",
    "      <li>python-pptx</li>\n",
    "      <li>RISE</li>\n",
    "      <li>Requests, xmldataset, Selenium, Flask...</li>\n",
    "    </ul>\n",
    "  </div>\n",
    "</div> \n",
    "\n",
    "<b><span class=\"green\">=> Bietet in ganz individuellen Situationen die notwendige Flexibilität!</span></b> \n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Andere Technologien\n",
    "**Jupyter Notebook** arbeitet auch mit anderen Technologieplattformen zusammen, z. B. mit\n",
    "* jQAssistant Scanner / Neo4j Graphdatenbank\n",
    "* JVM-Sprachen via beakerx / Tablesaw\n",
    "* bash\n",
    "\n",
    "<b><span class=\"green\">=> Spezielle Technologie? Wird (meist) unterstützt!</span></b>\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Meine Empfehlungen zum Einstieg\n",
    "\n",
    "#### Meine TOP 5's*\n",
    "\n",
    "https://www.feststelltaste.de/category/top5/\n",
    "    \n",
    "Kurse, Videos, Blogs, Bücher und mehr...\n",
    "\n",
    "\n",
    "<small>**einige Seiten befinden sich noch in der Entwicklung*</small>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Meine Buchempfehlungen\n",
    "* Adam Tornhill: Software Design X-Ray \n",
    "* Wes McKinney: Python For Data Analysis\n",
    "* Jeff Leek: The Elements of Data Analytic Style\n",
    "* Tim Menzies, Laurie Williams, Thomas Zimmermann: Perspectives on Data Science for Software Engineering\n",
    "* Mini-Tutorial unter <small><code>https://github.com/feststelltaste/software-analytics-workshop</code></small>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "# Hands-On"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Einige Beispiele aus der Praxis"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    }
   },
   "source": [
    "* Vorhandenen Modularisierungsschnitt analysieren\n",
    "* Performance-Probleme in verteilten Systemen identifizieren\n",
    "* Potenzielle Wissensverluste ermitteln\n",
    "* Eingesetzte Open-Source-Projekte bewerten\n",
    "* ..."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Was sind Ihre Analysen aus der Praxis?\n",
    "<img src=\"../../demos/resources/vorerfahrung.png\" style=\"width:95%;\" align=\"center\"/>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Programmierbeispiel"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Fallbeispiel\n",
    "\n",
    "#### IntelliJ IDEA\n",
    "\n",
    "* IDE für Java-Entwickler\n",
    "* Fast komplett in Java geschrieben\n",
    "* Großes und lang aktives Projekt"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### I. Fragestellung (1/3)\n",
    "\n",
    "* Schreibe die Frage explizit auf\n",
    "* Erkläre die Anayseidee verständlich\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### I. Fragestellung (2/3)\n",
    "\n",
    "<b>Frage</b>\n",
    "* Welche Quellcodedateien sind besonders komplex und änderten sich in letzter Zeit häufig?\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### I. Fragestellung (3/3)\n",
    "#### Umsetzungsideen\n",
    "* Werkzeuge: Jupyter, Python, pandas, matplotlib\n",
    "* Heuristiken:\n",
    " * \"komplex\": viele Quellcodezeilen\n",
    " * \"ändert ... häufig\": hohe Anzahl Commits\n",
    " * \"in letzter Zeit\": letzte 90 Tage\n"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "**Meta-Ziel:** Grundmechaniken kennenlernen."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### II. Explorative Datenanalyse\n",
    "* Finde und lade mögliche Softwaredaten\n",
    "* Bereinige und filtere die Rohdaten"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "*Wir laden einen Datenexport aus einem Git-Repository.*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    },
    "tags": [
     "delete"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>additions</th>\n",
       "      <th>deletions</th>\n",
       "      <th>filename</th>\n",
       "      <th>sha</th>\n",
       "      <th>timestamp</th>\n",
       "      <th>author</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>java/java-impl/src/com/intellij/codeInsight/hi...</td>\n",
       "      <td>be6247932aa9</td>\n",
       "      <td>2019-07-01 14:40:24</td>\n",
       "      <td>Roman.Ivanov</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>java/java-impl/src/com/intellij/codeInsight/hi...</td>\n",
       "      <td>ee2032b77eca</td>\n",
       "      <td>2019-07-01 11:36:14</td>\n",
       "      <td>Roman.Ivanov</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>java/java-impl/src/META-INF/JavaPlugin.xml</td>\n",
       "      <td>fbeb4d639dc1</td>\n",
       "      <td>2019-06-26 11:14:34</td>\n",
       "      <td>Roman.Ivanov</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>java/java-impl/src/com/intellij/codeInsight/hi...</td>\n",
       "      <td>fbeb4d639dc1</td>\n",
       "      <td>2019-06-26 11:14:34</td>\n",
       "      <td>Roman.Ivanov</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>11</td>\n",
       "      <td>6</td>\n",
       "      <td>java/java-impl/src/com/intellij/codeInsight/hi...</td>\n",
       "      <td>a3d5a9b855fe</td>\n",
       "      <td>2019-06-14 10:32:15</td>\n",
       "      <td>Roman.Ivanov</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  additions deletions                                           filename  \\\n",
       "0         4         0  java/java-impl/src/com/intellij/codeInsight/hi...   \n",
       "1         4         6  java/java-impl/src/com/intellij/codeInsight/hi...   \n",
       "2         0         3         java/java-impl/src/META-INF/JavaPlugin.xml   \n",
       "3         6         3  java/java-impl/src/com/intellij/codeInsight/hi...   \n",
       "4        11         6  java/java-impl/src/com/intellij/codeInsight/hi...   \n",
       "\n",
       "            sha            timestamp        author  \n",
       "0  be6247932aa9  2019-07-01 14:40:24  Roman.Ivanov  \n",
       "1  ee2032b77eca  2019-07-01 11:36:14  Roman.Ivanov  \n",
       "2  fbeb4d639dc1  2019-06-26 11:14:34  Roman.Ivanov  \n",
       "3  fbeb4d639dc1  2019-06-26 11:14:34  Roman.Ivanov  \n",
       "4  a3d5a9b855fe  2019-06-14 10:32:15  Roman.Ivanov  "
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log = pd.read_csv(\"../datasets/git_log_intellij.csv.gz\")\n",
    "log.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "*Wir sehen uns Basisinfos über den Datensatz an.*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    },
    "tags": [
     "delete"
    ]
   },
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "<class 'pandas.core.frame.DataFrame'>\n",
      "RangeIndex: 1128819 entries, 0 to 1128818\n",
      "Data columns (total 6 columns):\n",
      "additions    1128819 non-null object\n",
      "deletions    1128819 non-null object\n",
      "filename     1128819 non-null object\n",
      "sha          1128819 non-null object\n",
      "timestamp    1128819 non-null object\n",
      "author       1128819 non-null object\n",
      "dtypes: object(6)\n",
      "memory usage: 51.7+ MB\n"
     ]
    }
   ],
   "source": [
    "log.info()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "<b>1</b> **DataFrame** (~ programmierbares Excel-Arbeitsblatt), <b>6</b> **Series** (= Spalten), <b>1128819</b> **entries** (= Reihen)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "*Wir wandeln die Zeitstempel von Texte in Objekte um.*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    },
    "tags": [
     "delete"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>additions</th>\n",
       "      <th>deletions</th>\n",
       "      <th>filename</th>\n",
       "      <th>sha</th>\n",
       "      <th>timestamp</th>\n",
       "      <th>author</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>java/java-impl/src/com/intellij/codeInsight/hi...</td>\n",
       "      <td>be6247932aa9</td>\n",
       "      <td>2019-07-01 14:40:24</td>\n",
       "      <td>Roman.Ivanov</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>java/java-impl/src/com/intellij/codeInsight/hi...</td>\n",
       "      <td>ee2032b77eca</td>\n",
       "      <td>2019-07-01 11:36:14</td>\n",
       "      <td>Roman.Ivanov</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>java/java-impl/src/META-INF/JavaPlugin.xml</td>\n",
       "      <td>fbeb4d639dc1</td>\n",
       "      <td>2019-06-26 11:14:34</td>\n",
       "      <td>Roman.Ivanov</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>java/java-impl/src/com/intellij/codeInsight/hi...</td>\n",
       "      <td>fbeb4d639dc1</td>\n",
       "      <td>2019-06-26 11:14:34</td>\n",
       "      <td>Roman.Ivanov</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>11</td>\n",
       "      <td>6</td>\n",
       "      <td>java/java-impl/src/com/intellij/codeInsight/hi...</td>\n",
       "      <td>a3d5a9b855fe</td>\n",
       "      <td>2019-06-14 10:32:15</td>\n",
       "      <td>Roman.Ivanov</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  additions deletions                                           filename  \\\n",
       "0         4         0  java/java-impl/src/com/intellij/codeInsight/hi...   \n",
       "1         4         6  java/java-impl/src/com/intellij/codeInsight/hi...   \n",
       "2         0         3         java/java-impl/src/META-INF/JavaPlugin.xml   \n",
       "3         6         3  java/java-impl/src/com/intellij/codeInsight/hi...   \n",
       "4        11         6  java/java-impl/src/com/intellij/codeInsight/hi...   \n",
       "\n",
       "            sha           timestamp        author  \n",
       "0  be6247932aa9 2019-07-01 14:40:24  Roman.Ivanov  \n",
       "1  ee2032b77eca 2019-07-01 11:36:14  Roman.Ivanov  \n",
       "2  fbeb4d639dc1 2019-06-26 11:14:34  Roman.Ivanov  \n",
       "3  fbeb4d639dc1 2019-06-26 11:14:34  Roman.Ivanov  \n",
       "4  a3d5a9b855fe 2019-06-14 10:32:15  Roman.Ivanov  "
      ]
     },
     "execution_count": 5,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "log['timestamp'] = pd.to_datetime(log['timestamp'])\n",
    "log.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "*Wir sehen uns nur die jüngsten Änderungen an.*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "scrolled": true,
    "slideshow": {
     "slide_type": "-"
    },
    "tags": [
     "delete"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>additions</th>\n",
       "      <th>deletions</th>\n",
       "      <th>filename</th>\n",
       "      <th>sha</th>\n",
       "      <th>timestamp</th>\n",
       "      <th>author</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>4</td>\n",
       "      <td>0</td>\n",
       "      <td>java/java-impl/src/com/intellij/codeInsight/hi...</td>\n",
       "      <td>be6247932aa9</td>\n",
       "      <td>2019-07-01 14:40:24</td>\n",
       "      <td>Roman.Ivanov</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>4</td>\n",
       "      <td>6</td>\n",
       "      <td>java/java-impl/src/com/intellij/codeInsight/hi...</td>\n",
       "      <td>ee2032b77eca</td>\n",
       "      <td>2019-07-01 11:36:14</td>\n",
       "      <td>Roman.Ivanov</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>0</td>\n",
       "      <td>3</td>\n",
       "      <td>java/java-impl/src/META-INF/JavaPlugin.xml</td>\n",
       "      <td>fbeb4d639dc1</td>\n",
       "      <td>2019-06-26 11:14:34</td>\n",
       "      <td>Roman.Ivanov</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>java/java-impl/src/com/intellij/codeInsight/hi...</td>\n",
       "      <td>fbeb4d639dc1</td>\n",
       "      <td>2019-06-26 11:14:34</td>\n",
       "      <td>Roman.Ivanov</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>11</td>\n",
       "      <td>6</td>\n",
       "      <td>java/java-impl/src/com/intellij/codeInsight/hi...</td>\n",
       "      <td>a3d5a9b855fe</td>\n",
       "      <td>2019-06-14 10:32:15</td>\n",
       "      <td>Roman.Ivanov</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "  additions deletions                                           filename  \\\n",
       "0         4         0  java/java-impl/src/com/intellij/codeInsight/hi...   \n",
       "1         4         6  java/java-impl/src/com/intellij/codeInsight/hi...   \n",
       "2         0         3         java/java-impl/src/META-INF/JavaPlugin.xml   \n",
       "3         6         3  java/java-impl/src/com/intellij/codeInsight/hi...   \n",
       "4        11         6  java/java-impl/src/com/intellij/codeInsight/hi...   \n",
       "\n",
       "            sha           timestamp        author  \n",
       "0  be6247932aa9 2019-07-01 14:40:24  Roman.Ivanov  \n",
       "1  ee2032b77eca 2019-07-01 11:36:14  Roman.Ivanov  \n",
       "2  fbeb4d639dc1 2019-06-26 11:14:34  Roman.Ivanov  \n",
       "3  fbeb4d639dc1 2019-06-26 11:14:34  Roman.Ivanov  \n",
       "4  a3d5a9b855fe 2019-06-14 10:32:15  Roman.Ivanov  "
      ]
     },
     "execution_count": 6,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# use log['timestamp'].max() instead of pd.Timedelta('today') to avoid outdated data in the future\n",
    "recent = log[log['timestamp'] > log['timestamp'].max() - pd.Timedelta('90 days')]\n",
    "recent.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "*Wir wollen nur Java-Code verwenden.*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    },
    "tags": [
     "delete"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>additions</th>\n",
       "      <th>deletions</th>\n",
       "      <th>filename</th>\n",
       "      <th>sha</th>\n",
       "      <th>timestamp</th>\n",
       "      <th>author</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>27</th>\n",
       "      <td>1</td>\n",
       "      <td>10</td>\n",
       "      <td>platform/smRunner/src/com/intellij/execution/t...</td>\n",
       "      <td>f4ed78c8f574</td>\n",
       "      <td>2019-06-28 18:28:41</td>\n",
       "      <td>Ilya.Kazakevich</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>29</th>\n",
       "      <td>28</td>\n",
       "      <td>0</td>\n",
       "      <td>platform/smRunner/testSrc/com/intellij/executi...</td>\n",
       "      <td>f4ed78c8f574</td>\n",
       "      <td>2019-06-28 18:28:41</td>\n",
       "      <td>Ilya.Kazakevich</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>30</th>\n",
       "      <td>6</td>\n",
       "      <td>3</td>\n",
       "      <td>plugins/InspectionGadgets/InspectionGadgetsAna...</td>\n",
       "      <td>a724467ad1a5</td>\n",
       "      <td>2019-07-01 19:47:38</td>\n",
       "      <td>Roman Shevchenko</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>31</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>plugins/InspectionGadgets/test/com/siyeh/igfix...</td>\n",
       "      <td>a724467ad1a5</td>\n",
       "      <td>2019-07-01 19:47:38</td>\n",
       "      <td>Roman Shevchenko</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>32</th>\n",
       "      <td>2</td>\n",
       "      <td>2</td>\n",
       "      <td>plugins/InspectionGadgets/test/com/siyeh/igfix...</td>\n",
       "      <td>a724467ad1a5</td>\n",
       "      <td>2019-07-01 19:47:38</td>\n",
       "      <td>Roman Shevchenko</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   additions deletions                                           filename  \\\n",
       "27         1        10  platform/smRunner/src/com/intellij/execution/t...   \n",
       "29        28         0  platform/smRunner/testSrc/com/intellij/executi...   \n",
       "30         6         3  plugins/InspectionGadgets/InspectionGadgetsAna...   \n",
       "31         2         2  plugins/InspectionGadgets/test/com/siyeh/igfix...   \n",
       "32         2         2  plugins/InspectionGadgets/test/com/siyeh/igfix...   \n",
       "\n",
       "             sha           timestamp            author  \n",
       "27  f4ed78c8f574 2019-06-28 18:28:41   Ilya.Kazakevich  \n",
       "29  f4ed78c8f574 2019-06-28 18:28:41   Ilya.Kazakevich  \n",
       "30  a724467ad1a5 2019-07-01 19:47:38  Roman Shevchenko  \n",
       "31  a724467ad1a5 2019-07-01 19:47:38  Roman Shevchenko  \n",
       "32  a724467ad1a5 2019-07-01 19:47:38  Roman Shevchenko  "
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "java = recent[recent['filename'].str.endswith(\".java\")].copy()\n",
    "java.head() "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### III. Formale Modellierung\n",
    "\n",
    "* Schaffe neue Sichten\n",
    "* Verschneide weitere Daten"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "*Wir zählen die Anzahl der Änderungen je Datei.*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    },
    "tags": [
     "delete"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sha</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>filename</th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>RegExpSupport/gen/org/intellij/lang/regexp/_RegExLexer.java</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RegExpSupport/src/org/intellij/lang/regexp/RegExpCapability.java</th>\n",
       "      <td>1</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RegExpSupport/src/org/intellij/lang/regexp/RegExpFileType.java</th>\n",
       "      <td>5</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHost.java</th>\n",
       "      <td>16</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHosts.java</th>\n",
       "      <td>15</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                    sha\n",
       "filename                                               \n",
       "RegExpSupport/gen/org/intellij/lang/regexp/_Reg...    1\n",
       "RegExpSupport/src/org/intellij/lang/regexp/RegE...    1\n",
       "RegExpSupport/src/org/intellij/lang/regexp/RegE...    5\n",
       "RegExpSupport/src/org/intellij/lang/regexp/RegE...   16\n",
       "RegExpSupport/src/org/intellij/lang/regexp/RegE...   15"
      ]
     },
     "execution_count": 8,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "changes = java.groupby('filename')[['sha']].count()\n",
    "changes.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "*Wir holen Infos über die Code-Zeilen hinzu...*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    },
    "tags": [
     "delete"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>language</th>\n",
       "      <th>blank</th>\n",
       "      <th>comment</th>\n",
       "      <th>code</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>filename</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>java/java-tests/testData/psi/resolve/ThinletBig.java</th>\n",
       "      <td>Java</td>\n",
       "      <td>299</td>\n",
       "      <td>1140</td>\n",
       "      <td>20125</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>java/java-tests/testData/psi/parser-full/declarationParsing/class/LongClass.java</th>\n",
       "      <td>Java</td>\n",
       "      <td>10121</td>\n",
       "      <td>10164</td>\n",
       "      <td>10166</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>python/gen/com/jetbrains/python/console/protocol/PythonConsoleBackendService.java</th>\n",
       "      <td>Java</td>\n",
       "      <td>1971</td>\n",
       "      <td>591</td>\n",
       "      <td>10086</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>jps/jps-builders/src/org/jetbrains/jps/api/CmdlineRemoteProto.java</th>\n",
       "      <td>Java</td>\n",
       "      <td>502</td>\n",
       "      <td>3066</td>\n",
       "      <td>8605</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>plugins/java-decompiler/engine/testData/obfuscated/aj.java</th>\n",
       "      <td>Java</td>\n",
       "      <td>551</td>\n",
       "      <td>1</td>\n",
       "      <td>8043</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                   language  blank  comment  \\\n",
       "filename                                                                      \n",
       "java/java-tests/testData/psi/resolve/ThinletBig...     Java    299     1140   \n",
       "java/java-tests/testData/psi/parser-full/declar...     Java  10121    10164   \n",
       "python/gen/com/jetbrains/python/console/protoco...     Java   1971      591   \n",
       "jps/jps-builders/src/org/jetbrains/jps/api/Cmdl...     Java    502     3066   \n",
       "plugins/java-decompiler/engine/testData/obfusca...     Java    551        1   \n",
       "\n",
       "                                                     code  \n",
       "filename                                                   \n",
       "java/java-tests/testData/psi/resolve/ThinletBig...  20125  \n",
       "java/java-tests/testData/psi/parser-full/declar...  10166  \n",
       "python/gen/com/jetbrains/python/console/protoco...  10086  \n",
       "jps/jps-builders/src/org/jetbrains/jps/api/Cmdl...   8605  \n",
       "plugins/java-decompiler/engine/testData/obfusca...   8043  "
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "loc = pd.read_csv(\"../datasets/cloc_intellij.csv.gz\", index_col=1)\n",
    "loc.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "*...und verschneiden diese mit den vorhandenen Daten.*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    },
    "tags": [
     "delete"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sha</th>\n",
       "      <th>code</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>filename</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>RegExpSupport/gen/org/intellij/lang/regexp/_RegExLexer.java</th>\n",
       "      <td>1</td>\n",
       "      <td>1190.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RegExpSupport/src/org/intellij/lang/regexp/RegExpCapability.java</th>\n",
       "      <td>1</td>\n",
       "      <td>34.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RegExpSupport/src/org/intellij/lang/regexp/RegExpFileType.java</th>\n",
       "      <td>5</td>\n",
       "      <td>40.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHost.java</th>\n",
       "      <td>16</td>\n",
       "      <td>92.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>RegExpSupport/src/org/intellij/lang/regexp/RegExpLanguageHosts.java</th>\n",
       "      <td>15</td>\n",
       "      <td>168.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                    sha    code\n",
       "filename                                                       \n",
       "RegExpSupport/gen/org/intellij/lang/regexp/_Reg...    1  1190.0\n",
       "RegExpSupport/src/org/intellij/lang/regexp/RegE...    1    34.0\n",
       "RegExpSupport/src/org/intellij/lang/regexp/RegE...    5    40.0\n",
       "RegExpSupport/src/org/intellij/lang/regexp/RegE...   16    92.0\n",
       "RegExpSupport/src/org/intellij/lang/regexp/RegE...   15   168.0"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "hotspots = changes.join(loc[['code']]).dropna(subset=['code'])\n",
    "hotspots.head()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### VI. Interpretation\n",
    "* Erarbeite das Kernergebnis der Analyse heraus\n",
    "* Mache die zentrale Botschaft / neuen Erkenntnisse deutlich"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "*Wir zeigen nur die TOP 10 Hotspots im Code an.*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    },
    "tags": [
     "delete"
    ]
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sha</th>\n",
       "      <th>code</th>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>filename</th>\n",
       "      <th></th>\n",
       "      <th></th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>platform/structuralsearch/source/com/intellij/structuralsearch/plugin/ui/StructuralSearchDialog.java</th>\n",
       "      <td>83</td>\n",
       "      <td>1097.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>platform/platform-impl/src/com/intellij/idea/IdeaApplication.java</th>\n",
       "      <td>71</td>\n",
       "      <td>366.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>platform/core-impl/src/com/intellij/ide/plugins/PluginManagerCore.java</th>\n",
       "      <td>67</td>\n",
       "      <td>1425.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectManagerImpl.java</th>\n",
       "      <td>65</td>\n",
       "      <td>810.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>platform/lang-impl/src/com/intellij/build/BuildTreeConsoleView.java</th>\n",
       "      <td>63</td>\n",
       "      <td>936.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>java/java-analysis-impl/src/com/intellij/codeInspection/dataFlow/TrackingRunner.java</th>\n",
       "      <td>63</td>\n",
       "      <td>1300.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>platform/platform-impl/src/com/intellij/idea/StartupUtil.java</th>\n",
       "      <td>62</td>\n",
       "      <td>551.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>platform/platform-impl/src/com/intellij/ide/plugins/PluginManagerConfigurableNewLayout.java</th>\n",
       "      <td>60</td>\n",
       "      <td>1284.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>platform/platform-impl/src/com/intellij/ide/ui/laf/darcula/ui/DarculaComboBoxUI.java</th>\n",
       "      <td>59</td>\n",
       "      <td>606.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>platform/platform-impl/src/com/intellij/openapi/project/impl/ProjectImpl.java</th>\n",
       "      <td>57</td>\n",
       "      <td>299.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "                                                    sha    code\n",
       "filename                                                       \n",
       "platform/structuralsearch/source/com/intellij/s...   83  1097.0\n",
       "platform/platform-impl/src/com/intellij/idea/Id...   71   366.0\n",
       "platform/core-impl/src/com/intellij/ide/plugins...   67  1425.0\n",
       "platform/platform-impl/src/com/intellij/openapi...   65   810.0\n",
       "platform/lang-impl/src/com/intellij/build/Build...   63   936.0\n",
       "java/java-analysis-impl/src/com/intellij/codeIn...   63  1300.0\n",
       "platform/platform-impl/src/com/intellij/idea/St...   62   551.0\n",
       "platform/platform-impl/src/com/intellij/ide/plu...   60  1284.0\n",
       "platform/platform-impl/src/com/intellij/ide/ui/...   59   606.0\n",
       "platform/platform-impl/src/com/intellij/openapi...   57   299.0"
      ]
     },
     "execution_count": 11,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "top10 = hotspots.sort_values(by=\"sha\", ascending=False).head(10)\n",
    "top10"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### V. Kommunikation\n",
    "* Transformiere die Erkenntnisse in eine verständliche Visualisierung\n",
    "* Kommuniziere die nächsten Schritte nach der Analyse"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "*Wir erzeugen ein XY-Diagramm aus der TOP 10 Liste.*"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "slideshow": {
     "slide_type": "-"
    },
    "tags": [
     "delete"
    ]
   },
   "outputs": [
    {
     "data": {
      "image/png": "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/o+563Zz6OhJSsVGc1P9CtzRrIoCCCJyXlAQQURERETkPFExrgiPdKrNI51q5/dQRETC0p4IIiIiIiIiIhIRBRFEREREREREJCIKIoiIiIiIiIhIRBREEBEREREREZGIKIggIiIiIiIiIhFREEFEREREREREIqIggoiIiIiIiIhEREEEEREREREREYmIgggiIiIiIiIiEhEFEUREREREREQkIgoiiIiIiIiIiEhEFEQQERERERERkYgoiCAiIiIiIiIiEVEQQUREREREREQioiCCiIiIiIiIiEREQQQRERERERERiYiCCCIiIiIiIiISEQURRERERERERCQiCiKIiIiIiIiISEQURBARERERERGRiFxwQQQz621mL5vZZ2b2k5k5M5uaRZ3mZvahmR0ys2Nm9o2Z3WdmUZnU6WJmi83siJn9YmZfmNmALPoZYGZf+sof8dXvkt1zFRERERERETmfXHBBBGA4MARoAOzKqrCZdQOWAi2BmcCrQDTwd+DtDOoMAeYClwNTgfFABWCSmb2QQZ0XgElAeV/5qcAVwFxfeyIiIiIiIiIXtAsxiHA/cBlQAvh/mRU0sxJ4D/SpQGvn3J3OuYfwAhArgN5mdmu6OlWBF4BDQBPn3J+cc/cDVwJbgQfMrFm6Os2BB3z5Vzrn7nfO/Qlo7GvnBV+7IiIiIiIiIhesCy6I4Jxb5Jzb4pxzERTvDZQB3nbOrUrTxnG8GQ0QGogYBMQArzjnktLUOQyM9n29J10d//enfeX8dZLwZj7EAAMjGK+IiIiIiIjIeeuCCyKcpba+4/wweUuBY0BzM4uJsM5H6crkpI6IiIiIiIjIBeW3HkSo5TtuTp/hnDsNbAMKApdGWGcPcBSoZGZFAcwsFqgI/OLLT2+L73hZdk5ARERERERE5HxRML8HkMdK+o5HMsj3p8edZZ1YX7lj2ewjQ2a2OoOs2pHUFxEREREREckrv/WZCFkx3zGS/RVyUic75UVERERERETOK7/1mQj+WQAlM8gvka6c/98X+er8mEmdnyLsI6uZCkGcc43DpftmKDSKpA0RERERERGRvPBbn4nwne8Ysh+BmRUEqgGngR8irFMebynDTufcMQDn3FFgF1DMl59eTd8xZI8FERERERERkQvJbz2IsNB3vCFMXkugKLDcOXciwjqd0pXJSR0RERERERGRC8pvPYgw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snTpUpo2bUrbtm3Zt28fc+fO5frrrw/7C/nZePXVV2nWrBn33Xcfn3zyCfXr1+f7779n5syZ3HTTTcydOzdH7UeiYcOG/POf/+SPf/wjtWvXplOnTtSsWZOUlBS2b9/O0qVLqVGjRmDmhZnx3nvv0a5dO/r27cuLL77IVVddRYkSJdixYwdr165l06ZNrF+/PjCTo2DBgsyaNYvbbruNefPmUbVqVdq3b0+tWrUwM7Zt20ZiYiKHDh0K2vBv+PDhLFiwgGnTprFhwwauv/56fv75Z959911+/PFHRo0aFZghkB0//PAD1113HVdccQUNGjSgYsWKJCcnM3fuXJKTk3n00UcDv/LXqVOH0aNH8/DDD3PllVdyyy23EB8fT2JiIqtWraJ+/foRBZa6du3K8OHDeeqpp6hRowY33HAD1apV46effiIpKYklS5bQuXNnpk+fHlK3bNmy3HTTTbz//vvs37+fVq1aUatWrYjPNzv3DqBZs2YULVqU/fv3U6ZMGa644opAnj+gsH//flq3bk2RIkVC+u3evTvr1q1j7dq1NGjQINMx3n///dx6661cddVV3HzzzcTGxrJixQpWr15Njx49mDlzZth6pUqV4qabbmLGjBls2bKFSy65hNatW4eUu/vuu3n11VcZNGgQ8+bNo0qVKmzatIkPP/yQ3r17884770RyKUVEROQ8oSCCiOTIvHV7sixzZNk0EpdBIt7O7mXKlOGmm25iyJAhdOjQIaT87Nmzeeihh5g9ezYvv/wyNWvW5Pnnn6djx468++67ORpvzZo1WblyJY888giffvopixcv5sorr2TWrFkcOHDgnAQRwFtu0KRJE8aOHcuSJUv48MMPKV68OBUqVKBfv37cdtttQeUvvfRS1q5dy0svvcTMmTOZMmUKzjnKly9PvXr1eOihh6hRo0ZQnfj4eObPn88HH3zAlClTApvkgTcr48Ybb2TAgAFBv3IXLVqUxYsXM2bMGN555x1eeukloqOjadiwIcOGDaNnz545Ou/atWvzt7/9jcWLF/Ppp5/y448/Urp0aerUqcO4cePo3bt3UPm//OUvgby3336b48ePU7VqVR577DEefvhhihcvHlG/Tz75JG3btuXll19m6dKlzJo1i7i4OCpVqsSf/vQn+vXrl2HdwYMH8/777wf+fbayc++io6O59tpr+eSTT2jTpk3Q/hq1a9emQoUK7N69O8f7IQD06dOHAgUK8Nxzz/Hmm28SExPDNddcw7Jly1i2bFmGQQTwZh7MmDGDU6dO0b9//7D7gFSvXp0lS5bw6KOP8umnn3LixAnq1avH5MmTqVevnoIIIiIiFxjL7qvA5Nwys9WNGjVqtHr16vweikiQOo/PJ+VU5jMRAIoUimLjkzecgxGJSEZq167N4cOHM9xcVESkcePGrFmzZo1zrnF+j0VEzk/aE0FEciSrtzCcbTkRyRspKSns3LmTSpUq5fdQRERE5AKmIIKI5EiX+uUjKndT/Qp5PBIRCefEiROMGDGCjh07cvTo0ZAlIyIiIiJnQ0EEEcmR/s2qUjQ6KtMyRaOjuKNZlXM0IhFJKyUlhaeeeordu3fz+OOP8+CDD+b3kEREROQCpo0VRSRHKsYVYUL/Jhm+5rFodBQT+jehYlzoDvIikvfi4uJITc163xIRERGRSCiIICI51rzGRSz4cyv+u+L/mLtuN4eOnqRUbDQ31a/AHc2qKIAgIiIiIvIbkWdBBDOLBS4DijnnPsurfkTk/FAxrgiPdKrNI51q5/dQREREREQkj+T6nghmVsnMZgCHgVXAojR515rZBjNrndv9ioiIiIiIiEjeytUggpmVB74AugHzgBWApSnyBXAx0Cc3+xURERERERGRvJfbMxFG4AUJ2jvnegIL0mY6504BnwEtcrlfEREREREREcljuR1E6AzMcc4tzqTMdkAvjBcRERERERG5wOR2EKEssCWLMqeA2FzuV0RERERERETyWG4HEQ4BlbMocxmwN5f7FREREREREZE8lttBhGVAVzMrFy7TzGoCN5DmjQ0iIiIiIiIicmHI7SDCGKAwsMTMOgFFAcws1vd9LnAGeDGX+xURERERERGRPFYwNxtzzn1hZoOB1/Be8ej3k+94GhjknPs2N/sVERERERERkbyXq0EEAOfcRDP7HPgjcA1QGjgCrARecc59l9t9ioiIiIiIiEjey/UgAoBzbgtwf160LSIiIiIiIiL5I7f3RBARERERERGR36gczUQws0uyW9c5tz0nfYuIiIiIiIjIuZXT5QxJgMtGPZcLfYuIiIiIiIjIOZTTB/kphAYRqgEt8TZT/BrYC5QDGgAlgaXAthz2KyIiIiIiIiLnWI6CCM65hLTfzawWsAL4OzDKOfdTmrwSwCigPzA4J/2KiIiIiIiIyLmX2xsrPgusd849kDaAAOCc+8k5dz/wra+ciIiIiIiIiFxAcjuI0BL4PIsynwOtcrlfEREREREREcljuR1EiMHb/yAz5X3lREREREREROQCkttBhLXArWbWMFymmTUG+gBrcrlfEREREREREcljuf2axVHAfGClmb2J9yaGfUBZvCUMffECF6NyuV8RERERERERyWO5GkRwzn1qZrcCrwMJwIA02QYcBgY75xJzs18RERERERERyXu5PRMB59x0M/sI6AY0AkoCR/CWMMx2zh3N7T5FREREREREJO/l9p4IADjnjjrn3nLOPeicu9t3fEsBBBGRyIwcORIzY/Hixfk9FBHMjNatW0dUdvHixZgZI0eOzNMxiYiISP7IkyCCn5mVMLPKZlYiL/sREcltZhb0iYqK4qKLLqJt27a8+eab+T28PJGQkICZkZSUlGm+mTFixIgM25k8eXKgXKQPnvLrw7eumYiIiJzPcn05g5lFAQ8BdwHV0qRvAyYALzjnTud2vyIiecH/sHzq1Cm+++47Zs2axaJFi1i9ejVjx47Ns36HDBnCrbfeyiWXXJJnfWRXwYIFeeONN/jb3/5GVFRUSP748eMpWLAgp0/rf+p/j5o2bcrGjRu56KKL8nsoIiIikgdyNYhgZtF4b2doBThgB7AHKA9UBZ4GbjCzjs65k7nZt4hIXkg/JTsxMZEOHTowbtw47r33XqpWrZon/V500UXn7UNYly5dmDVrFvPnz+fGG28Mytu4cSPLli2jR48ezJw5M59GKPmpaNGi1K5dO7+HISIiInkkt5cz/BloDXwA1HHOVXXONXPOVQVqAXOB63zlREQuOO3ataN27do45/jqq68ASEpKwsxISEhg8+bN9OnTh4svvpgCBQoE7WmwZcsW+vfvT8WKFYmOjqZChQr079+fLVu2hPST2Z4ImzZtIiEhgcqVKxMTE0PZsmXp27cv3333XdgxHzt2jOeee44mTZpQvHhxihUrRp06dbj33nvZt28f4C3fmDx5MgDVqlULLEcIFyTp168fRYoUYfz48SF5/rS77ror7FiOHDnCmDFjaNu2LZUqVSI6OpoyZcrQtWtXVq5cGbaOf4r/wYMHGTx4MOXLlycmJoZ69eoxceLEkPInT57klVdeoXPnzlSpUoWYmBhKlSpF+/bt+eijj8L2AfDxxx/TokULYmNjKVWqFN27dw9c64yWeXzxxRf07t2bcuXKER0dTeXKlfnDH/7A7t27Q8q2bt0aM+PkyZM88cQT1KpVi5iYGBISEjIcE8CkSZMwMyZNmsSCBQu47rrrKFasGGXKlGHgwIEkJycDsHbtWrp06UJ8fDzFihWja9euYcfsH8eJEycYPnw41apVIyYmhurVqzNq1ChOnsxZjD+jPRFWr17NsGHDqF+/PqVKlaJw4cLUrFmTBx54gMOHDweVfeaZZzAz/vGPf4TtY/fu3URFRXHVVVcFpT3xxBO0aNEicD8qVKhA37592bhxY47OSURERH6V28sZ+gL/A7o7586kzXDObTWznsDXQD/g2VzuW0TknHDOAd7DbVpbt27l6quv5rLLLqNfv36kpKRQooS3JcxXX31F+/bt+fnnn+natSt169Zl06ZNvPnmm8yePZvExESaNGmSZd/z58+nZ8+enDp1iptuuokaNWqwc+dO3n//fT744AMWLVpEo0aNAuUPHz5MmzZtWLduHbVq1WLQoEFER0ezdetW3njjDXr27EnZsmUZMWIEs2bNYt26dQwbNoy4uDiAwDGtuLg4br75Zt566y327NlD+fLlAThx4gRTpkyhVatWXHbZZWHHv3HjRh577DFatmzJjTfeSHx8PNu3b2fOnDl89NFHzJ07lxtuuCGkXnJyMi1atCA6OprevXtz/Phxpk+fzqBBgyhQoAADBvz6RuFDhw4xbNgwmjdvTocOHShTpgx79uxh7ty5dO7cmfHjx4cEOd555x369u1LTEwMt9xyC+XLl2f58uU0a9aM+vXrhz2XiRMncvfddxMTE0PXrl2pXLkyW7ZsYcKECcydO5eVK1eGXY7Sq1cvvvrqKzp16kT37t25+OKLw7af3pw5c5g3bx5dunThnnvuYfny5UyaNIlt27bx7LPP0q5dO6677jruvPNO1q9fz9y5c9m6dSvr16+nQIHQ3wxuueUWvvrqK3r37k2hQoWYPXs2I0eOZNWqVcyZMyfk7zunxo8fz8yZM2nVqhXt27cnNTWVNWvWMHbsWD766CO++OILihcvDkD//v0ZPnw4kydP5t577w1pa+rUqZw5cybovi9dupRnn32WNm3a0KtXL4oVK8aWLVuYPn06c+bMYdmyZRneSxERETkLzrlc+wDHgOeyKPMccCw3+/09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QaACUMFae0mLarUngsjVcyAllXfX/8CSHQc5fiaNsKIBdIisSL9Gla9pAEFERKSwaU8EEcnPFV3OYK3dbIx5Evg3Wcchvp6rSAbwxDUOIDQH/g4ssNY+kyMr0RjTmawlCM8aY6ZYa78n/1kDju25c846OEnWPg8hZC2VyKvOqYLfgYhcbZVCgxjdLuKyjnEUEREREbkVXOnlDFhrpwKRwFvAVrKOONxKVmAh0lo77Ur3mY9Hsl/dDojO3p9gE1nvQ+3s5G+yX6vlLm+M8QPuBC4A3+fIulidCkBR4Kf89kMQERERERERuZ5d6Y0VAbDW7gaevhptXwLHKQp5Lc50pDsOgv8S6AO0Bd7PVfYBIJisIx7P50j/EmiSXWd9rjrtcpQRERERERERuWFd8ZkI1yHHJo5DjDGVcmYYY9qR9fB/jqy9HADmkXXKRE9jTN0cZQOBCdk/vp2rjxnAeWCYMSY8R52SwJ+zf5xyuTciIiIiIiIiUpiuykyE68w84HOgNbDbGLOArI0V7yFrqYMBRltrjwFYa08ZYx7PrrfSGDMHOE7WcZDVs9Pn5uzAWptkjHmOrI0btxhj5pI1s6EbcBvwqrU29wwFERERERERkRvKTR9EsNZmGmMeBp4CegKdyVqScBxYCkyy1n6aq85CY0wz4C9AVyAQ2Ac8k13e7UgLa+2/jDHJwCggmqxZHl8Df7XWxl6l2xMRERERERG5Zm76IAKAtTYdeCP78rbOWuDhAvazBFhSsNGJiIiIiIiI3BhuhT0RREREREREROQKUBBBRERERERERLyiIIKIiIiIiIiIeEVBBBERERERERHxioIIIiIiIiIiIuIVBRFERERERERExCsKIoiIiIiIiIiIVxREEBERERERERGvKIggIiIiIiIiIl5REEFEREREREREvKIggoiIiIiIiIh4RUEEEREREREREfGKgggiIiIiIiIi4hUFEURERERERETEKwoiiIiIiIiIiIhXFEQQEREREREREa8oiCAiIiIiIiIiXlEQQURERERERES8oiCCiIiIiIiIiHhFQQQRERERERER8YqCCCIiIiIiIiLiFQURRERERERERMQrCiKIiIiIiIiIiFcURBARERERERERryiIICIiIiIiIiJeURBBRERERERERLyiIIKIiIiIiIiIeEVBBBERERERERHxioIIIiIiIiIiIuIVBRFERERERERExCsKIoiIiIiIiIiIVxREEBERERERERGvKIggIiIiIiIiIl5REEFEREREREREvKIggoiIiIiIiIh4RUEEEREREREREfGKgggiIiIiIiIi4hUFEURERERERETEKwoiiIiIiIiIiIhXFEQQEREREREREa8oiCAiIiIiIiIiXlEQQURERERERES8oiCCiIiIiIiIiHhFQQQRERERERER8YqCCCI3mZUrV2KMYdy4cYU9lEIxbtw4jDGsXLmysIdyU2vevDnGmMIehoiIiIhcYwoiyC3BGONyFSlShDJlyhAVFcXgwYNZtmwZGRkZhT3M69Znn31Gnz59uPPOOwkODiYoKIiqVavSr18/li1bVtjDu+Zmzpzp9pkyxlC8eHGioqJ46aWXOHv27DUfl+PB/mIBlAEDBmCMYebMmS7p4eHhGGNITk6+qmMUERERkRubX2EPQORaiomJASAjI4OUlBR27drFu+++y/Tp06lbty6zZ8+mWrVqhTzK68evv/5KdHQ0CxcuJDAwkJYtW9KlSxf8/f1JSkpi6dKlxMXF8eyzz/LKK68U9nCvucjISB599FEAMjMz+fnnn1myZAl/+ctfWL58OfHx8fj6+hbyKK+OWbNmFUqgREREREQKl4IIckvxNMX/8OHDPP3003z44Ye0bt2aLVu2ULZs2Ws/uOtMZmYmjz32GCtWrKBFixbExcVRsWJFlzLnz59nypQpfPvtt4U0ysJ13333uX2mUlJSqFWrFmvWrGHNmjU0b968UMZ2td1xxx2FPQQRERERKQRaziC3vHLlyjFnzhyaN2/Ojz/+yEsvveSSv3XrVkaMGEFkZCRhYWEEBgZy99138+yzz3LixAm39hxT3WfOnMny5ctp3rw5ISEhbuvH9+zZw6BBgwgPD6dIkSKULVuW+++/n7fffttZJjk5GWMMAwYM8Dj2gqxLL+h9vP/++6xYsYKqVauyZMkStwACQJEiRRgxYgSvvfaaS/r58+eZOHEitWrVIjg4mBIlSnD//ffzwQcfuLWR8x6/++47unXrRqlSpShevDgPPfQQX331FQBHjhxhyJAhVKhQgcDAQOrVq0d8fPxF7zk2NpbatWsTFBRE2bJlGTRoED///LPHsnv37iU6OppKlSoREBBAxYoViY6OZu/evRftI7fQ0FDq1avnHPOl9pOUlERoaChhYWH88MMPLnlnzpzhnnvuwdfXl1WrVhVofFeKp89eWloakydP5uGHH6Zy5coUKVKEsLAwWrdu7bbs5dy5c4SGhlK2bFkuXLjgsY+hQ4dijOGTTz5xpi1cuJC+fftSrVo1ihYtSrFixahTpw6TJk0iMzPzyt+oiIiIiLhQEEEE8PHx4a9//SuQ9fBsrXXmTZ06lTlz5lC9enUGDhzI0KFDqVChAq+99hpNmjTh119/9djmvHnzeOSRRyhevDhDhw6le/fuzrxPPvmEqKgoYmNjqVmzJs888wxdu3YlIyODf/zjH1flHgt6H//5z38AGDVqFEWLFr1o20WKFHH+OS0tjTZt2jBmzBjS09N56qmn6NevH99++y09evTgz3/+s8c2kpOTadCgAYcPH2bAgAE89NBDfP755zRv3py9e/fSsGFDNm/eTI8ePejevTs7duygXbt27N+/32N7r7/+OkOHDiUyMpKRI0dSvXp1ZsyYQePGjd0e7jdv3kzdunWJi4ujXr16jBo1ioYNGzJ79mzq1q3Lli1b8n1/HU6ePMnmzZvx8fGhdu3al9zPnXfeybRp0zhx4gS9evVyedB+8skn2bNnD88//zzNmjXzemxX2/HjxxkxYgS//vorDz74IM888wwdO3Zk27ZtPPzww0ybNs1ZNjAwkB49enDkyBGP+2qcP3+eDz74gHLlytGmTRtn+ujRo0lMTKRBgwY8/fTT9OvXj9OnTzNixAj69+9/Te5TRERE5JZmrdV1A1zA1qioKCuXBrBZH/e8nTt3zvr5+VnAfv/998705ORke+HCBbfy06ZNs4CdOHGiS/qMGTMsYI0xdtmyZW71jhw5YkuUKGH9/f3typUr3fJ//PFH55+TkpIsYPv37+9xzM2aNXO7r/j4eAvYmJgYl/SC3Ed6eroNCAiwgN27d6/HvvPy0ksvWcC2a9fOpqenO9MPHz5sK1eubAG7du1at3sE7IQJE1zaeuGFFyxgS5Ysaf/whz/YjIwMZ96sWbMsYEeOHOlSJyYmxgLW39/fJiYmuuSNHDnSAnbQoEHOtMzMTBsREWEBGxcX51J+zpw5FrDVq1d36dvxO46MjLQxMTE2JibGjh071g4ZMsRWrFjRFi1a1E6ePNmlrUvpx1prn3jiCQvY0aNHW2utjY2NtYBt3ry5W1nH5yE+Pt7mpX///hawM2bMcEl3/G6SkpLyrOupr5zOnTvn8vl1SElJsTVr1rQlS5a0Z8+edaavW7fOArZr165udT744AML2GeeecYlfd++fW5lMzIybHR0tAXshg0bvBq/iIh4FhUVZYGt9jr4968uXbquz6vQB6DLy1+UggiXxZsggrXWlitXzgJ248aN+ZbNzMy0JUqUsC1atHBJdzxgPvroox7rvfLKKxaww4cPz7ePKxlEKMh9HD582PmepaametWOQ9WqVa0xxu7evdstzxGwGDhwoDPNcY/h4eFuQY4ffvjBAjY4ONieOnXKJe/ChQvWz8/PNm/e3CXdEUTIGShwSElJsSEhITYwMNCeO3fOWmttQkKCBWyjRo083k/Tpk0tYFetWuVMc/yO87p69eplv/76a5d2LqUfa61NTU21kZGR1hhj//Wvf9miRYvaMmXK2AMHDri1UdhBhIt59dVXPd5ftWrVbEBAgD127JhLevv27S1gd+zY4VX7W7dutYAdP36812MSERF3CiLo0qUrv0vLGURysDZrGUPOtd7p6elMnjyZpk2bEhYWhq+vL8YYfHx8OHXqFAcOHPDYVv369T2mb9iwAYB27dpd4dFfXEHuw/E+FNSvv/7Kvn37qFixIhEREW75LVu2BGDbtm1ueffdd5/bSQaOfRiqVatG8eLFXfJ8fX0pV64cP/30k8exeJrmHxISwn333ce5c+fYvXs3AImJiS5jK8iY+/fv7/If1J9//pm4uDg+/fRTGjRo4Gz7cvoJDAxk7ty5FC1alKeffpqzZ88ya9Ysj3tUXA927drFgAEDqFKlCkFBQc7jL5999lkAt78v/fv3Jy0tjTlz5jjTDh8+zIoVK6hduza1atVyKX/s2DFGjx5NrVq1KFasmLP9OnXqeGxfRERERK4snc4gku3cuXMcP34cgDJlyjjTe/TowYIFC6hSpQqdOnWifPnyzj0A3njjDc6fP++xvfLly3tMT0lJAaBSpUpXcvj5Ksh9lCpVioCAANLS0jhw4AB33XWXV32cPHkSgAoVKnjMd6Q73oOcQkJC3NL8/PzyzHPkp6ene8wrV66cx3TH78Ux1ssZs6c++/TpQ2pqKo8//jhjxoxhxYoVl91PtWrVqFWrFuvWraNGjRo89NBDHtvw8cmKC19sg0FHnqPslbRhwwZatmzJhQsXaNWqFR07dqREiRL4+Piwfft2Fi1a5Pb3JTo6mrFjxxIbG8uTTz4JwOzZs7lw4YLbHgcpKSnUq1ePpKQk6tevT3R0NGFhYfj5+ZGSksKbb76Z599HEREREbkyFESQm86BlFRmrU/m4x2HOH4mjbCiAV7VS0hI4MKFC5QrV47w8HAAtmzZwoIFC2jdujVLly7F39/fWT4zM/OimyDmdWpCaGho1jgPHODee++96JgcD3p57V7vzYMtFPw+/Pz8aNiwIatXr+aLL77wOojgeNjP6wSEQ4cOuZS7mg4fPuwx3TE2xxiuxpgbNGgAwKZNm5xpl9PPxIkTWbduHaVLl2bXrl28/PLL/OUvf3Er56h77NixPMd29OhR4LfP4ZU0YcIEUlNTiY+Pdzva8uWXX2bRokVudW677TZatmzJ559/zp49e4iIiCA2NhZ/f3969+7tUnbatGkkJSURExPjdrTm+vXrefPNN6/0LYmIiIhILrfUcgZjzP3GmI+MMYeMMeezXz81xjzsoWxjY8xSY8xxY8xZY8xOY8xIY4yvp7az6zxijFlpjDlpjDltjNlojNF24dfQun1HefC1Vbyz6nsOpKSSmp7BgZRUl3xPMjMz+dvf/gbg8uCyb98+ADp27Ojy4A1ZD4ipqakUVMOGDQE87kifW8mSJQH48ccf3fJOnTrFt99+61Wfl3IfQ4YMAeCVV17h7NmzF23f8e1v8eLFueuuuzhw4IDHoxEdRzJGRUV5Ne7L4enow5MnT7J9+3YCAwO55557AJwnKKxcudJjO470gozZcWRmzhkBl9rPunXreP7556levTpfffUV1atXJyYmhoSEBLc2IiMjgawHak8uXLjgPAHCUfZK2rdvH2FhYW4BBPD8+3BwHGEaGxvL9u3b2blzJ+3atXOZEeRoH6Br164Fal9ERERErpxbJohgjPkrsBp4AFgOvAosAUoCzXOV7ZSj7ALg30AA8DowBw+MMcOy2/sdEAdMBSoCM40xr1zxGxI3B1JSGTxrC2fTMvIsM3jWFpegAsAvv/xCz549WblyJXfccYfLEYSOGQm5H/x++eUXnnrqqUsaZ//+/SlRogRvv/02q1evdsvPuca/ePHiREREsHbtWr7++mtnekZGBs8884zXQYxLuY9evXrRpk0b9u7dS6dOnZzflOeUlpbGv//9b+d6d4BBgwZhreW5554jI+O338XRo0d58cUXnWWutnfffddtf4Fx48Zx8uRJevXq5VzK0aRJE6pXr05CQgLz5s1zKT9v3jxWr15NtWrVaNq0qVf9ZmRkOL8Rz/kwfSn9OI539PX1Zc6cOZQrV465c+fi5+dHr1693GYc9O3bF19fX6ZOncr//vc/t7FNmDCBI0eO0Lx5cypXruzV/ezfv589e/bkG0iCrM/Z8ePH2blzp0v69OnTncs6POnSpQslSpQgLi6OmTNnAr8FFnK3D+6f423btvHyyy/nOz4RERERuXy3xHIGY8xjwIvA50AXa+2vufL9c/y5BFkBgAygubV2S3b6WOBLoJsxpqe1dk6OOuHAK8BxoK61Njk7/QVgM/CsMeYja63nrwflipi1PvmiAQSAg1/Oov93H9P4rjBSUlLYtWsXCQkJpKWlUb9+fWbPnk3p0qWd5evVq0eTJk2YP38+jRs3pmnTphw+fJhly5ZRvXr1S9rcrnTp0rz33nt069aNFi1a0K5dO2rVqsWpU6fYuXMnP/74I0lJSc7yzz33HL///e9p0qQJjz32GIGBgcTHx5Oenk5kZCQ7duzIt89LuQ8fHx8+/PBD+vXrx6JFi6hSpQqtWrXinnvuwdfXlx9++IEvvviCI0eOMGrUKGe9UaNGsWzZMhYtWkRkZCQPP/wwZ8+e5cMPP+SXX37h//7v/7x+IL8c7dq1o0mTJnTv3p0KFSqQkJBAQkIC4eHhTJw40VnOGENsbCwPPvggPXr0oFOnTkRERPDNN9+wcOFCihcvzqxZszzuIbB9+3aXafW//PILX375Jd988w2lS5d2WSZyKf0MGjSI/fv3M2nSJO677z4gawbBq6++yrBhwxg4cCCLFy92lq9atSpvvvkmw4cPp169ek5BxJgAACAASURBVHTo0IFq1apx7tw5Vq1axdatW6lYsSLTpk3z+n2Mjo5m1apVHpco5DZy5EhWrFhB06ZN6d69OyEhIWzZsoWEhAS6devmFjxxCAoK4rHHHmP69Om89dZblCpVivbt23scyz//+U9GjhxJfHw8d999N3v37uXjjz+mS5cuzJ071+v7EhEREZFLVNjHQ1zti6zZFt8DZ4AyXpQfRNYxbbEe8lpm563Klf5Cdvr4grRXwPvQEY/5aPzyF7bynz72eJHrCL6AgABbqlQpGxUVZQcPHmyXLVtmMzIyPLZ77Ngx+8QTT9jKlSvbIkWK2CpVqtgxY8bYM2fO2MqVK9vKlSu7lHcc/5f7CL3cvvrqK9uvXz9bsWJF6+/vb8uWLWsfeOAB+84777iVnTZtmq1Ro4YNCAiw5cqVs0OGDLFHjx4t0BGPBb2PnFasWGF79eplw8PDbWBgoC1SpIi98847ba9eveyyZcvcyqemptq//e1vtmbNmjYwMNAWK1bMNmnSxL733ntuZfM7xhKwzZo185jnadyOIx7j4+PtjBkzbGRkpA0MDLSlS5e2AwYMsAcPHvTY1p49e2zfvn1t+fLlrZ+fny1fvrzt06eP3bNnj1vZvI54DAwMtBEREXbEiBEej2AsSD+TJk2ygO3YsaPHdjp37mwB+9prr7nlJSQk2O7du9tKlSpZf39/W7RoUXvvvffa0aNH2yNHjnhsL68jHvM6NjKvIx6XLFliGzRoYIsVK2ZDQkLsgw8+aFetWpXv34s1a9Y438dhw4Z5LGOttbt27bIdOnSwZcqUscHBwTYqKspOnTo138+RiIh4R0c86tKlK7/LWHtpR7ndKIwxTYE1wDygF9CGrCUH54BNNtfsAGNMHNAH6G2tfT9Xnh9wkqylDcWsteez0xOAJkBjD+1VAA4CP1lrb7+M+9gaFRUVtXXr1ktt4qZ3z9jlpKZffCYCQJC/L7tfbHsNRiRy82rYsCHbtm3TaQgiIjeZOnXqkJiYmGitrVPYYxGR69OtsJyhXvbrYSARcNkO3xizGuhmrT2SnVQ9+9Vtxzpr7QVjTBJQE6gC7PaiziFjzBngNmNMsLX2oguLjTF5RQkiLlZPIKxogNt+B3mVE5FLl5GRwffff89tt91W2EMRERERkWvsVthYsWz261AgCGgNFCdrNsIKsjZP/DBHecf5aifzaM+RnvN8NG/rXP1z7W5hj0RW8Kpch8iC72MgIlnGjRtHmzZtOHLkCN26dSvs4YiIiIjINXYrzERwHMloyJpx4NiFbpcxpjNZsweaGWMa5V6KkAeT/VqQdSBe18lr6lj2DIWrfy7eDSy6UTjvrv/hopsrBgf40q+Rd7vSi4i7F154gTvuuINRo0Yxfvz4wh6OiIiIiFxjt0IQ4UT26/c5AggAWGtTjTErgN8D9YH15D9roET2a85ZByeB0tl1jrnV+K3OqYINXQqiUmgQ06Lr5nnMY3CAL9Oi61IpNKgQRidyc8jMzCzsIYiIiIhIIboVljN8k/2akke+I8jgeLJ0lK+Wu2D2xop3AhfIOvEhdx+e6lQAipK1sWL+B63LZWlctTSfPdOMoc3uolJoEEH+vlQKDWJos7v47JlmNK5aOv9GRK6h8PBwwsPDXdJmzpyJMYaZM2d61caAAQMwxpCcnHzFxyciIiIiktOtEERYTdZD/93GGE876v0u+zU5+/XL7FdP2/c/AAQD6xwnM3hRp12uMnKVVQoNYnS7CNaObsnuF9uydnRLRreL0AyEPGRkZDB16lSaNWtGWFgY/v7+lC1bllq1ajF48GAWL17sLFvQh9sroXnz5hhj8i94FY0bNw5jDOPGjcuzjOO9GTBggEv69TB+EREREZEr5aYPIlhrjwJzyVpq8HzOPGPMg2Qd+XgSWJ6dPA84CvQ0xtTNUTYQmJD949u5upkBnAeGGWPCc9QpCfw5+8cpl383IldWRkYGjzzyCEOGDGHnzp08/PDDPPvsszz66KOUKVOG9957j3/84x+FPcyb2hdffMEXX3xxWW28/PLL7N69m0qVKl2hUYmIiIiIeHYr7IkA8AzQAPiLMeYBYBNQGegMZACPW2tTAKy1p4wxj5MVTFhpjJkDHAc6knWU4zyyghJO1tokY8xzwCRgizFmLpAGdANuA171ctNGkWvq/fffZ/ny5URGRrJq1SpCQly3Ajl79iwbN24spNHdGu66667LbqNChQpUqODd6SQiIiIiIpfjpp+JAGCt/YWsIMLrwO3AcKAl8Alwv7X2w1zlFwLNyFoK0RV4GkgnKxjR01rrdsqCtfZfZAUadgHRwBDgZ2CAtXbU1bkzkcuzbt06IGtNfe4AAkBwcDAtWrQAsqblDxw4EICBAwdijHFejrX4Bw8e5IUXXqBJkyaUL1+egIAAKlasSO/evdm9e7db+8nJyc4lAN9++y09evSgbNmy+Pj4OJcHrFq1CsClv+bNmzvbyP1zTp72CsjZ5549e3j00UcJCwujaNGiNG3alE8//bSgb6NHjn7yG7+nPREKKq89EWbOnEnXrl2pUqUKQUFBlChRgiZNmhAXF+fWRkREBAEBARw9etRjHxMnTsQYw7///W9nWnx8PEOGDKFGjRqUKFGCoKAgfve73zF+/HjOnTt3WfckIiIiItenW2UmAtba42QFAZ7xsvxa4OEC9rEEWFLw0YkUjlKlSgHw7bff5lt2wIABhIaGsmjRIjp16sR9993nzAsNDQVg9erVTJw4kRYtWtC1a1eKFSvG3r17mTdvHosXL2bt2rVERka6tf3dd9/RoEEDqlWrRp8+fUhNTaVWrVrExMQwc+ZMfvjhB2JiYpzlL/ehGyApKYlGjRrxu9/9jj/84Q8cOnSIuXPn0q5dO9577z169OhxWe2HhoZe1fF744knnqBGjRo88MADVKhQgWPHjrF06VL69evHN998w4svvugs279/f/785z/z/vvv8/TTT7u1NWvWLAICAujZs6cz7e9//zt79uyhcePGtG/fnnPnzrF27VrGjRvHypUr+fzzz/H19XVrS0RERERuYNZaXTfABWyNioqyIldSYmKi9ff3t8YY27dvX/vRRx/Z5OTkPMvPmDHDAnbGjBke8w8fPmxPnTrllr59+3ZbtGhR27ZtW5f0pKQkC1jAjhkzxmObzZo1s1n/qfIMsM2aNfOY179/fwvYpKQkj32OGjXKpfzmzZutn5+fDQ0NtSdPnnSmx8TEWMDGxMTkOQ7He9O/f/8Cjb9y5cq2cuXKHtvK633OzdN9Wmvtvn373MqeP3/etmzZ0vr5+dmffvrJmf7TTz9ZHx8fW6dOHbc6mzZtsoDt0qWLS/p3331nMzMz3cr/9a9/tYCdM2eOV+MXEZHrR1RUlAW22uvg37+6dOm6Pq9bYjmDiHhWu3Zt4uLiKFeuHHFxcXTt2pXw8HBKlSpF586dWbKkYBNrypYtS/Hixd3SIyMjadmyJfHx8aSnp7vllytXzuWb+mshJCSE55932WuVunXr0qdPH1JSUliwYME1Hc/V4Gm/hYCAAJ566ikuXLjgsqFjpUqVaNWqFVu3bmXXrl0udWJjY4Gs2Qo5ValSxePJEyNHjgRgxYoVl30PIiIiInJ9URBB5BbXvXt39u/fz4oVKxg7diyPPPIImZmZLFy4kI4dO9K/f3+sddsGJE+ffPIJHTp0oEKFCvj7+zv3AViyZAnnz5/3uOY+MjKSIkWKXMnbyldUVJTHgIdjv4Jt27Zd0/FcDfv37+epp54iIiKC4OBg5++ia9euABw4cMClvON4SkfQACAtLY05c+ZQpkwZHn7YdYXXmTNneOmll6hXrx4hISH4+PhgjKF06dIe2xcRERGRG98tsyeCyK3uQEoqs9Yn8/GOQxw/k0ZY0QAeiaxAdKNwKoUG8dBDD/HQQw8BWUc/fvTRRwwaNIhZs2bRuXNnHn300Xz7mDRpEiNGjKBkyZI8+OCD3HHHHc6H14ULF7Jjxw7Onz/vVq98+fJX+nbzVa5cOY/pjrGcPHnSmebjkxVvzczMzLM9R56jbGH7/vvvqV+/PidOnOD+++/noYceIiQkBF9fX5KTk4mNjXX7XXTu3JkSJUoQFxfHyy+/jK+vLx9//DHHjh1j5MiR+Pn99r+M9PR0WrZsyaZNm/jd735Hjx49KFOmDP7+/gCMHz/e4+9aRERERG5sCiKI3ALW7TvK4FlbOJuW4Uw7kJLKO6u+5931PzAtui6Nq5Z25vn6+tK9e3f+97//MWHCBL788st8gwgXLlwgJiaG8uXLk5iY6Hbk4Pr1eZ9y6mlKvLeMMVy4cMFjXkpKSp71Dh8+7DH9559/BnA5rcLx52PHjuXZnmOGhWOTycL22muvcezYMWbMmOGcYeDw/vvvu8w2cAgKCqJ79+5MmzaNzz77jLZt2+a5lGHRokVs2rSJ/v37M3PmTJe8Q4cOMX78+Ct6PyIiIiJyfbg+vjITkavmQEqqWwAhp7NpGQyetYUDKalueY7p/o7lDI6d9jMy3Ns6evQoKSkpNG7c2C2AcPr0aRITEy9p/BfrE6BkyZL8+OOPbukZGRls3749z3YTExP59ddf3dJXrlwJZO0X4eA4UeJigRBHXu7TJ/Ib/9Wyb98+AOfShZwcx056knNJw9GjR1m2bBm1atVyOY3jctoXERERkRubgggiN7lZ65PzDCCc+XoVqUnbOHM+nXfX/+CS9/PPPzN16lQAHnjgAeC3IyH379/v1lbZsmUJDg5m69atnD592pmenp7OiBEjPO6F4I2L9QlQv3599u/fz6effuqSPmHCBH744QePdSBrucILL7zgkrZlyxZmz55NSEgInTt3dqbff//93HXXXWzbts3tW3eAzz//nCVLlhASEuI2YyO/8RfEoUOH2LNnj8tSi7w4jpF0BEUcVqxYwbRp0/Ks16RJE+6++24WLVrE22+/TXp6uttMhou1//333/OnP/0p3/GJiIiIyI1JyxlEbnIf7ziUZ975g9/w69bF+BYtyStL7+V4fAMAkpKS+OSTT0hNTaVTp05069YNgEaNGhEcHMwbb7zB8ePHnfsKPP3004SEhDB8+HAmTpzIvffeS6dOnUhLSyM+Pp7jx4/TokUL4uPjCzz+Vq1a8eGHH9KlSxcefvhhgoKCqFy5Mv369QNg1KhRrFixgk6dOtGjRw/CwsJYt24dSUlJNG/e3O0h1+GBBx5g2rRpbNy4kSZNmnDo0CHmzp1LZmYm77zzDiVKlHCW9fX1JS4ujrZt2zJw4EBmzpxJ/fr18fX1ZefOnSxfvhx/f39iY2NdlkF4M/6CGDNmDLGxsR6XKOT25JNPMmPGDB577DG6du1KpUqV+Oqrr1i+fDndu3dn7ty5edaNjo5m7NixvPjii/j5+dG7d2+3Mh06dKBq1aq89tpr/O9//6N27drs37+fjz/+mPbt21+RoImIiIiIXH80E0HkJnf8TFqeeSXqdybswaEEVKzOrwe/Y8qUKbzxxhskJCTQvHlz3n33XebPn+/cs6BkyZJ89NFH1KhRgxkzZjB27FjGjh3LiRMnAHjxxRd59dVXCQoK4p133mH+/PnUrVuXTZs2cccdd1zS+AcPHsyYMWM4efIk//jHPxg7dizTp0935rdq1YqFCxdSs2ZN5syZQ2xsLOHh4WzatInKlSvn2e6dd97JunXrKFmyJFOmTOGDDz4gKiqKpUuX0qNHD7fyDRs2ZPv27QwbNoxDhw4xefJkXn/9dXbv3k3//v3ZsmULnTp1KvD4r5ZatWoRHx9P48aNWbp0KW+//TanTp1i/vz5DB069KJ1o6Oj8fHxIT09nbZt23rchLJo0aJ8+eWX9O7dm127djFp0iR27tzJ2LFjiYuLu1q3JSIiIiKFzBTk6DYpPMaYrVFRUVFbt24t7KHIDabJxC897neQW6XQINaObnkNRlS4kpOTufPOOz1uCHij6tmzJ3PnzuXgwYNu+1GIiIgURJ06dUhMTEy01tYp7LGIyPVJMxFEbnKPRHr3UNkhsuJVHolcLd9++y1FihShTJkyhT0UEREREbnJKYggcpOLbhROcIDvRcsEB/jSr1HeU//l+vTmm2/StWtXtm3bRqdOnfDz0zY3IiIiInJ1KYggcpOrFBrEtOi6eQYSggN8mRZdl0qhQdd4ZHK53njjDTZs2MCgQYN45513Cns4IiIiInIL0NdWIreAxlVL89kzzXh3/Q8s2XGQ42fSCCsaQIfIivRrVPmWCiCEh4dzs+wFk5SUVNhDEBEREZFbjIIIIreISqFBjG4Xweh2EYU9FBERERERuUFpOYOIiIiIiIiIeEVBBBERERERERHxioIIIiIiIiIiIuIVBRFERERERERExCsKIoiIiIiIiIiIVxREEBERERERERGvKIggIiIiIiIiIl5REEFEREREREREvKIggoiIiIiIiIh4RUEEEREREREREfGKgggiIiIiIiIi4hUFEURERERERETEKwoiiIiIiIiIiIhXFEQQEREREREREa8oiCAiIiIiIiIiXlEQQURERERERES8oiCCiIiIiIiIiHhFQQQRERERERER8YqCCCIiIiIiIiLiFQURRERERERERMQrCiKIiIiIiIiIiFcURBARERERERERryiIICIiIiIiIiJeURBBRERERERERLyiIIKIiIiIiIiIeEVBBBERERERERHxioIIIiIiIiIiIuIVBRFERERERERExCsKIoiIiIiIiIiIVxREEBERERERERGvKIggIiIiIiIiIl5REEFEREREREREvKIggoiIiIiIiIh4RUEEEREREREREfGKgggiIiIiIiIi4hUFEURERERERETEKwoiiIiIiIiIiIhXFEQQEREREREREa8oiCAiIiIiIiIiXlEQQURERERERES8cksGEYwx/YwxNvsanEeZR4wxK40xJ40xp40xG40x/fNpt78xZlN2+ZPZ9R+5OnchIiIiIiIicm3dckEEY8ztwL+A0xcpMwxYAvwOiAOmAhWBmcaYV/Ko8wowE6iQXT4OuBdYkt2eiIiIiIiIyA3tlgoiGGMMMAM4BkzJo0w48ApwHKhrrX3KWvtHoBbwHfCsMaZRrjqNgWez82tZa/9orX0KqJPdzivZ7YqIiIiIiIjcsG6pIAIwHGgJDATO5FFmEFAEmGytTXYkWmtPAC9l/zg0Vx3Hz3/LLueokwz8O7u9gZc5dhERuYmEh4cTHh5e2MO4rowbNw5jDCtXrnRJN8bQvHnzQhmTJytXrsQYw7hx4wp7KE55vXciIiJX2i0TRDDG3ANMBN601q6+SNGW2a/LPeQty1XmcuqIiMhNwhhD1mS3G8vZs2cJDQ3FGEPv3r0LezjXjeTkZIwxDBgwoLCHIiIict3xK+wBXAvGGD/gXWA/8Od8ilfPfv02d4a19pAx5gxwmzEm2Fp71hhTFKgEnLbWHvLQ3t7s12pejnVrHlkR3tQXERHx1ty5czl58iTGGObPn8+xY8coVapUYQ/Lze7duwkODi7sYTjV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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "image/png": {
       "height": 263,
       "width": 520
      },
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "ax = top10.plot.scatter('sha', 'code');\n",
    "\n",
    "for k, v in top10.iterrows():\n",
    "    ax.annotate(k.split(\"/\")[-1], v)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "### Ende der Demo"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Weitere Analysebeispiele\n",
    "\n",
    "* Analyse der CPU-Auslastung mit Daten von `vmstat`\n",
    "* Abhängigkeitsanalyse mit Daten von `jdeps` und Visualisierung mit `D3`\n",
    "* Identifizierung von Modularisierungsoptionen basierend auf reinen Codeänderungen in `Git`\n",
    "* Analyse von Performance-Hotspots und Code-Smells mit `jQAssistant` / `Neo4j`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "## Zusammenfassung\n",
    "**1.** <b>Softwareanalysen</b> mit Data-Science-Werkzeugen sind möglich  \n",
    "**2.** Wer mehr will bekommt auch <b>mehr</b>!  \n",
    "**3.** Es gibt unglaublich <b>viele Quellen</b> für Daten in der Softwareentwicklung  "
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "fragment"
    }
   },
   "source": [
    "<b>=> von der <strong>Frage</strong> über die <span class=\"green\">Daten</span> zur <span class=\"blue\" style=\"background-color: #FFFF00\">Erkenntnis</span>!</b>"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "# Danke! Fragen?\n",
    "\n",
    "<b>Markus Harrer</b><br/>\n",
    "innoQ Deutschland GmbH\n",
    "  \n",
    "markus.harrer@innoq.com\n",
    "\n",
    "`@feststelltaste`"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {
    "slideshow": {
     "slide_type": "slide"
    }
   },
   "source": [
    "# Weitere Ressourcen zum Workshop\n",
    "GitHub-Repository: https://git.io/Jelju\n",
    "\n",
    "Blog: https://feststelltaste.de"
   ]
  }
 ],
 "metadata": {
  "celltoolbar": "Slideshow",
  "kernelspec": {
   "display_name": "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.6.4"
  },
  "rise": {
   "controls": false,
   "showSlideNumber": "speaker",
   "slideNumber ": "false",
   "transition": "none"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}