"Statistik auf nem Mac."
=> Belastbare Erkenntnisse mittels Fakten liefern
=> Neue Erkenntnisse verständlich herausarbeiten
=> von der Frage über die Daten zur Erkenntnis!
Data Science & Software Data: Perfect match!
=> Krass viel!
=> Individuelle Analysen für individuelle Probleme!
Implementierung: Computational notebooks
Meta-Ziel: Grundmechaniken kennenlernen.
Wir laden Git Log Daten eines Git Repos.
In [1]:
import pandas as pd
log = pd.read_csv("../dataset/git_log_intellij.csv.gz")
log.head()
Out[1]:
Was haben wir hier eigentlich?
In [2]:
log.info()
1 DataFrame (~ programmierbares Excel-Arbeitsblatt), 6 Series (= Spalten), 1128819 Rows (= Einträge)
Wir wandeln die Zeitstempel von Texte in Objekte um.
In [3]:
log['timestamp'] = pd.to_datetime(log['timestamp'])
log.head()
Out[3]:
Wir sehen uns nur die jüngsten Änderungen an.
In [4]:
recent = log[log['timestamp'] > pd.Timestamp('today') - pd.Timedelta('90 days')]
recent.head()
Out[4]:
Wir wollen nur Java-Code verwenden.
In [5]:
java = recent[recent['filename'].str.endswith(".java")].copy()
java.head()
Out[5]:
Wir aggregieren die Zeilen sowie die Anzahl der Änderungen pro Datei.
In [6]:
changes = java.groupby('filename')[['sha']].count()
changes.head()
Out[6]:
Wir holen Infos über die Code-Zeilen hinzu...
In [7]:
loc = pd.read_csv("../dataset/cloc_intellij.csv.gz", index_col=1)
loc.head()
Out[7]:
...und verschneiden diese mit den vorhandenen Daten.
In [8]:
hotspots = changes.join(loc[['code']])
hotspots.head()
Out[8]:
Wir zeigen die TOP 10 Hotspots an.
In [9]:
top10 = hotspots.sort_values(by="sha", ascending=False).head(10)
top10
Out[9]:
Wir plotten die TOP 10 Liste als XY-Diagramm.
In [10]:
%matplotlib inline
top10.plot.scatter('sha', 'code');
jdeps
und Visualisierung mit D3
(Code, Statisch, Interaktiv).