Moje hora osudu


AUTOMATIZACE ANALÝZY A VIZUALIZACE ROZHODOVACÍ ČINNOSTI SOUDU

Cílem tohoto projektu bylo zautomatizovat činnosti, které jsou v současnosti pracné, časově náročné a hlavně prováděny manuálně. 

Na začátku (ne)byl nápad

Zájmy mám různorodé, ale fantazii žádnou, tudíž vymyslet něco zajímavého pro mne nebylo lehké. 

Když jsem ale týden před začátkem Akademie v práci otrocky naklikávala podkladové statistiky, uvědomila jsem si, že tohle je přesně ta věc, která mne k datové analýze vlastně dovedla a která jde zpracovávat efektivněji. Mnohem efektivněji.

Takže snaha vymyslet něco revolučního šla bokem, a rozhodla jsem se věnovat tomu, co znám nejlépe.


Příprava projektu

Na první konzultaci jsem mému mentorovi více přiblížila svoji práci, resp. tu její analytickú stránku, kterou bych v rámci projektu ráda zefektivnila, a Luboš mi zas vysvětlil, jak budeme postupovat dál.

Představil mi tři různé varianty, které přicházely v úvahu:

  1. Dostanu plný přístup do interní databáze (pro čtení), naučím se napojit se do ní prostřednictvím Power BI, a vybraná data budu dále analyzovat a zpracovávat přímo v nástroji.
  2. Data budu dostávat pravidelně, třeba jednou za měsíc, přičemž v Power BI budu mít připravené vypracované reporty, které se vždy po aktualizaci dat rovněž aktualizují.
  3. Nedostanu přístup nikam a nebudu dostávat nic a pracovat budu pouze s (hodně okřesaným) Excelem, který jsem schopná si ze systému vyexportovat sama.

U každé varianty jsme s mentorem prošli celý proces, který by mne případně čekal, doporučil mi skvělý online kurz o Power BI, který bych si mezičasem mohla studovat, vysvětlil mi, co si mám pro další práci rozmyslet a pozval mne i do jejich interní Akademie Power BI, abych načerpala inspiraci a nějaké klíčové vědomosti ještě předtím, než budeme mít celodenní kurz v rámci samotné Digitální akademie (bohužel pro mne až předposlední týden).

Čekání na data

Následovala žádost o přístup do interní databáze, schvalovací proces a čekání na samotný přístup.

Čekání tak dlouhé, že navzdory neskonalému optimismu, který jsem v sobě živila od prvního dne, se situace nakonec vyvrbila tak, že jsem se musela pro práci na projektu uspokojit s variantou číslo 3. 

Luboš moje sklamání zmírnil vysvětlením, že i vypracování tohoto Proof of Concept pro mně bude užitečné a můžu pak v práci a zdokonalování projektu pokračovat i nadále.

DATA

Podkladem pro moji práci tedy byly excelovské tabulky, které jsem si exportovala z interního informačního systému.

Mezikrokem ke skutečné práci pak byla ještě konverze do csv souborů (protože soubory pocházející z Windowsu 2007 nejsou ideálním podkladem pro práci v Power BI ve Windowsu 10, což znamená, že jsem 40 souborů musela přeuložit).

Moje data pozůstávala z následujících informací:

  • identifikátor věci
  • soudce, který věc řešil
  • datum, kdy věc na soud napadla
  • účastníci
  • forma rozhodnutí
  • způsob rozhodnutí
  • datum rozhodnutí
  • krajský soud, proti kterému účastník protestuje (zjednodušeně)
  • identifikátor napadeného rozhodnutí krajského soudu
  • datum napadnutého rozhodnutí krajského soudu
  • plus další tři irelevantní údaje.

Po importovaní 40 tabulek zahrnujících údaje za 3 roky jsem si data potřebovala připravit pro další práci. Čistění v pravém smyslu slova nebylo až tak potřeba, jelikož exportovaný Excel poskytuje dostatečně jednotné a již čisté výsledky. Bylo však nutné určité části upravit, aby bylo možné pracovat dále a více do hloubky. 

Níže uvádím pro ilustraci ty nejdůležitější kroky (které popsané vypadají mnohem jednodušeji, než jak vypadaly ve skutečnosti), z prostorových důvodů (a z důvodu prevence smrti udávením zbytečnými detaily) jsem se rozhodla nevyužít vyčerpávající výčet.


Příprava dat

