Vorbereitung

Interaktive Webgrafik ist momentan der Renner. Immer mehr machen es. Der Fehlschluss ist, dass weil viele es machen, es einfach sei. Das Gegenteil ist der Fall. Interaktive Webgraphik ist die Königsklasse unter den Visualisierungen. Auch wenn Sie mit 20 Zeilen Python/Bokeh Code eine Interaktive Webgrafik erzeugen können, bedeutet dies noch lange nicht, dass Sie diese Technologie beherrschen. Wir werden versuchen Sie vor den schlimmsten Problemen zu bewahren. Damit wir die gemeinsame Zeit effektiv nutzen können, bitte ich Sie die folgende Vorbereitung durchzuführen.

Zusätzliche Installation (neu!):

Mein venv heißt hier "summit", bei Ihnen (wenn Sie meiner Installationsanleitung gefolgt sind ) wohl "test". Bitte das richtige verwenden

Der Befehl workon zeigt die verfügbaren venvs an.

volker@paddy:~$ workon
summit
volker@paddy:~$ workon summit
(summit) volker@paddy:~$
(summit) volker@paddy:~$ cdvirtualenv
(summit) volker@paddy:~/workspace/summit$
 
Die weiteren Operationen setzen voraus im richtigen VENV zu sein!  

Code herunterladen:

 

per github:

 
(summit) volker@paddy:~/workspace/summit$ git clone https://github.com/Inqbus/summit2018.git
Klone nach 'summit2018' ...
remote: Enumerating objects: 52, done.
remote: Counting objects: 100% (52/52), done.
remote: Compressing objects: 100% (33/33), done.
remote: Total 52 (delta 20), reused 43 (delta 15), pack-reused 0
Entpacke Objekte: 100% (52/52), Fertig.

Per ZIP-File

(summit) volker@paddy:~/workspace/summit$ wget https://github.com/Inqbus/summit2018/archive/master.zip
(summit) volker@paddy:~/workspace/summit$ unzip master.zip
(summit) volker@paddy:~/workspace/summit$ mv summit2018-master summit2018

Daten herunterladen:

(summit) volker@paddy:~/workspace/summit$ cd summit2018

(summit) volker@paddy:~/workspace/summit/summit2018$ wget http://quantquote.com/files/quantquote_daily_sp500_83986.zip
(summit) volker@paddy:~/workspace/summit/summit2018$ unzip quantquote_daily_sp500_83986.zip
 

Pandas installieren

 

(summit) volker@paddy:~/workspace/summit$ pip install pandas
Collecting pandas
Downloading https://files.pythonhosted.org/packages/5d/d4/6e9c56a561f1d27407bf29318ca43f36ccaa289271b805a30034eb3a8ec4/pandas-0.23.4-cp35-cp35m-manylinux1_x86_64.whl (8.7MB)
100% |████████████████████████████████| 8.7MB 89kB/s
Collecting pytz>=2011k (from pandas)
Downloading https://files.pythonhosted.org/packages/30/4e/27c34b62430286c6d59177a0842ed90dc789ce5d1ed740887653b898779a/pytz-2018.5-py2.py3-none-any.whl (510kB)
100% |████████████████████████████████| 512kB 65kB/s
Requirement already satisfied: numpy>=1.9.0 in ./lib/python3.5/site-packages (from pandas) (1.15.2)
Requirement already satisfied: python-dateutil>=2.5.0 in ./lib/python3.5/site-packages (from pandas) (2.7.3)
Requirement already satisfied: six>=1.5 in ./lib/python3.5/site-packages (from python-dateutil>=2.5.0->pandas) (1.11.0)
Installing collected packages: pytz, pandas
Successfully installed pandas-0.23.4 pytz-2018.5

 

 

Fragen?:

Schaffe ich das? Bringt mir das wirklich was? Kann ich auch mit xxxOS am Workshop Teinehmen?

Haben Sie Fragen - schreiben Sie mir eine E-Mail oder rufen Sie mich einfach an: 08860 9 222 79 2

Benötigte Python Skills:

