"Statistik auf nem Mac."
=> Belastbare Erkenntnisse mittels Fakten liefern
=> Neue Erkenntnisse verständlich herausarbeiten
Data Science & Software Data: Perfect match!
=> Krass viel!
=> vom Problem über die Daten zur Erkenntnis!
Schlüssel: Computational notebooks
Meta-Ziel: Grundfunktionen anhand eines einfachen Show-Cases sehen.
Git Blame Log
Git Blame Log
Git Blame Log
In [1]:
import pandas as pd
log = pd.read_csv("../dataset/linux_blame_log.csv.gz")
log.head()
Out[1]:
Was haben wir hier eigentlich?
In [2]:
log.info()
1 DataFrame (~ programmierbares Excel-Arbeitsblatt), 4 Series (= Spalten), 5665947 Rows (= Einträge)
Wir wandeln die Zeitstempel um
In [3]:
log['timestamp'] = pd.to_datetime(log['timestamp'])
log.head()
Out[3]:
=> Dadurch werden mehrere Perspektiven auf ein Problem möglich
Wir berechnen uns das Alter jeder Codezeilenänderung
In [4]:
log['age'] = pd.Timestamp('today') - log['timestamp']
log.head()
Out[4]:
Wir ordnen jeder Zeilenänderung einer Komponente zu
In [5]:
log['component'] = log['path'].str.split("/").str[:2].str.join(":")
log.head()
Out[5]:
String-Operationen...die dauern. Gibt aber diverse Optimierungsmöglichkeiten!
Wir fassen nach Komponenten zusammen und arbeiten mit der jeweils jüngsten Zeilenänderung weiter
In [6]:
age_per_component = log.groupby("component")['age'].min().sort_values()
age_per_component.head()
Out[6]:
Wir bauen ein Diagramm mit min. Alter pro Komponente
In [7]:
age_per_component.plot.bar(figsize=[15,5]);
Beispiel: Abhängigkeitsanalyse mit Daten von jdeps
und Visualisierung mit D3
.