2014/12/21

Buchrezension: Rewire

In letzter Zeit habe ich das Buch  Rewire: Digital Cosmopolitans in the Age of Connection von Ethan Zuckerman gelesen. Als Thema wird darin menschliche Kommunikation und Interaktion im Internetzeitalter besprochen.

Das Buch liest sich sehr soziologisch. Dem Menschen wird darin eine eindeutig höhere Bedeutung zugewiesen als der auch reichlich erwähnten Technik. Mir persönlich war der Inhalt aber zu oberflächlich dargestellt, wem jedoch massenmediale Anekdoten zu Themen mehr interessieren als die theoretische Wissenbasis, ist bei Zuckerman genau richtig. Nichtsdestotrotz finde ich das Buch sehr empfehlenswert, nämlich in Bezug auf der thematischen Aufbereitung durch den Autor und dessen lebendiger Erzählweise.

Ende Versuch: Umstellung auf Kleinschreibung

Wie in diesem Beitrag beschrieben, habe ich die letzen Einträge in Kleinschreibung verfasst. Das Experiment ist meiner Meinung nach nicht aufgegangen und darum stelle ich den Versuch jetzt ein. Hauptausschlagender Grund dafür ist, dass es mir mehr Mühe kostet, einen Text ausschließlich in Kleinschreibung zu verfassen, da ich sonst auch mit Groß- und Kleinschreibung unterscheidenden Systemen arbeite. Insofern kosten mich die Tippfehler durch automatisches Umschalten mehr Zeit als ich durch das Weglassen der Umschaltung gewinne. Dazu finde ich, hat sich das Schriftbild des Blogs nicht verbessert (jedoch auch nicht verschlechtert). Die Lesbarkeit der Beiträge hat aber auch gelitten, einfach aus dem Grund, weil die Unterscheidung zwischen Groß- und Kleinschreibung kulturell so eingebrannt ist. Das könnte sich also durch eine weitere Verbreitung der Kleinschreibung verbessern, aktuell ist es mir jedoch noch zu nachteilig.

2014/10/31

visualisierung mit bokeh: beliebte vornamen in OÖ

erste versuche mit Bokeh

Bokeh ist eine python bibliothek für interaktive visualisierungen und datenplots. entwickelt wird sie von Continuum Analytics, das durch seine python distribution anaconda bekannt ist. die als open-source projekt entwickelte bibliothek erlaubt es, mit python interaktive und webfähige plots zu erzeugen - und das auf simple und schnelle art und weise. genug gründe für mich (als nicht unbedingten fan der matplotlib) einmal erste versuche damit zu starten.

die einbindung der bibliothek ist nicht schwierig zu bewerkstelligen. auch die anwendung zur erzeugung der plots erzeugt keinen syntaktischen overhead, wie der code für die beispielanwendung  zeigt (einseh- und downloadbar im visualisierungs-beispiele repo des blogs). die ergebnisse sind für den geringen aufwand visuell ansprechend und auch nützlich für die kommunikation von informationen aus den plots. bei meinen versuchen haben sich jedoch zwei problemfelder gezeigt, die dem noch jungen entwicklungsstands des projekts geschuldet sind. erstens ist die dokumentation noch sehr ausbaufähig. damit bleibt nichts anderes übrig, als bei der verwendung öfters mal im sourcecode der bibliothek nachzusehen. dieser ist zwar gut kommentiert und hilft, die korrekte anwendung von diversen methoden zu finden, kann aber eine gute dokumentation für das schnelle nachschlagen nicht ersetzen. als zweiten problembereich kamen mir dokumentierte parameter unter, die in folge jedoch nicht genutzt werden. dies ist besonders ärgerlich, wenn man die plots individuell verändern möchte. jedoch gehe ich davon aus, dass diese beiden problemgruppen in weiteren entwicklungsstadien behoben werden.

als beispielanwendung habe ich mich auf eine simple visualisierung mittels einer heatmap festgelegt. da bokeh auch eine eigene methode und ein beispiel in der gallery bereit stellt. als zusätzliches ziel setzte ich mir die einbindung eines bokeh-plots in eine statische webseite.

thema: beliebte vornamen