Dieser Workshop benötigt Python. Daher wird vorausgesetzt, dass Sie als TeilnehmerIn auf Ihrer Plattform Python als Programmiersprache beherrschen. Dazu gehört das Erzeugen von virtuellen Umgebungen, die Installation von Python Paketen und das Starten, Editieren, Debuggen von Python Code.

Sie sollten rudimentäre Kenntnisse von Numerical Python oder Pandas haben. Wenn sie nicht wissen, was "np.linspace" macht sollten Sie sich dringend mit Numpy beschäftigen.

Benötigte OS Skills:

Der Workshop wird präsentiert mit Debian Buster Linux. Produktions-Systeme arbeiten mit Linux und Debian ist ein gutes und weit verbreitetes Produktions-System. Teilnehmer, die sich mit Linux nicht auskennen, können mit Anaconda Python  auch unter Windows erfolgreich am Workshop teilnehmen. Viele Dinge sind aber unter Windows umständlicher als unter Linux. Es gibt geteilte Meinung darüber ob der Einsatz von Anaconda unter Linux sinnvoll ist. Ich kenne aber niemanden, der Python in der Produktion unter Windows einsetzt. Das kann aber meiner Filterblase geschuldet sein.

Windows:

Anfänger:

  • Suchen Sie sich Linux-Unterstützung. Ohne Linux-Kenntnisse werden Sie mit Interaktiver Web-Grafik spätestens in der Produktion scheitern.

Alle anderen:

  • Installieren Sie sich ein Debian Linux parallel zu Ihrem Windows oder lassen Sie ein Debian Linux in einer VM laufen.

Linux:

Jede (nicht ganz exotische) Linux Distribution stellt die nötigen Pakete für den Workshop bereit. Lernen Sie virtuelle Python Umgebungen zun erzeugen und managen.

Andere OS:

Ich denke Sie kommen alleine klar.

Alle OS: benötigte Software:

Virtuelle Umgebungen: https://docs.python-guide.org/dev/virtualenvs/

Installiert muss sein:

  • Python3
  • Bokeh
  • Flask (Dient als Ersatz für den Produktions-Application-Server in dem Bokeh laufen soll)

Beispiel-Installation unter Debian Buster (Nützlich für Produktion):

Lege für jede Produktions-Anwendung einen eigenen Nutzer an. Wir nehmen als Beispiel "graph"

Werde Superuser

volker@stretch:/home/volker$ su
root@stretch:home/volker# adduser graph
....

Installiere Debian Paketmanager Aptitude (Ist mächtiger als apt-get)

root@stretch:/home/volker# apt-get install aptitude

Installiere virtualenvwrapper

root@stretch:/home/volker# aptitude install virtualenvwrapper

Werde user graph:

root@stretch:/home/volker# su graph

Erzeuge workspace directory für die environments:

graph@stretch:/home/volker$ cd

graph@stretch:/home/graph$ mkdir ~/workspace

Konfiguriere virtualenvwrapper: Füge zu den Nutzereinstellungen ~/.bashrc folgendes hinzu:

export WORKON_HOME=~/workspace
Z.B über den Editor nano
graph@stretch:~$ nano  ~/.bashrc
oder über die Kommandozeile:
graph@stretch:~$ echo "export WORKON_HOME=~/workspace" >> ~/.bashrc
  aktiviere die Änderungen an den Nutzereinstellungen
 
graph@stretch:~$ . ~/.bashrc
Teste venvwrapper
graph@stretch:~$ mkvirtualenv -ppython3 test
Already using interpreter /usr/bin/python3
Using base prefix '/usr'
New python executable in /home/graph/workspace/test/bin/python3
Also creating executable in /home/graph/workspace/test/bin/python
Installing setuptools, pkg_resources, pip, wheel...done.
(test) graph@stretch:~

Das "(test)" zeigt an, dass Du im Venv Test bist.

Nun deaktiviere das Venv:

(test) graph@stretch:~$ deactivate
graph@stretch:~

 Schau ob das Venv in der Liste der Venvs ist

(test) graph@stretch:~$ workon
test

Reaktiviere das Venv

graph@stretch:~$ workon test
(test) graph@stretch:~$

Installation von Bokeh

