von 30.06.2011

taz Blogs


Willkommen auf der Blogplattform der taz-Community!

Mehr über diesen Blog

[vimeo]http://vimeo.com/19185801[/vimeo]

Wrangler Demo Video from Stanford Visualization Group on Vimeo.

Anhand der Rechenschaftsberichte der Parteien für 2009 wird hier gezeigt, wie sich DataWrangler nutzen lässt. Diese Browser-Anwendung der Universität Standford erlaubt eine Echtzeitmanipulation von Datensätzen mittels einer grafischen Benutzeroberfläche. Es ist ein etwas kompliziert anmutendes Tool – aber es lohnt sich damit zu beschäftigen, da es viel Datenarbeit ersparen kann.

Vor zehn Tagen veröffentlichte taz.de zwei Werkzeuge rund um Parteispenden, die wir von OpenDataCity umgesetzt haben. Einmal eine interaktive Karte der Spender für 2009 über 10.000 Euro sowie ein Recherchetool für die 6700 Spenden über 10.000 Euro in den Jahren 1994 bis 2009. Das ist nur die Spitze des Eisberges; bei manchen Parteien machen die undokumentierten Spenden unter 10.000 Euro die Hälfte der gesamten Finanzen aus. Mehr dazu in diesem taz-Kommentar.

Eigentlich hätte das alles schon viel früher erscheinen sollen; die Vorbereitungen dafür liefen schon seit Ende vergangenen Jahres. Doch dann kamen die Umwälzungen in Nordafrika sowie der Tsunami und die GAUs von Japan dazwischen. So rutschte die Geschichte immer weiter nach hinten und das Pech wollte es, dass Spiegel Online ausgerechnet eine Woche früher ebenfalls eine Parteispendenvisualisierung anbot. Die ist recht gelungen und funktional. Glücklicherweise konzentriert sie sich auf Großspenden über 50.000 Euro und bietet nur die Zahlen ab 1998 auf. Auch stellt SPON – entgegen der taz – die grundlegenden Daten nicht zur Weiterverwendung zur Verfügung (hier finden sich die Daten für 1994 bis 2009).

1. Entwurf der Spenderkarte für die taz (noch mit Google Maps anstatt OpenStreetMap)

Die Rechenschaftsberichte der Parteien liegen alles andere als offen vor – ab dem Jahr 1983 sind sie im pdf-Format abrufbar. Die Bundestagsverwaltung bekommt sie von den Parteien offensichtlich in Papierform. Die veröffentlichten PDF enthalten Scans, also faktisch Bilddateien, kein Text. Im Internetzeitalter läuft die Kontrolle der Parteifinanzen offenbar noch auf dem Niveau von Fax und Kopiergerät.

Wie dem auch sei. Hier ein Ausschnitt (S. 19) aus dem PDF der Bundestagsverwaltung für die Parteien im Bundestag 2009.

Abb. 2: Rechenschaftsbericht 2009: Ausschnitt aus S. 19 mit Angaben der CDU

Im Folgenden wird dieses PDF ausgelesen und in mit der Anwendung DataWrangler in Tabellenform strukturiert. Nur dann lassen sich die gut 900 Spenden im Jahr 2009 sortieren und aufbereiten, wie etwa in der von uns umgesetzen Karte für taz.de

Um das zu erreichen, wird das PDF durch ein Schrifterkennungsprogramm gejagt; wie gesagt, de facto handelt es sich um Bilder, also eine Art digitalen Ausdruck. Per OCR (Optical Character Recognition) werden die einzelnen Buchstaben und Ziffern erkannt. Bei gängigen Schriftarten wie Arial und Times New Roman und halbwegs saubernen Bildmaterial ist die Fehlerquote beim Einlesen recht gering. In diesem Fall erbringt schon die Auswertung des PDF durch Google Docs, das OCR seit kurzem erlaubt, brauchbare Ergebnisse. Wir nutzen aber in der Regel die Software Abbyy Fine Reader (PC/Mac), da diese Software Tabellen erkennt und auch gleich xls-Datei erzeugen kann. So oder so, das Ergebnis sieht dann in einer Tabelle aus wie folgt.

%CODE9%

