DataWrangler Tutorial – Aus gescanntem Dokument wird eine Tabelle

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.


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 erkenne, 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:

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.

8 Gedanken zu „DataWrangler Tutorial – Aus gescanntem Dokument wird eine Tabelle“

  1. Hi Lorenz, sehr gutes Tutorial. Vielen Dank dafür. Frage am Rande: Habt ihr zur Datenbereinigung auch mal Google Refine in Betracht gezogen oder fiel die Entscheidung direkt auf DataWrangler?

    1. @Tobias – Danke für die Blumen. In dem Fall wäre Refine eine Nummer zu groß gewesen. Das bietet sich ja bspw. bei Datensätzen an, die Bezeichnungen enthalten, die sich ähneln, aber immer unterschiedlich geschrieben werden. Wenn mir mal ein geeigneter Datensatz über den Web läuft, wird daraus dann auch ein Tutorial.

  2. Vielen Dank auch von mir.

    Wenn ich ein und die selbe Informationen aufgrund der Gegebenheiten auf zwei verschiedenen Arte extrahieren musste und in bestimmten Zeilen in Spalte 2, in anderen in Spalte 3 stehen habe (andere Zellen jeweils leer) – kann ich die dann irgendwie zusammenführen?

  3. Hallo und vielen Dank für diesen schönen Artikel. Weißt du, ob die Spendenberichte anderer Parteien (z.B. NPD) auch verfügbar sind? Ist die Veröffentlichung des Bundestages an das Mitwirken der Partei in der Regierung geknüpft? Wie sieht es auf Bundeslandebene aus? Mit freundlichem Gruss, Tobi

  4. Hi, ja der jährliche Rechenschaftsbericht ist Pflicht aufgrund BPartG § 24 Rechenschaftsbericht. Eine Frage hätte ich, sind eventuell auch die Daten dieser Rechenschaftsberichte als Excel Tabelle online verfügbar? Also nicht nur die Parteispenden, die die TAZ analysiert hat? Die älteren Berichte sind alle noch abgescanned, ich arbeite an einer Arbeit über Wahlkampfausgaben und wenn die online verfügbar wären spart mir das locker mal zwei Tage Arbeit. Für Hinweise wäre ich sehr dankbar !

    1. Nicht dass ich wüsste. Um die durchsuchbar zu machen, dürfte es reichen, sie bei Google Docs hochzuladen. Da wird bei pdf Schrifterkennung (OCR) gemacht.

Schreibe einen Kommentar zu Sebastian Antworten abbrechen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert