Mit diesem Arbeitsblatt erlernen wir die ersten Schritte mit Jupyter, Python, pandas und matplotlib anhand eines praktischen Beispiels: Der Analyse der Entwicklungsgeschichte des Linux Kernels.
Das komplette und ausführlich beschriebene Mini-Tutorial ist auch auf meinem Blog zu finden unter https://www.feststelltaste.de/mini-tutorial-git-log-analyse-mit-python-und-pandas/.
Als Basis haben wir einen Datensatz in einer Datei, der uns pro Commit den Zeitstempel sowie den Autor der Codeänderung aufführt:
timestamp,author
2017-12-31 14:47:43,Linus Torvalds
2017-12-31 13:13:56,Linus Torvalds
2017-12-31 13:03:05,Linus Torvalds
2017-12-31 12:30:34,Linus Torvalds
2017-12-31 12:29:02,Linus Torvalds
Diese Daten habe ich mir im Grunde über git
(https://git-scm.com) aus dem GitHub-Repository https://github.com/torvalds/linux/ erzeugen lassen (und für das Mini-Tutorial ein wenig vereinfacht...).
Aber der Reihe nach – lernen wir ersteinmal die Werkzeuge näher kennen.
In [1]:
"Hello World"
Out[1]:
ESC
.b
. m
.Enter
.Strg
+ Enter
"ausführst".Das ist ein Text
In [2]:
text = "Hello World"
text
Out[2]:
In [3]:
text[0]
Out[3]:
In [4]:
text[-1]
Out[4]:
In [5]:
text[2:4]
Out[5]:
In [6]:
text.upper()
Out[6]:
In [7]:
text.split("l",maxsplit=1)
Out[7]:
In [8]:
import pandas as pd
pd?
In [9]:
PFAD = "../dataset/git_demo_timestamp_linux.gz"
git_log = pd.read_csv(PFAD)
git_log.head()
Out[9]:
In [10]:
git_log.info()
Wir sehen, dass in git_log
timestamp
(=Commit-Zeitpunkt) habenauthor
(=Programmierer).author
mit der Schreibweise git_log.author
zu..isnull()
-Aufruf.missing
.missing
aus.
In [11]:
missing = git_log.author.isnull()
missing.head()
Out[11]:
In [12]:
git_log[missing]
Out[12]:
In [13]:
top10 = git_log.author.value_counts().head(10)
top10
Out[13]:
In [14]:
%matplotlib inline
top10.plot()
Out[14]:
In [15]:
top10.plot.bar()
Out[15]:
In [16]:
top10.plot.bar();
In [17]:
top10.plot.pie();
plot()
der Series top10
und mit folgenden Parametern: kind="pie"
figsize=[7,7]
title="Top 10 Autoren"
label=""
Tipp: Nutze die Autovervollständigung.
In [18]:
top10.plot(
kind='pie',
title="TOP 10 author",
label="",
figsize=[5,5]);
In [19]:
git_log.timestamp.head()
Out[19]:
In [20]:
ts = pd.to_datetime(git_log.timestamp)
ts.head()
Out[20]:
In [21]:
ts.dt.hour.head()
Out[21]:
In [22]:
commits_je_stunde = ts.dt.hour.value_counts(sort=False)
commits_je_stunde.head()
Out[22]:
In [23]:
commits_je_stunde.plot.bar();
Wir haben jetzt einige Grundlagen zu Pandas kennengelernt. Damit kommen wir schon sehr weit in der täglichen Arbeit. Die anderen wichtigen Themenbereiche, die nun noch fehlen, sind:
groupby
DataFrame
s mittels pivot_table
Ich hoffe, dass ich Dir mit diesem Mini-Tutorial das Potenzial von Datenanalysen mittels Jupyter, Python und matplotlib näherbringen konnte.
Über Anmerkungen und Feedback freue ich mich!
Markus Harrer
Blog: https://www.feststelltaste.de
Mail: talk@markusharrer.de
Twitter: @feststelltaste
Beratung und Training: http://markusharrer.de