Veronika Kobylková: Program pro zjednodušení sběru a čištění dat


V mém závěrečném projektu jsem se rozhodla zabývat optimalizací procesu sběru a čištění dat v konkrétním malém podniku. Hned na první hodině Digitální akademie jsme probírali to, že závěrečná analýza a nádherně barevný dashboard je těch posledních 10% práce. Proč? Protože pokud data nebudete mít v dostatečné kvalitě, tak můžete o nějaké alespoň trochu vypovídající analýze pouze snít. 
Jako další otázkou se nabízí, proč jsem si vybrala zrovna projekt o čištění dat. Jedná se o to, že je to pro mě relativně velké téma a většinu své pracovní kariéry bylo mou hlavní zodpovědností udržovat data v požadované kvalitě. Co jsem dělala? Vedoucí výzkumného týmu v marketingu(callcentra a mystery shoppingy) a účetní. Prostě samé obory, kde často bývají hodně ošklivé a špatně pročištěné datasety. 

Cílem práce je zlehčit a zjednodušit v mnou zvolené firmě administrativní zátěž a procesy při sběru dat z oddělení prodeje a nákupu a zlepšení jejich kvality, aby byly do budoucna využitelné pro reporting a dashboardy. To jsem hodlala dosáhnout pomocí jednoduchého programu s formulářem stvořeném v Pythonu, zaměřeným na prevenci chyb při samotném sběru dat, který do Excelu zapíše data místo uživatele. 

Je možné, že si říkáte „No dobrý, to zní dobře, ale tohle mohla udělat všechno s Excelem a možná by to bylo i jednodušší.“. Hrozně ráda bych teď přišla s tím, že se mýlíte. Ale není to pravda. Mohla.
Hlavní důvod pro zvolení Pythonu byl to, že to bylo nejdál mé komfortní zóně (protože mám to štěstí, že máme na fakultě, kde studuji, Pavla Lasáka, který u nás učí Excel i SQL :-) )  a věděla jsem, že mi takhle ten projekt nejvíc dá a prohloubím si programátorské znalosti.

Proběhlo to nějak takto:
Mentor: "No, dobře, a v čem to chceš dělat? Tohle nutně nemusíš dělat v Pythonu, tohle bys zvládla i v Excelu."
Já: "Jo, já vím, ale já to chci dělat v Pythonu."

Popis dat:
V mém projektu se nejedná o konkrétní data a jejich analýzu jako takovou, jako spíš o to jak udělat to, aby sběr dat v malé firmě probíhal co nejjednodušeji a jak zamezit chybám, ke kterým při zadávání dat obvykle z nepozornosti dochází.

Postup práce:

Jak ale na to? Jak chcete zamezit chybám? Šlo by to určitě mnoha způsoby, třeba složitým programem se strojovým učením, který pozná, že když uživatel v rámci únavy napíše jako město Havl. Brod, že myslel úplně jasně Havlíčkův Brod, ale pokud jsem to měla dělat samostatně a stihnout to za měsíc, tak by to bylo hodně nerealistické. Dobře, asi je potřeba tu otázku přeformulovat: Jak chcete zamezit chybám co nejjednodušeji? 



Můj přístup byl takový, že jim to prostě všechno zakážu. Nedovolím uživateli udělat nic, co nechci a nabídnu mu našeptávač, aby se z toho, co si na něj vymyslím, nezbláznil. 
Měla jsem tedy základní myšlenku. Potom tedy zbývalo naučit se pomocí Pythonu dělat s Excelem  a stvořit grafické rozhraní.  K tomu pomohly dvě Pythonovské knihovny: Tkinter a Xlsxwriter.

Tkinter je modul (knihovna) pro programovací jazyk Python, která umožňuje v Pythonu vytvářet GUI, jinak zvané jako grafické uživatelské rozhraní. Zkrátka a dobře jednoduchá obyčejná grafická okna, jak je na ně každý zvyklý. Tkinter se dodává společně s instalací Pythonu a je tak dostupná všude, kde je Python. Funguje stejně jak na Linuxu i Windows, takže Váš program funguje beze změn. Tuhle knihovnu jsem zvolila pro tvoření GUI hlavně pro to, že ji v několika na sobě nezávislých zdrojích doporučovali jako nejlepší pro začátečníky.

Pokud bych to náhodou vysvětlovala špatně, zde je ukázka toho, jak něco takového může vypadat
A nesmí chybět také neméně důležitá část – jak to celé vypadá v Python kódu



Xlsxwriter je modul (knihovna) pro programovací jazyk Python pomocí které jde tvořit a zapisovat do excelovských souborů s příponou .xlsx.  Zvládá víceméně všechno, na co si v základu můžete vzpomenout, zapíše do souboru, naformátuje ho dle potřeby a umí s makry. Tuhle knihovnu jsem zvolila čistě pro to, že jsem k ní našla nejhezčí dokumentaci, jinak je modulů na práci s Excelem mnoho.

Nevím, jak přesně popsat, co se dělo dál, nicméně pokud bych měla popsat nějaký konkrétní postup programování, bylo by to nejspíš něco takovéhoto:
  1. Najdi si dokumentaci
  2. Prostuduj si dokumentaci
  3. Zkus s pomocí nastudovaných znalostí naprogramovat něco nového, co jsi ještě neuměla a vypadá to, že to potřebuješ do projektu
  4. Div se, proč ti to nejde, jak sis myslela, že půjde
  5. Sprav to
  6. Pokud to spravit nešlo, vrať se ke kroku dva a kombinuj ho s průběžným googlením
  7. Opakuj, dokud z toho nebudeš mít, co jsi chtěla