Pro Zeile steht alles in einer Zelle. Nun gilt es, die Informationen in eine Tabelle sinnvoll zu strukturieren. Per Hand würde das bei mehreren hundert Einträgen lange dauern. Deswegen greift man am besten auf ein Tool zurück wie Data Wrangler. Das Projekt der Universität Standford wird derzeit noch weiterentwickelt; es kommen immer wieder Änderungen hinzu, aber es lässt sich schon produktiv nutzen. Letztlich erlaubt es, diverse Operationen an Datensätzen vorzunehmen. Der Clou ist, dass DataWrangler eine Live-Vorschau der gewählten Maßnahmen darstellt und somit zum Experimentieren einlädt: “What you see is what you get”. Alle Schritte lassen sich rückgängig machen; zudem können noch diverse Parameter der einzelnen Schritte geändert werden. Leider ist die Anwendung nicht dokumentiert; deshalb hier jetzt ein Tutorial mit dem oben bereitgestellten Datensatz aus der Seite 19 des Rechenschaftsbericht der Parteien im Bundestag für 2009.

Der Datenimport läuft denkbar einfach. Beispielsweise kann der Datensatz aus der oben stehenden Tabelle, die Seite 19, per Copy und Paste eingefügt werden. Dafür wird in der Eingabemaske die Beispieldatei gelöscht (Strg-A; Strg-X) und der jeweilige Datensatz aus dem Zwischenspeicher eingefügt (Strg-C) – siehe Abb. 3. Abb. 3 – Zu Beginn wird per Copy&Paste der unbearbeitete Datensatz eingefügt.

Nach dem Klick auf “Wrangle” oben recht erscheint nun die eigentliche Arbeitsoberfläche (Abb. 4). Oben finden sich in einer blaugefärbten Menüleiste die Operatoren. Links darunter stellt DataWrangler dann diverse Vorschläge (“Suggestions”) für Operationen vor. Bewegt man die Maus darüber, wird rechts in der Tabellenansicht eine Vorschau des Ergebnis dieser möglichen Operation angezeigt. Per Klick auf den grünen Kreis mit dem Pluszeichen neben der Befehlsbezeichnung fügt man den Vorgang dem “Script” hinzu. Das findet sich unten links; dort können die Schritte entweder noch geändert oder wieder gelöscht werden. In der Arbeitsoberfläche werden nur die ersten paar Dutzend Zeilen einer Tabelle angezeigt; am Ende werden die Operationen am gesamten Datensatz vorgenommen und dann zum Export angeboten.

Abb. 4: Gesamtansicht der DataWrangler-Oberfläche

Wichtig zu wissen: Die Vorschläge (“Suggestions”) orientieren sich auch an der Position, an der man in die bestehende Tabelle zwischen Zeichen/Ziffern klickt; auch lassen sich einzelne oder mehrere Spalten und Reihen markieren (Klick auf Spaltenkopf bzw. Zeilennr.). Mit der “Escape/ESC” Taste werden Auswahlen, Vorschauen etc. zurückgesetzt. Alle Operationen lassen sich rückgängig machen. Im Script-Fenster (unten links) erscheint, wenn man die Maus über die jeweilige Operation bewegt, ein klickbarer roter Kreis mit einem Minuszeichen. Zelleninhalte lassen sich per Doppelklick bearbeiten; ebenso Spaltentitel.

Was nun folgt, mag etwas kompliziert erscheinen. Es lohnt aber, sich mit DataWrangler auseinanderzusetzen, da es auf Dauer viel Arbeit bei Datenaufbereitung und -säuberung abnehmen kann.

1. Schritt: Leere Zeilen löschen: Auf Zeilennr. 2 klicken; die ganze Zeile wird nun rot markiert. Links in “Suggestions” die Operation “Delete empty rows” wählen (grünes Kreis mit Pluszeichen zum bestätigen klicken).

2. Schritt: Nun muss die jeweilige Adresse in eine Zelle neben den Firmen- bzw. Personenamen gelangen. Dafür wählen wir oben in der Menüleiste den Bereich “Translate” aus. Es wird eine Operation vorgeschlagen: “Translate down”. Das “down” ist in blauer Farbe; wir können es also klicken und wählen “up”. (Sonst würde der Firmen-/Personenname rechts von der Adresse etc. stehen) – Abb. 5

Abb. 5: Spalten werden per “Translate” dupliziert und um eins nach oben verschoben.

Nun haben wir alles doppelt, nur in verschiedener Reihenfolge. Da kümmern wir später drum (7. Schritt), erst aber der

3. Schritt: Bei den Personen soll der Vorname in einer extra Spalte stehen. In diesem Fall steht der erste Personname in der ersten Spalte in Zeile 13. Dort wird genau hinter das Komma hinter dem Nachnamen geklickt. DataWrangler bietet wieder “Suggestions” und eine gelb eingefärbte Vorschau der möglichen Operation. In dem Fall wird gewählt: Split data between ‘,’ and any word – Abb. 6