(test) graph@stretch:~/workspace$ pip install bokeh
Collecting bokeh
Collecting six>=1.5.2 (from bokeh)
Using cached https://files.pythonhosted.org/packages/67/4b/141a581104b1f6397bfa78ac9d43d8ad29a7ca43ea90a2d863fe3056e86a/six-1.11.0-py2.py3-none-any.whl
Collecting Jinja2>=2.7 (from bokeh)
Using cached https://files.pythonhosted.org/packages/7f/ff/ae64bacdfc95f27a016a7bed8e8686763ba4d277a78ca76f32659220a731/Jinja2-2.10-py2.py3-none-any.whl
Collecting tornado>=4.3 (from bokeh)
Collecting PyYAML>=3.10 (from bokeh)
Collecting packaging>=16.8 (from bokeh)
Using cached https://files.pythonhosted.org/packages/ad/c2/b500ea05d5f9f361a562f089fc91f77ed3b4783e13a08a3daf82069b1224/packaging-17.1-py2.py3-none-any.whl
Collecting numpy>=1.7.1 (from bokeh)
Using cached https://files.pythonhosted.org/packages/0a/fa/afc1dc818589c9fd36a53f78999f2b5bd88bd5b167eb7d87fb56b565c185/numpy-1.15.1-cp35-cp35m-manylinux1_x86_64.whl
Collecting python-dateutil>=2.1 (from bokeh)
Using cached https://files.pythonhosted.org/packages/cf/f5/af2b09c957ace60dcfac112b669c45c8c97e32f94aa8b56da4c6d1682825/python_dateutil-2.7.3-py2.py3-none-any.whl
Collecting MarkupSafe>=0.23 (from Jinja2>=2.7->bokeh)
Collecting pyparsing>=2.0.2 (from packaging>=16.8->bokeh)
Using cached https://files.pythonhosted.org/packages/42/47/e6d51aef3d0393f7d343592d63a73beee2a8d3d69c22b053e252c6cfacd5/pyparsing-2.2.1-py2.py3-none-any.whl
Installing collected packages: six, MarkupSafe, Jinja2, tornado, PyYAML, pyparsing, packaging, numpy, python-dateutil, bokeh
Successfully installed Jinja2-2.10 MarkupSafe-1.0 PyYAML-3.13 bokeh-0.13.0 numpy-1.15.1 packaging-17.1 pyparsing-2.2.1 python-dateutil-2.7.3 six-1.11.0 tornado-5.1.1

Installation von Flask

(test) graph@stretch:~/workspace$ pip install flask
Collecting flask
Downloading https://files.pythonhosted.org/packages/7f/e7/08578774ed4536d3242b14dacb4696386634607af824ea997202cd0edb4b/Flask-1.0.2-py2.py3-none-any.whl (91kB)
100% |████████████████████████████████| 92kB 896kB/s
Requirement already satisfied: Jinja2>=2.10 in ./test/lib/python3.5/site-packages (from flask) (2.10)
Collecting Werkzeug>=0.14 (from flask)
Downloading https://files.pythonhosted.org/packages/20/c4/12e3e56473e52375aa29c4764e70d1b8f3efa6682bef8d0aae04fe335243/Werkzeug-0.14.1-py2.py3-none-any.whl (322kB)
100% |████████████████████████████████| 327kB 1.7MB/s
Collecting click>=5.1 (from flask)
Downloading https://files.pythonhosted.org/packages/34/c1/8806f99713ddb993c5366c362b2f908f18269f8d792aff1abfd700775a77/click-6.7-py2.py3-none-any.whl (71kB)
100% |████████████████████████████████| 71kB 1.8MB/s
Collecting itsdangerous>=0.24 (from flask)
Downloading https://files.pythonhosted.org/packages/dc/b4/a60bcdba945c00f6d608d8975131ab3f25b22f2bcfe1dab221165194b2d4/itsdangerous-0.24.tar.gz (46kB)
100% |████████████████████████████████| 51kB 2.1MB/s
Requirement already satisfied: MarkupSafe>=0.23 in ./test/lib/python3.5/site-packages (from Jinja2>=2.10->flask) (1.0)
Building wheels for collected packages: itsdangerous
Running setup.py bdist_wheel for itsdangerous ... done
Stored in directory: /home/graph/.cache/pip/wheels/2c/4a/61/5599631c1554768c6290b08c02c72d7317910374ca602ff1e5
Successfully built itsdangerous
Installing collected packages: Werkzeug, click, itsdangerous, flask
Successfully installed Werkzeug-0.14.1 click-6.7 flask-1.0.2 itsdangerous-0.24