als datenquelle für dieses projekt hat sich der vornamen datensatz des landes oö (über daten.gv.at) angeboten. dieser enthält die 60 beliebtesten vornamen je geschlecht für die letzten 10 jahre. daraus wurden die 25 beliebtesten (nach summe der werte über die gesamtjahre) bestimmt und deren werte dann in einem pandas data frame in eine entsprechende form gebracht, um als input für die CategoricalHeatMap methode von Bokeh zu dienen. im endeffekt stellte sich heraus, dass die größte herausforderung des projekts -wie so oft bei datenanalysen und- visualisierungen- darin bestand, die daten in die gewünschte form zu bringen. die erstellung der eigentlichen plots mittels bokeh ging dann recht zügig.

sobald die visualisierungen erstellt waren, wurden die plots in ein bootstrap template importiert. das vorgehen (im web-beispiele repo des blogs dokumentiert), hätte ich zwar eleganter gestalten können, für eine schnelle präsentationsmöglichkeit ist die einbindung des html-outputs von bokeh aber geeignet. eine bedeutende verbesserung wäre natürlich eine interaktive einbindung, was auch eine effektive verwendung in dynamischen seiten erlauben würde. dies scheint mit bokeh auch möglich zu sein - aber auch hier fehlt noch eine bessere dokumentation. für den anspruch, ein einfaches beispiel zu gestalten, hat mir aber die einbindung des kompletten outputs gereicht. die ergebnisse über die 25 beliebtesten vornamen für männliche und weibliche neugeborene kann somit unter folgendem link betrachtet werden:


zusammenfassung

einbindung und verwendung der python visualisierung-bibliothek Bokeh sind einfach. das potential des projekts ist gross, aktuell gibt es jedoch noch einige mängel, va bezüglich der dokumentation.
und zum ergebnis des beispiels: Lukas bzw. Anna sind die beliebtesten vornamen für neugeborene in den letzten 10 jahren in oberösterreich. die plots zeigen darüber hinaus, dass es besonders bei weiblichen neugeborenen eine konzentration von besonders häufig verwendeten vornamen gibt. ein trend zu mehr individualität bei der benennung von neugeborenen ist zumindest mit diesen vorliegenden daten für die letzten 10 jahre nicht erkennbar.

2014/09/22

geokodierungsskript für MapQuest API

da es zwar aktuelle einige bibliotheken für python 2.x gibt, welche geokodierung mit Hilfe der MapQuest Open Geocoding API zur verfügung stellen, aber keine kompatible version für python 3.x, habe ich ein kleines Skript dafür geschrieben und auf GitHub gestellt. voraussetzung zur verwendung ist ein authorisierungs schlüssel, der auf der entwicklerseite von MapQuest erzeugt werden kann.

das skript kann in ein projekt kopiert werden, das koordinaten für bestimmte orte benötigt. der aufruf der funktion geocodeMQ mit dem parameter der jeweiligen ortsabfrage, stellt dann genau diese bereit, in dem es auf die Open Geocoding API von Mapquest zugreift. diese daten basieren auf OpenStreetMaps-daten und stehen unter der ODbL. es werden die koordinaten des besten treffers als koordinatentupel (breite, länge) zurück gegeben und können zur weiteren prozessierung verwendet werden.

2014/08/22

reporting mit flask

um die möglichkeiten von flask zum erstellen eines reports zu testen, habe ich ein einfaches beispiel über wohnbautätigkeiten zusammen gestellt. zum ausprobieren der anwendung steht der code im python repo von diesem blog unter FlaskReporting zur verfügung.
image home screen
home screen

thema: wohnbautätigkeit in österreich

da es in dem beispiel eigentlich um die anwendung gehen sollte, habe ich datenzusammenstellung, -analyse und -visualisierung simpel gehalten. die daten stammen von statistik austria [ironiemodus an] DEM ansprechpartnerfür historische daten von österreich [ironiemodus aus] und bestehen aus 2 datensätze über die anzahl von fertiggestellten gebäuden mit wohnungen pro jahr. der insgesamte zeitraum der beobachtung ist somit zwischen 1970 und 2002. die datenwerte sind auch relativ unspektakulär mit nur einem ausreisser (in 1980), der eventuell mit mehr historischem wissen erklärbar wäre oder auch nur ein aggregation fehler ist.
für den report habe ich die daten dann so aufbereitet, dass eine zusammenfassende statistik der anzahl der gebäuden und ein einfaches diagramm über die selbe variable zu sehen ist. dazu noch ein bisschen erklärender text und fertig ist die simplifizierte version eines datenanalyse reports.