Co je výstupem projektu?
Neskutečně malé  na první pohled jednoduché formulářové okénko s velkým potenciálem pomoci firmě lépe připravit data pro reporting a nemít v tom takový nepořádek. Jsem si vědoma toho, že to nezní nějak velkolepě, ale pro firmu a kvalitu dat v jejich společnosti je to velký krok správným směrem. *

Důležitá zjištění, ponaučení a poznatky:
  • Musím se co nejdřív naučit verzovat v Gitu. Opomenout Git byla velká chyba
  • Už jsem došla do životní fáze, kdy jsem schopná si samostatně nastudovat dokumentaci od dvou modulů pro programovací jazyk Python a něco pomocí nich stvořit. Na holku, na kterou v roce 2014 v práci řvali, jak je možné, že nezná zkratku Ctrl + X je to docela pokrok a mám z toho radost
  • Pokud budu práci rozšiřovat dále, tak jak mám v plánu, tak na tvoření GUI nejspíš zkusím nějaký GUI builder (program, ve kterém si grafické uživatelské rozhraní sami interaktivně navrhnete a ono vám to vygeneruje konkrétní kód), pomocí kterého by to pro mě mohlo být jednodušší, nicméně s mentorem jsme byli dohodnutí, že v rámci projektu tohle dělat nebudu, že se nejdřív naučím, jak se to dělá, abych tomu rozuměla a nebyla to pro mě jen kouzelná krabička na generování uživatelských rozhraní

Kam by to mohlo směřovat potencionálně dál?

Na to můžu nabídnout takovou lehce šalamounskou odpověď, že úplně kamkoliv. Moje ambice směřují tam, že bych tuhle jednoduchou formulářovou záležitost ráda rozšířila na plnohodnotný interní informační systém na míru firmě, který jim pomůže zautomatizovat a zrychlit procesy ve firmě na tolik, že budou mít více času věnovat se ve firmě jiným oblastem, a ne řešit spoustu administrativního „balastu“.  Nicméně to je ještě hudba budoucnosti, protože by se jednalo například o vytvoření vlastního API, pomocí kterého bych chtěla extrahovat data z jejich skladových a účetních programů do svého výtvoru a pomocí ETL procesů tomu dala jednotný formát, což by se dalo použít pro složitější analýzy. Zkrátka k dokonalosti je toho potřeba ještě spoustu.
Současný směr projektu ale směřuje hlavně na přidání funkce, která do formuláře automaticky načte údaje z databáze ekonomických subjektů ARES pomocí XML, kvůli omezení chyb při ručním vyplňování údajů zákazníků a zavedení jednotného formátu zákaznických informací, a zavedení pravidelného automatického zálohování vytvořených dat do cloudu. Bohužel ani jednu z těchto dvou zmíněných věcí se mi ještě nepodařilo plně odladit a plně implementovat.

Závěr:

K čemu mi Digitální akademie byla? Přesně k tomu, co jsem si představovala, tedy k tomu, že jsem získala větší jistotu „v kramflecích“, když něco ohledně dat dělám. Šla jsem do Digitální akademie s tím, že díky studiu Podnikové informatiky a mé bývalé práci, kde jsem dělala výpomoc týmu marketingových analytiků, docela dost věcí v základních obrysech vím, ale ještě z nich neumím stvořit nic prezentovatelného, z čeho by si můj potencionální zaměstnavatel "sedl na zadek", jak pošlu životopis. To se asi moc nezměnilo, ještě si z toho nesednete. Ale díky akademii, projektu a stáži se k tomu blížím rychlým tempem, takže musím říct: Zatím. :-)

Projekt jako takový mi dal hlavně to, že jsem stvořila něco vlastního, co někomu konkrétnímu k něčemu bude a že jsem se naučila pracovat relativně samostatně na komplexním projektu. Což je hrozně fajn. Není ještě uplně dokonalý, spousta věcí mu chybí, ale je to základ a dá se s tím dál pracovat a nadále ho rozšiřovat.

Nakonec bych také chtěla poděkovat svému mentorovi, Vojtovi Žákovi ze společnosti Moravia, který mi pomohl projekt omezit do takových rozměrů, aby se zvládl reálně stihnout, ale zároveň k něčemu byl, a dodal mi (ať už vědomě či nevědomě) sebevědomí na to si věřit a skoro celé to kromě počátečního nakopnutí správným směrem zvládnout sama. A také Jirkovi Sucháňovi z Kiwi, který odpovídá na hloupé dotazy na Slacku i v jedenáct večer.


Informační zdroje:

*Firma si bohužel vyžádala, že si nepřeje konkrétní výstup a kód zveřejňovat, protože by to zveřejňovalo citlivé informace o  povaze jejich byznysu




Komentáře

  1. Profi a čte se to jako po másle:-)

    OdpovědětVymazat
  2. Pročištění dat je určitě potřeba, ale je třeba také myslet na čistotu kolem nás. Myslím si, že třeba takové pořízení vysokotlakého čističe , určitě nikomu neuškodí. Obzvlášť když celé dny jen sedíme za počítačem. Vyjít ven na vzduch a udělat si pořádek v hlavě i okolo domu je velice důležitý.

    OdpovědětVymazat

Okomentovat

Populární příspěvky z tohoto blogu

Barbora Junová: Podpora začínajícího podnikání zaměřeného na prodej výrobků a poskytování služeb

Petra Havlínová: Automatické zpracování podkladů pro vyhodnocení vybraných KPI

Kateřina Kolouchová & Lenka Tomešová: Vliv počasí na kriminalitu v New Yorku a Brně