Czym jeżdżą nasi wybrańcy, czyli rzut okiem na oświadczenia majątkowe połów i senatorów

Dzisiejszy wpis ma zawierać będzie trzy elementy, obywatelski, humorystyczny i techniczny.

Element obywatelski:

Jakiś czas temu przedstawiłem kilka wizualizacji danych dotyczących głosowań posłów z poprzedniej kadencji (dot glosowań,dot głosowań 2). Podsumowania przebiegu obrad sejmu to ważna sprawa, podsumowanie pracy posłów również. Zamiast pokazywać kto ile pieniędzy wydał na diety i paliwo może lepiej byłoby zbadać czy dany poseł na to paliwo i diety zapracował. Mało kto ma tyle czasu i zaparcia by czytać stenogramy z obrad, nawet podsumowania każdego z głosowań ilu za ilu przeciw to również nudnawa lektura. Z drugiej strony warto wiedzieć nad czym pracują nasi wybrańcy i kto jakie poglądy reprezentuje. Nie tylko od święta gdy podgrzewa się opinię publiczną debatą na temat definicji życia. Są na szczęście portale i stowarzyszenia działające w temacie tzw. smart voting. Jak by tego nie tłumaczyć tego terminu, ich celem jest przybliżenie działalności sejmu i senatu zwykłym ludziom po to by Ci lepiej wybierali w kolejnych wyborach lub po prostu tworzyli presję. Jedna z takich organizacji to stowarzyszenie art.61 (http://art61.pl/) prowadzące obywatelski portal informacyjny ,,Mam prawo wiedzieć’’ (http://mamprawowiedziec.pl). Jakiś czas temu otrzymałem od nich dwa zbiory danych, jeden dotyczył poglądów kandydatów a drugi oświadczeń majątkowych złożonych przez posłów i senatorów z poprzedniej kadencji. Ok, zastanówmy się co ciekawego można z takich danych pokazać.

Element humorystyczny:

Oświadczenia majątkowe nie są zbyt pasjonującą lekturą same w sobie. Można oczywiście skupić się na pokazaniu najbogatszych lub najbiedniejszych posłów ale nie ma w takim zestawieniu zabawy. Więc dziś zrobimy coś mniej poważnego ale bardziej zabawnego.

Zobaczymy jakie samochody posłowie i senatorowie zadeklarowali w ostatnim złożonym oświadczeniu majątkowym. Ponieważ oświadczenia wypisuje się ręcznie, portal ,,Mam prawo wiedzieć’’ poświęcił sporo czasu by te dane zdigitalizować do postaci nadającej się do dalszej obróbki. Nie sposób jednak uniknąć błędów i niespójności, poniższe wizualizacje dotyczą więc tylko dych oświadczeń w których udało się automatycznie zidentyfikować markę i model auta.

Na poniższej wizualizacji zaznaczono ile sumarycznie samochodów określonego modelu i marki zadeklarowali w oświadczeniach posłowie i senatorowie.

[Rys 1. Liczba aut określonych marek i modeli wskazanych w ostatnim oświadczeniu majątkowym przez posłów z 6 kadencji. Każdy prostokąt oznacza jedno auto. Szerokość i wysokość prostokąta jest proporcjonalna do rozmiarów auta. Jeżeli nie wyświetla się wersje svg zobacz tutaj wersję png.]

[Rys 2. Liczba aut określonych marek i modeli wskazanych w ostatnim oświadczeniu majątkowym przez senatorów z 7 kadencji. Każdy prostokąt oznacza jedno auto. Szerokość i wysokość prostokąta jest proporcjonalna do rozmiarów auta. Jeżeli nie wyświetla się wersje svg zobacz tutaj wersję png.]

 

Element techniczny:

Kod źródłowy użyty do wygenerowania tych rysunków znajduje się tutaj.

Dane do analizy zostały przekazane jako pliki Excelowe, po jednym na jednego posła/senatora (łącznie ponad 570 plików Excelowych). Pliki takie są czytelne dla człowieka ale do automatycznego przetwarzania nadają się tak sobie (różna liczba wierszy i kolumn, posklejane komórki, kolory, różne standardy oznaczania samochodów, różne informacje podawane nt. samochodu). Zazwyczaj do odczytania danych z plików w formacie xls używa się funkcji read.xls(). Ta funkcja jest dostępna w pakiecie xlsReadWrite, który wykorzystuje zewnętrzną bibliotekę dll napisaną w Delphi do odczytywania plików xls, oraz w pakiecie gdata, który wykorzystuje moduły Perla do konwersji formatu xls do formatu csv a później odczytuje dane przez funkcję read.csv. Niestety w przypadku otrzymanych plików żadna z tych funkcji nie dawała zadowalających wyników. W większości przypadków funkcje te odczytywały wyłącznie wartości NA. Najlepsze rozwiązanie udało się otrzymać z użyciem funkcji sqlFetch() i odbcConnectExcel() z pakietu RODBC. Do tego kilka różnych warunków i wyszukiwanie wzorców z użyciem funkcji grep() wystarczyło by zidentyfikować pole w którym w oświadczeniach majątkowych wpisane są posiadane samochody.

Kolejnym problemem jest niesamowita liczba literówek dotyczących wpisywanych nazw modeli aut. Np. w oświadczeniach posłów model Oktavia występował w 6 różnych formach łącząc różne możliwe wielkości liter oraz nazwę modelu zamiennie stosując litery c/k i w/v. Podobną liczbę wariantów uzyskała Corolla. Poza tym nazwy modeli i marek aut otoczone były różnymi informacjami, czasem o przebiegu, czasem o roku produkcji, czasem o wartości. Aby z tego morza tekstu wyłowić nazwy modeli wykorzystałem dane z allegro, które zebrałem jakiś czas temu (link). Można teraz szukać w tekście oświadczeń majątkowych słów, które przypominają nazwy modeli i marek znane z danych z allegro. Dzięki temu można odsiać większość śmieciowych słów a aby poprawnie odczytać większość modeli wystarczy juz tylko około 100 dodatkowych ręcznie wprowadzonych reguł.

Ostatnia rzecz dotyczy wielkości aut. Otóż stwierdziłem, że fajnie byłoby zaznaczyć jak duże są pokazywane auto. Nie każdy musi wiedzieć czy VW Polo jest większy czy mniejszy od Passata. Poza tym o ile dotąd czytelnik mógł zadawać sobie pytanie czy ta automatyzacja ma sens, czy nie lepiej byłoby przeczytać dane z oświadczeń i z użyciem ,,ludzkiego przetwornika’’ zbudować nową tabelkę z informacją o tym kto jakie auto ma, tak w sposób ręczny szukanie informacji o parametrach technicznych aut to prawdziwie syzyfowa praca. Więc napisałem mały programik parsujący strony www.motofakty.pl i odczytujący parametry techniczne różnych wersji i modeli aut. Na przedstawionej wizualizacji szary prostokąt oznacza wymiary 2m szerokości i 5m długości, a kolorowy prostokąt oznacza średnie wymiary danego modelu (parametry te różnią się dla rocznika i typu nadwozia).

Udało się uzyskać pełną automatyzację, dzięki której było łatwo wygenerować podobny wykres dla senatorów i będzie łatwo powtórzyć razem z nowymi oświadczeniami majątkowymi.