Check der Installation: Wir installieren aus https://bokeh.pydata.org/en/latest/docs/gallery.html erste Spalte zweiter Plot.

(test) graph@stretch:~$ cdvirtualenv 
(test) graph@stretch:~/workspace/test$ wget https://github.com/bokeh/bokeh/raw/master/examples/app/sliders.py
--2018-09-18 23:59:21-- https://github.com/bokeh/bokeh/raw/master/examples/app/sliders.py
Auflösen des Hostnamens »github.com (github.com)« … 192.30.253.112, 192.30.253.113
Verbindungsaufbau zu github.com (github.com)|192.30.253.112|:443 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 302 Found
Platz: https://raw.githubusercontent.com/bokeh/bokeh/master/examples/app/sliders.py [folgend]
--2018-09-18 23:59:22-- https://raw.githubusercontent.com/bokeh/bokeh/master/examples/app/sliders.py
Auflösen des Hostnamens »raw.githubusercontent.com (raw.githubusercontent.com)« … 151.101.112.133
Verbindungsaufbau zu raw.githubusercontent.com (raw.githubusercontent.com)|151.101.112.133|:443 … verbunden.
HTTP-Anforderung gesendet, auf Antwort wird gewartet … 200 OK
Länge: 2036 (2,0K) [text/plain]
Wird in »»sliders.py«« gespeichert.
sliders.py 100%[===========================================================================================>] 1,99K --.-KB/s in 0s
2018-09-18 23:59:22 (32,9 MB/s) - »»sliders.py«« gespeichert [2036/2036]
(test) graph@stretch:~/workspace/test$ bokeh serve sliders.py 
2018-09-20 23:33:40,624 Starting Bokeh server version 0.13.0 (running on Tornado 5.1.1)
2018-09-20 23:33:40,626 Bokeh app running at: http://localhost:5006/sliders
2018-09-20 23:33:40,626 Starting Bokeh server with process id: 6791

Gehen Sie mit Ihrem Browser auf

http://localhost:5006/sliders

dort sollte die interaktive Grafik nu zu sehen sein.

Realitäts-Check:

Wenn das bisher für Sie ein Spaziergang war ist alles OK.

Wenn nicht, dann fehlen Ihnen grundlegende OS/Python Techniken. Diese werden Sie im Workshop nicht erlernen können. Nutzen Sie daher jede freie Minute um sich vorzubereiten! Scheuen Sie sich nicht mich zu kontaktieren, wenn Sie feststecken!

Benötigtes Vorwissen

Schauen Sie sich das Tutorial von Bokeh an. Probieren Sie mit der installierten Software ob sie einzelne Beispiele aus der Bokeh-Gallery durchspielen können.

Optionales Wissen

Schauen Sie sich das Tutorial von Bokeh-Server an. Probieren Sie Bokeh-Server an Beispielen aus.

Für den Teil mit Bokeh-Server sind Vorkenntnisse mit Flask von großem Vorteil. Es genügt völlig in der Lage zu sein mit Flask eine Hello-World Flask-Anwendung mit einem Template bauen zu können.

Weitere Software/Skills

  • Sie benötigen neben Ihrem Lieblings-Browser einen zweiten. Ich nutze z.B: Firefox und Chromium. In einer VM habe ich  zusätzlich IE und Edge um die Windows-Kompatibilität - ächz - zu überprüfen.
  • Lernen Sie das JS-Debuggins der Browser - Sie werden es brauchen.

Schlusswort

Entschuldigung, wenn das alles so exklusiv klingt. Ich möchte niemand von meinem Workshop ausschließen. Auch ohne ein funktionierendes Python-Environment wird man so viel über Interaktive Webgrafiken lernen, dass es die aufgewendete Zeit wert ist. Ich möchte aber niemanden der meinen Workshop machen will entäuschen, der dann doch lieber den Parallel-Workshop über Python Wattebäuschchen hätte machen wollen.