Jeden z nejdůležitějších kroků pro umožněné pozdější analýzy dle jednotlivých agend a senátů bylo rozdělení identifikátora - spisové značky. Spisová značka (unikátní označení každého případu) má formát 1 X 1/2017 - první číslo je číslo rozhodujícího senátu, písmeno označuje agendu, které se věc týká, číslo před lomítkem je pořadové číslo v roku, kdy věc napadla (rok za lomítkem).

Rozdělení sloupce spisové značky bylo relativně jednoduché (split by delimiter - space), potíž nastala u spisových značek, kde se neuvádí číslo senátu. Zde jsem musela doplnit před celou spisovou značku nulu, aby při dělení nezůstalo označení agendy v sloupci, kde měly být jen čísla senátů.

Sjednotila jsem názvy krajských soudů, protože u tří bylo uvedeno jen označení pobočky (což vyplývá ze specifického rozvržení krajských soudů v ČR, které mimochodem neodpovídá rozvržení samosprávných krajů, ale územních krajů - ruku na srdce, uvědomili jste si někdy, že existují dvojí kraje, resp. jste taky cizinec a nikdy vás to ani nenapadlo?).

Následně jsem se pokusila rozdělit sloupec s účastníky, aby bylo později možné analyzovat, jak jsou úspěšní, jak často se na nás obrací, v jakých věcech atd. Na prvním místě je vždy uveden stěžovatel, pak za čárkou odpůrce. Jméno a příjmení stěžovatele jsem oddělila se slušným úspěchem, použitím delimiteru čárka, ale odpůrce zůstal zabordelený, protože za čárkou často zůstali ještě třeba akademické tituly stěžovatele, nebo v případě obchodní společnosti její právní forma atd. Tato pole jsem se tedy rozhodla zatím nevyužít, mnohem lepší výsledky by byly totiž dosaženy napojením přímo na databázi, kde jsou obě strany sporu evidovány samostatně (případně mnohem intenzivnějším pročištěním dat, na které mi bohužel pro tentokrát nevyšel čas).

Jelikož soud rozhoduje množství věcí v různých agendách a některé jsou jen okrajové, případně velice specifické (a mohly by značně zkreslovat výsledky), v novém sloupci jsem je rozdělila do čtyř typů či skupin, a to následujícím sledem 20 vnořených if funkcí:

Typ agendy = IF(DA_projekt[Agenda]="Afs";"kasační";IF(DA_projekt[Agenda]="As";"kasační";IF(DA_projekt[Agenda]="Azs";"kasační";IF(DA_projekt[Agenda]="Ads";"kasační";IF(DA_projekt[Agenda]="Ars";"kasační";IF(DA_projekt[Agenda]="Komp";"specializovaná";IF(DA_projekt[Agenda]="Konf";"specializovaná";IF(DA_projekt[Agenda]="Kss";"kárná";IF(DA_projekt[Agenda]="Ksz";"kárná";IF(DA_projekt[Agenda]="Kse";"kárná";IF(DA_projekt[Agenda]="Kseo";"kárná";IF(DA_projekt[Agenda]="Aprk";"specializovaná";IF(DA_projekt[Agenda]="Aprn";"specializovaná";IF(DA_projekt[Agenda]="Pst";"specializovaná";IF(DA_projekt[Agenda]="Vol";"specializovaná";IF(DA_projekt[Agenda]="Na";"vedlejší";IF(DA_projekt[Agenda]="Nad";"vedlejší";IF(DA_projekt[Agenda]="Nao";"vedlejší";IF(DA_projekt[Agenda]="Nk";"vedlejší";IF(DA_projekt[Agenda]="Ns";"postoupeno NS";""))))))))))))))))))))

Na výše uvedené jsem přišla sama, na což jsem byla patřičně pyšná, obzvláště proto, že jsem na to přišla pythoním přemyšlením. Pokud ale programujete, tak víte, že ke stejnému výsledku lze dojít různými způsoby, více či méně komplikovanými, a i zde existuje jiný způsob, který mi později poradil Luboš a funguje stejně dobře (s použitím funkce switch)

Nové sloupce jsem si přejmenovala a logicky uspořádala, tři zcela nepotřebné jsem vymazala (pár takových, u kterých jsem naznala, že do budoucna by zajímavé mohly být, jsem si jen schovala), všechny změny uložila a data úspěšně naloadovala.


Co budeme analyzovat?

Základní věci, které se v rámci činnosti soudu sledují jsou:

  • nápad, tedy kolik věcí je soudu předloženo k řešení v určitém časovém období,
  • počet vyřízených věcí v konkrétním časovém úseku
  • počet věcí, které jsou v sledovaném období nevyřízené
  • délka řízení u věcí, které již byly s konečnou platností rozhodnuté;
  • a to vše s přihlédnutím na jednotlivé agendy, jednotlivé senáty a jednotlivé soudce.

