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.
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:
- Najdi si dokumentaci
- Prostuduj si dokumentaci
- 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
- Div se, proč ti to nejde, jak sis myslela, že půjde
- Sprav to
- Pokud to spravit nešlo, vrať se ke kroku dva a kombinuj ho s průběžným googlením
- 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
Profi a čte se to jako po másle:-)
OdpovědětVymazatProč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