flask 

mit ein wenig kenntnissen in python und einigen tutorials war es überaus einfach, mit geringem aufwand, eine einfache reporting app zu entwickeln. der code der anwendung ist mehr oder weniger selbsterklärend. grundsätzlich gibt es ein main script mit dem code für flask und ein analyse script, das die datenanalyse und -visualisierung (überwiegend mit hilfe von pandas und der matplotlib) zur verfügung stellt. als layout wurde die basis version von bootstrap verwendet, das über eine erweiterung auch flott in flask integriert werden konnte. dadurch genügten ein paar zeilen code in den html templates, um so einen simplen report zusammen zu stellen.

report

zusammenfassung

flask ist mmn überaus geeignet, einfache reports oder andere datenprodukte ins web zu bringen. die verwendung des frameworks zeigt sich recht einfach, setzt jedoch etwas an wissen über html und css voraus.

2014/08/20

versuch: umstellung auf kleinschreibung

ab sofort starte ich den versuch, meine einträge in kleinschreibung zu verfassen. auf die idee brachte mich das lesen vom das vegan magazin (obwohl selbst nicht veganer) und die erinnerung an ein mal gelesenes buch eines italienischen autors, der sich ebenfalls der kleinschrift bediente. getestet soll werden, ob mir das konsequente klein-schreiben tatsächlich leichter fällt, wie sich die entscheidung auf das gesamte schriftbild des blogs auswirkt und ob die lesbarkeit der beiträge dadurch beeinträchtigt wird. persönliche erfahrungen oder meinungen dazu bitte über kontaktformular auf der seite. 

2014/07/27

Migrationsbilanz als ShinyApp

Für das Kurs-Projekt vom MOOC Developing Data Products habe ich eine simple Visualisierungs App entwickelt. Sie bereitet Migrationsdaten aus dem Zeitraum 2002 - 2012 der Bezirke von Oberösterreich in Form einer Choroplethenkarte auf und zeigt die Werte auch in Tabellenform.

Link zu shinyMig OÖ

ShinyApps.io

Umgesetzt wurde das Projekt zu Versuchszwecken in R auf der ShinyApps.io Plattform von RStudio. Das Deployment hierbei zeigte sich mehr als simpel. Sofern die Anwendung auf der eigenen Workstation einwandfrei läuft, kann es mit einem einfachen deployApp() Befehl auf die Plattform geladen werden. Die Kunst ist lediglich, die Anwendung am eigenen Rechner fehlerfrei zum Laufen zu bringen, da die debugging Möglichkeiten mit shiny leider noch sehr begrenzt sind.

Umsetzung in R

Bei der Entwicklung der App zeigte sich wieder eindeutig, dass R nur ein suboptimales Werkzeug zur Kartenerstellung ist. Mit ggplot2 ist zwar einiges möglich, der Aufwand dafür steht jedoch mMn nicht in Relation zu den mässigen Ergebnissen im Vergleich zu echter GIS-Software. Bei der Aufbereitung der Rohdaten (übrigen von data.gv.at) und der tabellarischen Darstellung in der App, konnte hingegen R natürlich seine Stärken ausspielen. Als größtes Hindernis bei der Entwicklung stellte sich die Kategorisierung der Migrationsbilanzen heraus, wobei ich mich nach etlichen Versuchen in automatischer- und einiger in manueller-Klassifizierung für einen semi-automatischen Weg entschieden habe, wobei positive und negative Salden getrennt und von diesen beiden Kategorien dann der jeweilige Median als weitere Schwelle eingeführt wurde. Damit blieb die visuelle Vergleichbarkeit der Karten noch einigermassen erhalten, bei Beibehaltung des Akzents auf die Trennung von positiven und negativen Werten. Für detaillierte Vergleiche sind ja noch die jeweiligen Schwellen in der Legende verzeichnet bzw. auch die Daten in der Tabelle ersichtlich.

Beispielcode

Der Beispielcode steht im R-Repo dieses Blogs zum download bereit.