Počet rozhodnutých věcí jsem nastavila jako:

Rozhodnuté = COUNTA(DA_projekt[Forma rozhodnutí]) - COUNTBLANK(DA_projekt[Forma rozhodnutí])

a počet nerozhodnutých jako:

Nerozhodnuté = COUNTBLANK(DA_projekt[Datum rozhodnutí])

Délku řízení jsem pak vypočítala následovně:

Délka řízení = IF(ISBLANK(DA_projekt[Datum rozhodnutí]);BLANK();IF(ISBLANK(DA_projekt[Došlo]);BLANK();DA_projekt[Datum rozhodnutí]-DA_projekt[Došlo]))

Protože někteří soudci mají s ohledem na jiné přidělené agendy tzv. snížený nápad (tedy napadá jim dle předem určených pravidel méně věcí než ostatním), není vhodné jejich výkonnost hodnotit pouhým vzájemným porovnáním počtu vyřízených věcí. Nastavila jsem si proto novou metriku "míra rozhodnutosti", kde je jejich výkon stanoven jako procentní hodnota:

Míra rozhodnutosti = [Rozhodnuté] / [Nápad]

Později (při vizualizaci) se ale ukázalo, že tato metoda neposkytuje žádané výsledky (objevil se mi tam soudce se stoprocentní úspěšností, což je při vší úctě podezřelé), jelikož jsem si neuvědomila, že v některých věcech sice rozhodnutí zaznamenáno je, ale není to konečné rozhodnutí (typicky například když soud účastníka vyzývá k zaplacení soudního poplatku, nebo třeba k doplnění argumentace atd.). Můj vzorec tudíž vykazoval jako rozhodnuté i věci, které ještě skutečně finálně rozhodnuté nebyly. Z toho důvodu jsem tedy vytvořila nový sloupec Finální rozhodnutí, v němž jsem rozhodnuté věci oddělila od nerozhodnutých, a následně upravila všechny počítané sloupce:

Rozhodnuté = CALCULATE(COUNTROWS(DA_projekt);DA_projekt[Finální rozhodnutí]="ano")

Nerozhodnuté = CALCULATE(COUNTROWS(DA_projekt);DA_projekt[Finální rozhodnutí]="ne")

Délku řízení jsem pak místo počítaného sloupce přidala jako conditional column přímo v query editoru

