Diese Folie ist absichtlich leer!
In [1]:
%matplotlib inline
import pandas as pd
Sehr große Auswahl == sehr große Möglichkeiten?
Individuelle Systeme == Individuelle Probleme => Individuelle Analysen => Individuelle Erkenntnisse!
"Statistics on a Mac."
=> Belastbare Erkenntnisse mittels Fakten liefern
=> Neue Erkenntnisse verständlich herausarbeiten
In [2]:
pd.read_csv("../dataset/google_trends_datascience.csv", index_col=0).plot();
"100" == max. Beliebtheit!
Nicht so weit weg wie gedacht!
=> von der Frage über die Daten zur Erkenntnis!
Vehikel: Computational notebooks
Meta-Ziel: Grundmechaniken kennenlernen.
Wir laden einen Datenexport aus einem Git-Repository.
In [3]:
log = pd.read_csv("../dataset/git_log_intellij.csv.gz")
log.head()
Out[3]:
Wir sehen uns Basisinfos über den Datensatz an.
In [4]:
log.info()
1 DataFrame (~ programmierbares Excel-Arbeitsblatt), 6 Series (= Spalten), 1128819 entries (= Reihen)
Wir wandeln die Zeitstempel von Texte in Objekte um.
In [5]:
log['timestamp'] = pd.to_datetime(log['timestamp'])
log.head()
Out[5]:
Wir sehen uns nur die jüngsten Änderungen an.
In [6]:
# use log['timestamp'].max() instead of pd.Timedelta('today') to avoid outdated data in the future
recent = log[log['timestamp'] > log['timestamp'].max() - pd.Timedelta('90 days')]
recent.head()
Out[6]:
Wir wollen nur Java-Code verwenden.
In [7]:
java = recent[recent['filename'].str.endswith(".java")].copy()
java.head()
Out[7]:
Wir zählen die Anzahl der Änderungen je Datei.
In [8]:
changes = java.groupby('filename')[['sha']].count()
changes.head()
Out[8]:
Wir holen Infos über die Code-Zeilen hinzu...
In [9]:
loc = pd.read_csv("../dataset/cloc_intellij.csv.gz", index_col=1)
loc.head()
Out[9]:
...und verschneiden diese mit den vorhandenen Daten.
In [10]:
hotspots = changes.join(loc[['code']]).dropna()
hotspots.head()
Out[10]:
Wir zeigen nur die TOP 10 Hotspots im Code an.
In [11]:
top10 = hotspots.sort_values(by="sha", ascending=False).head(10)
top10
Out[11]:
Wir erzeugen ein XY-Diagramm aus der TOP 10 Liste.
In [12]:
ax = top10.plot.scatter('sha', 'code');
for k, v in top10.iterrows():
ax.annotate(k.split("/")[-1], v)
https://www.feststelltaste.de/category/top5/
Kurse, Videos, Blogs, Bücher und mehr (im Aufbau).
https://github.com/feststelltaste/software-analytics-workshop
=> von der Frage über die Daten zur Erkenntnis!