Abb. 6: Nach- und Vorname werden per “Split” getrennt

!!! Bei jedem Schritt nicht vergessen: Grünen Kreis mit Pluszeichen klicken, um die Vorschau dann auch zu übernehmen.

4. Schritt: Nun geht es daran, die Adresse in Spalten aufzuteilen. Als erstes wird die Straße von der PLZ getrennt. In diesem Fall gibt es ein Problem. In Zeile 5, der Adresse der Alba AG, fehlt ein Leerzeichen zwischen dem Komma hinter der Hausnr. und der PLZ. Wir müssen diesen Spezialfall als Ausgangspunkt nehmen; klicken zwischen Komma hinter der Hausnr. und der PLZ. Jetzt erscheinten einige “Suggestions”. In dem Fall wird gewählt Split translate between ’ any number ,’ and ’ any number ‘. Siehe Abb. 7. Abb. 7: “Split” trennt Zelleninhalte; Orangemarkiertes wird bei Operation gelöscht

Übrigens werden Bestandteile des Datensatzes, die drohen durch Operationen verloren zu gehen, Orange hinterlegt – siehe Abb. 7

5. Schritt: Jetzt wird die PLZ von dem Ortsnamen abgetrennt. Hier kann man sich einer anderen Art des “Split”-Operators bedienen. Nach Klick genau hinter die PLZ lässt sich vorgeben, dass genau nach dem 5. Zeichen die Zelle geteilt werden soll: Split split3 between positions 5,5 – Abb. 8 Abb. 8: ”Split” erlaubt auch die Trennung nach einer bestimmten Anzahl von Zeichen

6. Schritt: Schließlich soll nun noch der Spendenbetrag in einer extra Zelle auftauchen. Es wird nun genau vor den Betrag geklickt und unter “Suggestions” ausgewählt: Split split5 between ’ any word ‘ and ’ any number ‘

7. Schritt: Nun müssen noch die überflüssigen Zeilen weg (Überbleibsel von Schritt 2). Klickt man auf Zeilennr. 2 etwa oder jede beliebige Zeile, die überflüssig ist, wird angeboten alle Zeilen zu löschen, bei denen Spalte x leer ist. In dem Fall also: Delete rows where split4 is null“- Abb. 9 (Das hätte auch schon nach dem 4. Schritt geschehen können). Abb. 9: Zeilen, die in der gleichen Spalte keinen Inhalt enthalten, lassen sich einfach löschen

8. Schritt: Jetzt lässt sich der Datensatz exportieren. Ein leicht zu übersehenes “Export” steht oben rechts im blauen Rand des “Script”-Bereichs – siehe Abb. 10 (übrigens ist in Abb. 10 auch gut zu erkennen, wie Operationen wieder gelöscht werden können: per rot umrandeten Minuszeichen).

Abb. 10: Unscheinbar: Export steht oben rechts im Script Bereich

Der Export (Abb. 11) bietet nun verschiedene Formate an (csv, txv, json)- alles wird markiert (Strg-A) und per Copy&Paste z.B. in Excel eingefügt. In diesem Fall sollte .tsv (tab seperated value) gewählt werden, da die Spendenbeträge Kommas enthalten.

Abb. 11: Export funktioniert wie der Import per Copy&Paste.

Der strukturierte Datensatz sieht dann so aus:

%CODE10%

Hier noch einmal ein Überblick über die gesamte Befehlskette für das Beispiel mit den Parteispenden. Ebenfalls lässt sich das Script als Befehlskette für Python oder Javascript exportieren – Abb. 12:

Abb. 12: Diese Handvoll Befehle strukturieren den eingelesen Datensatz

Soviel zu DataWrangler. Es bietet noch wesentlich mehr Möglichkeiten. Ein abschließender Tipp: Einfach ausprobieren und mit dem Datensatz herumexperimentieren. Die “Transpose” und “Fold”-Funktionen bspw. können sehr hilfreich sein.

Autor: Lorenz Matzat (OpenDataCity)

Anzeige

Wenn dir der Artikel gefallen hat, dann teile ihn über Facebook oder Twitter. Falls du was zu sagen hast, freuen wir uns über Kommentare

https://blogs.taz.de/datawrangler_tutorial_aus_gescanntem_dokument_wird_eine_tabelle/

aktuell auf taz.de

kommentare