"Added Conditional Column" = Table.AddColumn(#"Replaced Value96", "Délka řízení", each if [Finální rozhodnutí] = "ano" then [Datum rozhodnutí] - [Došlo] else "").

Zde jsem si opět uvědomila, kolika různými způsoby se dá dopracovat k témuž výsledku. Ukázalo se totiž, že conditional column je superužitočná funkce, kterou jsem mohla využít i předtím u několika desítek hodnot (místo toho jsem v duplicated column používala dokola několikrát replace), ale tak poučila jsem se opět na vlastní chybě že..


VIZUALIZACE

Říká to každý a je to pravda - ta nejkrásnější část práce s daty, ke které se ale dostanete až na úplném konci, je už jen třešničkou na dortu (polevou na cupcaku), zabere nepoměrně méně času, a často se stane, že lidé jen zřídka ocení tu nekonečnou práci, která k tomuto krásnému výsledku vedla. 

Tak v první řade ty barvičky. Estetickou válku mezi mou touhou využít všechny svoje oblíbené, krásné a výrazné barvy a snahou dodržat nějakou tu "firemní kulturu" nakonec vyhrály soudní barvy, tedy padesát odstínů tmavěmodré. 

První report je Celkový přehled. Jeho úkolem je zobrazit souhrn všech věci, které soud řeší, a umožnit je rozřadit a vizualizovat dle data napadení, dle typu agendy (jediný zakázaný koláčový graf, SLIBUJI - vyhodnotila jsem ho jako přijatelný, jelikož zobrazuje jen 4 skupiny, jejichž hodnoty jsou dostatečně odlišné) a se slicerem pro výběr i jedné konkrétní agendy.

Dalším reportem je Přehled kasační agendy - je to nejdůležitější a nejsledovanější typ agendy u nás (taktéž nejčastější, jak ukazuje největší pole v donutu výše), takže zde a dále jsem proto využila i filtrování na úrovni celé stránky a celého reportu.

Vizualizace ukazuje vývoj nápadu v čase, společně s trendline a predikcí, počty rozhodnutých a nerozhodnutých věcí, přičemž u rozhodutých věcí je navíc i treemap, znázorňující způsob rozhodnutí. Nad celou stránkou je pak opět slicer pro výběr konkrétní agendy.  

Snažila jsem se vložit i mapu s přehledem jednotlivých krajů a toho, jak který v řízení u nás obstojí, jak často jejich rozhodnutí účastníci napadají atd., ale výsledek neodpovídal mým představám. Zkusila jsem využít i synoptic designer, ale ani tam mi to zatím nevyšlo, tudíž mapka možná až někdy příště.

Přehled jednotlivých soudců je důležitým nástrojem, který umožňuje sledovat výkonnost jednotlivých soudců a dále analyzovat případné příčiny rozdílů. 

Report obsahuje dropdown slicer pro výběr konkrétního soudce a další pro výběr konkrétní agendy, v grafech přehled nápadu společně s trendline a predikcí, přehled počtu rozhodnutých věcí, v menších panelech vlevo je pak vypočítaná "míra rozhodnutosti" v gauge grafu a počet nerozhodnutých věcí na kartě.

Úplně stejný report jsem pak připravila i pro jednotlivé senáty.


Jěště něco?

Když jsem přístup do cvičné databáze konečně dostala, bylo už poměrně pozdě ji s úspěchem zakomponovat do projektu, to však neznamená, že jsem přístup nevyužila. 

S použitím základů SQL jsem si prošla všechny tabulky, které v databázi mám, identifikovala jsem primární a cizí klíče, které tabulky v datovém modelu propojují, zkusila jsem si model i nakreslit. 

V interním informačním systému jsem si dohledala, jaké informace odpovídají kterým tabulkám a které jsou více a které méně využitelné pro moji případnou budoucí práci a rozšiřování projektu. A věřím, že budu moct v práci pokračovat a svoje základní znalosti dále rozšiřovat, protože jak uvádím níže, největší potenciál vidím až v případněm přímém napojení na databázi.


Jaký bude mít tento projekt přínos?

Je potřeba si říct, že i přesto, že mi projekt ani náhodou nevyšel tak, jak jsem si ho původně malovala (Luboš to nazval prototyp, nebo Proof of Concept, ale přiznám se, že se mohlo stát, že já jsem to někdy označovala jako variantu primitivní), umí úplně všechno, co umět měl plus dokonce i něco málo navíc. 

Hlavním cílem bylo zautomatizovat proces tvorby různých statistických přehledů, což se mi určitě podařilo. Teď už nebude nikdo muset do systému naklikávat odkdy, dokdy, kdo a co a opakovat to několik desítek krát, vše máme v Power BI předpřipraveno a stačí jen postupně doplňovat podkladová data. 

Můj projekt tedy lze využívat v každodenní práci soudu, poslouží jako přehledný a uživatelsky přívětivý nástroj pro kontinuální kontrolu a informovanost o stavu agend a práci na soudě. Tu interaktivitu si musí zamilovat každý!

Navíc výsledky, které nabízí, jsou možná i o něco přesnější a reprezentativnější, než za použití dosavadních metod (zejména díky zavedení kalkulace míry rozhodnutosti, možnosti zobrazování trendline a predikcí).


Kromě výše uvedených materiálních přínosů je toho ale spousta, co projekt přinesl i mně osobně.

Naučila jsem se trpělivosti, už to byla velká životní zkouška. 

Naučila jsem si vážit si sebemenších pokroků a úspěchů - při práci s daty se jich rozhodně nedočkáte nepřiměřeně moc!

Konečně jsem se naučila nebát se zeptat, byť i na úplnou blbost. Google toho totiž ví hodně, ale ne vždy to umí podat tak, aby to každý konzument pochopil, takže je dobré být schopna odložit hrdost stranou a věci si nechat normálně vysvětlit.

Pythoní myšlení, nebo obecně programovací. A taky Data Thinking!!  Nevěřila jsem, že se to stane, a došlo k tomu tak nějak podvědomě a nepozorovaně, ale při práci jsem si mnohokrát uvědomila, že přemýšlím úplně jinak, na problémy se dívám taky jinak, a s řešením se neuspokojím jen s prvním, které funguje, ale snažím se věci více zjednodušovat a zefektivňovat. 

Osvědčilo se mi také nevěřit - ani datům ani sama sobě, vše si kontrolovat, ověřovat a testovat, protože základní axiom, o kterém nám na úplně první hodině říkal již Giuliano, platí bez výjimek (vždycky se něco pose*e).

Získala jsem obrovské zkušenosti s Power BI - nástrojem tak skvělým, že nechápu, jak jsem o něm doposud neslyšela. Ruka v ruce s tím jdou i základní znalosti jazyků M a DAX (love DAX a našeptávač, hate M, který se mi ani nesnažil pomáhat) a SQL, které budu dále pilovat ve snaze propojit celý svůj projekt přímo s databází..

Jestliže ale tento projekt něco má, 


tak jsou to takovéhle MRAKY potenciálu do budoucna


a nápadů, jak jej rozšiřovat dále.

Projekt v současné podobě, tedy jako Proof of Concept, stojí na datech, která jsou z informačního systému exportována. Pokud by se ale dalo napojit přímo na vnitřní databázi, bylo by možné kromě již nastavených měřítek analyzovat třeba samotné stěžovatele a odpůrce, jejich skladbu, jak často a s jakými věcmi se na soud obracejí, jejich úspěšnost (a třeba by už pak nikdo nikdy nemusel jako otrok manuálně procházet desetitisíce záznamů v excelu ve snaze zjistit, jak úspěšná je u nás veřejná správa na straně stěžovatele, přičemž výsledkem několikadenní práce by byly dvě působivé tabulky o velikosti asi 5x3 polí).

Projekt momentálně analyzuje jen to, čemu říkáme soudní výkon; v našem informačním systému však máme i další neméně důležitý modul evidence judikatury (zde není možnost exportu výsledků, tudíž nebylo bohužel možné vypracovat ani prototyp analýzy), který rozhodně stojí za zpracování, a to jak ze statistického úhlu pohledu, tak i z pohledu vzájemné provázanosti rozhodnutí. Evidujeme zde kupříkladu na která rozhodnutí z minulosti soud navazuje, zda právní názor potvrzuje, či mění, jakých zákonných ustanovení se týká atd. Pro právní analýzu by takovéto zpracování mělo speciální význam, obzvláště s využitím i textové analýzy. Je to i oblast, které se já osobně v práci věnuji, a také moje prvotní motivace zpracovávat projekt zaměřený na činnost soudu.

Soud momentálně připravuje nové webové stránky společně s vyhledávačem judikatury jak pro vnitřní tak i vnější uživatele, který by měl být spolehlivější, výkonnější a mnohem komplexnější než ten, který máme na webu momentálně; až se tento projekt spustí, bude určitě zajímavé analyzovat, jak jej obě skupiny uživatelů vytěžují a v návaznosti na to pak navrhovat možná vylepšení či další optimalizace. 

V roce 2017 jsme začali publikovat Sbírku rozhodnutí soudu místo tištěné podoby pouze elektronicky. Pohyb na stránkách e-Sbírky monitorujeme prostřednictvím Google Analytics, ale hlouběji tato data zatím neanalyzujeme. Soud se rovněž několik týdnů objevuje také na twitteru - po delší době bude jistě zajímavé analyzovat pohyb také na této platformě.

A pokud by se v budoucnu povedlo zavést jednu společnou síť pro celou justici, kde by byla soustředěná veškerá rozhodovací činnost, prostřednictvím datové analýzy společně s textovou analýzou by to právníkům otevřelo úplně nové a netušené obzory.


Použité zdroje

  • Analyzing and Visualizing Data with Power BI - online kurz na edx.org
  • Akademie Power BI - interní workshop v Intelligent technologies
  • Microsoft Power BI community - obrovská studnice vědomostí a již vyřešených problémů z praxe (community.powerbi.com)
  • google.com - na SQL for dummies plus vše ostatní

    Poděkování

    Závěrem bych už jen ráda z celého srdce poděkovala:

    Lubošovi Bednářovi, mému skvělému mentorovi, který nestrácel nadhled ani když já už jsem se hroutila, vždy si na mne našel čas a byl trpělivý i když se třeba ukázalo, že po dvou měsících nechápu, co to je faktová tabulka.

    Mému manželovi, který mne po celou dobu podporoval a snášel vše, co Digitální akademie do běžného života přináší (i co z něj odnáší), v dobrém i zlém, přesně jak slíbil.

    A v neposlední řadě holkám z Czechitas, za to že jsou, že něco tak skvělého jako je Digitální akademie vůbec vymyslely a realizují, a taky za to, že mne vybraly.

    A Marti, která nám všem vyžebrala prodloužení deadlinu ❤

    Lucia Vargová

    Vytvořte si webové stránky zdarma! Tento web je vytvořený pomocí Webnode. Vytvořte si vlastní stránky zdarma ještě dnes! Vytvořit stránky