čtvrtek 28. ledna 2016

Závěrečný projekt

Dlouho jsem přemýšlela, jaká data zvolit, jaké vůbec vybrat téma. Nemám ráda tato libovolná zadání, takže jsem hned věděla, že to pro mě bude oříšek a nejvíce času mi zabere vymyslet, z čeho vůbec budu čerpat. Nakonec se ale zadařilo, vzpomněla jsem si na krásné časy, kdy jsem psala svoji bakalářskou práci a téma bylo na světě - Audioknihy! 

Nejdříve jsem si s pomocí stránek Audiotéka.cz a nástroje Kimono vytvořila API z titulu, autora a ceny audioknih. API jsem nastavila na měsíční aktualizování. Po dlouhém čekání, kdy se mi konečně vytvořilo API, jsem si z nabízených možností vybrala formát CSV a v něm jsem si celý soubor stáhla (Kimono dále nabízí také formát RSS a JSON). 










Výsledný CSV soubor bylo zapotřebí pročistit a k tomu jsem zvolila nástroj OpenRefine (dříve Google Refine). Některé řádky bylo nutné smazat, některé pouze poupravit. U všech položek jsem si pohrála s formátem buněk, přejmenovala sloupce a sloupec s názvem Cena upravila tak, abych měla zvlášť číslice a zvlášť text (v tomto případě ,,Kč").
V této části jsem se také pokusila vytvořit regulární výraz k přečíslování řádků. Bohužel se mi to nepodařilo. To mě utvrdilo v tom, že regulární výrazy opravdu nebudou moje parketa. :-) Tudíž jsem využila možnosti OpenRefine a data upravila pomocí tohoto nástroje. Po dokončení čištění dat jsem tabulku vyexportovala do Excelu.





Pro vytvoření grafů jsem využila Power BI. Jako zdroj dat jsem použila Excelový soubor, o kterém jsem se zmínila výše. Nástroj Power BI jsem si oblíbila pro svoji přehlednost a relativně i jednoduchost. Grafy, jak je vidět níže, jsem vytvořila dva. Na prvním z nich jsou znázorněny ceny jednotlivých titulů, na druhém pak lze vidět množství prodeje jednotlivých titulů.







Závěrem použiji nástroj, který jsem měla v plánu použít již na začátku, ovšem dělalo mi malinko problém napasovat jej na téma, které jsem si zvolila :-D
Nakonec se to však podařilo. Z bestselerů, které jsem vytáhla ze stránek Audiotéka.cz jsem si vybrala jeden - Mnich, který prodal své ferrari. Největším problémem bylo najít originální text této knihy, práce s Voyant Tools už byla relativně bezproblémová. 

V první řadě jsem si vytvořila klíčová slova knihy, z kterých jsem odstranila spojky, předložky a podobně. Následně jsem vybrala několik slov, které jsem si zobrazila v grafu, aby byl jejich výskyt ještě patrnější. Logicky jsem zvolila slovo ferrari, Julian (jméno hlavní postavy) a monk (mnich). Vzhledem k tomu, že kniha je o sebepoznání a o cestě ke smysluplnému a vyrovnanému životu, vytvořila jsem na závěr graf, kde se prolíná jméno hlavní postavy a slovo mind (mysl).
Klíčová slova knihy

Výskyt slova ferrari


Výskyt slova Julian 

Výskyt slova monk


















Prolínání slov Julian a Mind (mysl)











středa 9. prosince 2015

Úvod do R2

Tímto úkolem byl nadšen hlavně můj přítel. Tím nechci říct, že by jej dělal za mě, ale hodně mi s ním pomohl a vlastně díky němu jsem poměrně dost věcí i pochopila. Dalším velkým pomocníkem mi byly tyto webové stránky, kde jsem našla hodně potřebných věcí.
Bohužel ani po hodinách práce nemůžu tvrdit, že bych s tímto nástrojem dokázala levou zadní pracovat :-)

Celá práce se skládala z devíti úkolů, které podle mě byly odlišně náročné. 

Zápis úkolu v .R:


# 1. Udelejte z nich data.frame
companiesData <- data.frame(company, fy, profit, revenue)
colnames(companiesData) = c("company", "fy", "profit", "revenue")
str(companiesData)
# ---------------------------------------
# 2. Prevedte fy na factor.
companiesData$fy <- factor(fy, ordered = TRUE)
str(companiesData)
# ---------------------------------------
# 3. Vypiste jen hodnoty pro firmu Apple
companiesData[company == "Apple",]
# ---------------------------------------
# 4. Pridejte dalsi sloupec margin, ktery bude obsahovat marzi v procentech
margin = c(companiesData$profit/companiesData$revenue*100)
companiesData[5] = margin
colnames(companiesData)[5] = c("margin")
companiesData
# ---------------------------------------
# 5. Pomoci funkce max() najdete historicky nejvetsi marzi
max(companiesData$margin)
# ---------------------------------------
# 6. Jaka firma v jakem roce ji mela?
companiesData[margin == max(companiesData$margin), 1:2]
# ---------------------------------------
# 7. Vytvorte novy data.frame obsahujici jen data pro apple
apple <- companiesData[company == "Apple"]
apple
apple <- companiesData[company == "Apple",]
apple
# ---------------------------------------
# 8. Vykreslete sloupcovy graf revenue pro Apple po letech s nadpisem "Revenue of Apple by year"
barplot(apple$revenue, main = "Revenue of Apple by year", names.arg= apple$fy, col = "cyan")
# ---------------------------------------
# 9. Do grafu vepiste vodorovnou modrou caru, ktera urcuje revenue google v roce 2012
h = companiesData$revenue[companiesData == "Google" & companiesData$fy == "2012"]
h
abline (h, 0, col = "blue")


Zápis z konzole:

# 1. Udelejte z nich data.frame
> companiesData <- data.frame(company, fy, profit, revenue)
> colnames(companiesData) = c("company", "fy", "profit", "revenue")
> str(companiesData)
'data.frame': 9 obs. of  4 variables:
 $ company: Factor w/ 3 levels "Apple","Google",..: 1 1 1 2 2 2 3 3 3
 $ fy     : num  2010 2011 2012 2010 2011 ...
 $ profit : num  14013 25922 41733 8505 9737 ...
 $ revenue: num  65225 108249 156508 29321 37905 ...
> # ---------------------------------------
> # 2. Prevedte fy na factor.
> companiesData$fy <- factor(fy, ordered = TRUE)
> str(companiesData)
'data.frame': 9 obs. of  4 variables:
 $ company: Factor w/ 3 levels "Apple","Google",..: 1 1 1 2 2 2 3 3 3
 $ fy     : Ord.factor w/ 3 levels "2010"<"2011"<..: 1 2 3 1 2 3 1 2 3
 $ profit : num  14013 25922 41733 8505 9737 ...
 $ revenue: num  65225 108249 156508 29321 37905 ...
> # ---------------------------------------
> # 3. Vypiste jen hodnoty pro firmu Apple
> companiesData[company == "Apple",]
  company   fy profit revenue
1   Apple 2010  14013   65225
2   Apple 2011  25922  108249
3   Apple 2012  41733  156508
> # ---------------------------------------
> # 4. Pridejte dalsi sloupec margin, ktery bude obsahovat marzi v procentech
> margin = c(companiesData$profit/companiesData$revenue*100)
> companiesData[5] = margin
> colnames(companiesData)[5] = c("margin")
> companiesData
    company   fy profit revenue   margin
1     Apple 2010  14013   65225 21.48409
2     Apple 2011  25922  108249 23.94664
3     Apple 2012  41733  156508 26.66509
4    Google 2010   8505   29321 29.00651
5    Google 2011   9737   37905 25.68790
6    Google 2012  10737   50175 21.39910
7 Microsoft 2010  18760   62484 30.02369
8 Microsoft 2011  23150   69943 33.09838
9 Microsoft 2012  16978   73723 23.02945
> # ---------------------------------------
> # 5. Pomoci funkce max() najdete historicky nejvetsi marzi
> max(companiesData$margin)
[1] 33.09838
> # ---------------------------------------
> # 6. Jaka firma v jakem roce ji mela?
> companiesData[margin == max(companiesData$margin), 1:2]
    company   fy
8 Microsoft 2011
> # ---------------------------------------
> # 7. Vytvorte novy data.frame obsahujici jen data pro apple
> apple <- companiesData[company == "Apple"]
> apple
    company   fy profit
1     Apple 2010  14013
2     Apple 2011  25922
3     Apple 2012  41733
4    Google 2010   8505
5    Google 2011   9737
6    Google 2012  10737
7 Microsoft 2010  18760
8 Microsoft 2011  23150
9 Microsoft 2012  16978
> apple <- companiesData[company == "Apple",]
> apple
  company   fy profit revenue   margin
1   Apple 2010  14013   65225 21.48409
2   Apple 2011  25922  108249 23.94664
3   Apple 2012  41733  156508 26.66509
> # ---------------------------------------
> # 8. Vykreslete sloupcovy graf revenue pro Apple po letech s nadpisem "Revenue of Apple by year"
> barplot(apple$revenue, main = "Revenue of Apple by year", names.arg= apple$fy)
> # ---------------------------------------
> # 9. Do grafu vepiste vodorovnou modrou caru, ktera urcuje revenue google v roce 2012
> h = companiesData$revenue[companiesData == "Google" & companiesData$fy == "2012"]
> h
[1] 50175
> abline (h, 0, col = "blue")
> # 8. Vykreslete sloupcovy graf revenue pro Apple po letech s nadpisem "Revenue of Apple by year"
> barplot(apple$revenue, main = "Revenue of Apple by year", names.arg= apple$fy, col = "pink")
> abline (h, 0, col = "blue")
> barplot(apple$revenue, main = "Revenue of Apple by year", names.arg= apple$fy, col = "green")
> barplot(apple$revenue, main = "Revenue of Apple by year", names.arg= apple$fy, col = "purple")
> barplot(apple$revenue, main = "Revenue of Apple by year", names.arg= apple$fy, col = "7e00ff")
> barplot(apple$revenue, main = "Revenue of Apple by year", names.arg= apple$fy, col = "cyan")
> # ---------------------------------------
> # 9. Do grafu vepiste vodorovnou modrou caru, ktera urcuje revenue google v roce 2012
> h = companiesData$revenue[companiesData == "Google" & companiesData$fy == "2012"]
> h
[1] 50175
> abline (h, 0, col = "blue")


A konečně odkaz na celý soubor je zde :-)

Jediné co mi opravdu vidělo byl fakt, že jakmile jsem soubor uložila, aplikaci zavřela a následně ji otevřela, celá konzele byla smazaná a musela jsem ji nahrávat znovu.




čtvrtek 3. prosince 2015

Úvod do R


     V první řadě musím říct, že po vizuální stránce se mi kurz velice líbil. Také si myslím, že byl i velmi přínosný. Zároveň se však musím přiznat, že mi nedal tolik, kolik jsem si myslela, že mi dá. Proto jsem se rozhodla, že si kurz určitě minimálně ještě jednou projdu, abych do problematiky pronikla ještě lépe. Po cestě ,,od lodi k pokladu" jsem měla občas nějaké problémy, pomohl mi však Google a můj IT přítel, takže se vše nakonec podařilo.
     Bohužel úplně nevím, co bych v tomto příspěvku dále psala, a proto na důkaz toho, že jsem kurz opravdu zvládla, vkládám výstřižky všech ukončených kapitol :-)



Začínáme! :-)


Chapter 1 Completed!
Chapter 2 Completed!
Chapter 3 Completed!
Chapter 4 Completed!
Chapter 5 Completed!
Chapter 6 Completed!
Chapter 7 Completed!
DONE!

středa 18. listopadu 2015

Business Intelligence aneb tohle bylo celkem fajn

Šestý úkol se skládal celkem ze tří částí, v rámci nichž jsme pracovali s nástrojem Power BI od Microsoftu. V první části jsme si měli pohrát s daty z vlastního facebooku, následně vytvořit dashboard pro libovolný volně dostupný dataset a nakonec jej zveřejnit pomocí funkce Publish.

Pohrejte si s daty z vlastního FB

Jako zdroj dat z mého facebookového profilu jsem zvolila statusy. Zajímalo mě, jaký druh příspěvků na svoji zeď dávám nejčastěji. Výsledky je možno vidět na níže uvedeném grafu. Přiznám se, že některé části grafu mě překvapily a nejsem si jistá, zda se v tomto směru dá Power BI věřit. Tato nedůvěra se následně bude projevovat i v následujících grafech.

Typy příspěvků během let

Typy příspěvků podle měsíců

Roční počet příspěvků podle typu


Vytvořte dashboard pro libovolný veřejný dataset

Největším problémem pro mě bylo najít vhodný veřejně přístupný dataset. Respektive nešlo o to nalézt dataset (na internetu je jich opravdu hodně), ale spíše o nalezení takového datasetu, který by Power BI zvládl dobře editovat a dal se tedy pro moje účely použít. Díky tomu jsem narazila na některé nedostatky tohoto nástroje (např. editování řádků). Nakonec se mi to, ale podařilo a použila jsem dataset z Českého statistického úřadu, který se týkal naděje na dožití. I přes veškerou snahu se mi nepodařilo jiné rozumné údaje získat.

Naděje na dožití - muži

Naděje na dožití - ženy


Zveřejněte dashboard do cloudu pomocí Publish v Power BI

Tato část byla vlastně nejjednodušší ze všech. V prvé řadě jsem se musela zaregistrovat, abych vůbec měla možnost něco publikovat. Níže jsou PrintScreeny zobrazující proces publikování a zde odkaz na publikovaný dashboard.
 


středa 4. listopadu 2015

Čistíme a zpracováváme data aneb kdo si počká...

Celý tento úkol byl ve znamení čekání a slova Working...

     K řešení tohoto úkolu jsme měli využít Google Refine. Jako data nám posloužil csv soubor ze stránek České obchodní inspekce. 
Prvotním úkolem bylo vyčistit data, což se po několika krocích podařilo.

     K čištění dat jsem využívala facetů a clusterů. Program je poměrně přehledný, ale zpracování velkého objemu dat mu trvá docela dlouho, což bylo celkem otravné.

     Nejdříve jsem si rozdělila všechny kraje na Čechy a Moravu, následně odstranila nechtěné údaje, jako jsou čísla popisná, mezery nebo lomítka. Dalším krokem bylo klastrování - přejmenování všech podobných názvů na jeden shodný (Nám. TGM, Náměstí TGM, Nám. T. G. Masaryka, ...).  Posledním krokem bylo sloučení Obec, Ulice. Zde jsem měla menší problém s příkazem cells["Obec"].value + ", " + cells["Ulice2"].value, po chvíli jsem ale zjistila, že stačí přejmenovat sloupec Ulice 2 na Ulice2 a vše bylo v pořádku. 


Krok 1

Krok 2

Krok 3

Krok 4

Co udělat lépe?

  • Vznikla nám v Olomouci ulice s názvem R
     Po čištění dat jsem zjistila, že v Olomouci zůstala ulice s názvem R. Původní název byl R35 a R46. Jedná se o názvy podle silnic, které jsou v blízkosti jednotlivých ulic. Vzhledem k tomu, že se jedná o skutečné názvy míst, které jsou dohledatelné na mapě, název bych neměnila a ponechala s písmenem R.
  • Některé ulice obsahují ?, !, %*^& …
V tomto případě existují dvě řešení. Buď projdeme data řádek po řádku a takovéto chyby ručně odstraníme nebo se jistě dá použít patřičný regulátor. Jelikož však v tomto ještě nejsem natolik sběhlá, žádný jsem bohužel nedokázala vymyslet.
  • Je vhodné sloučit Prahu 1 a Prahu 5?
     Po vyčlenění si pouze Prahy 1 a Prahy 5 a následném seřazení ulic podle abecedy jsem zjistila, že sloučit tyto dvě pražské části určitě vhodné není. Jak je vidět na obrázku níže, ulice se stejným názvem (Archeologická) se vyskytuje jak v Praze 1, tak i 5.




   

středa 28. října 2015

Čtvrtý úkol aneb doufám, že horší už to nebude

Čtvrtá sada úkolů se týkala čištění dat z webu pomocí regulárních výrazů a musím přiznat, že mi to dalo opravdu zabrat.

1. Dohrát Regex One


No, dohrát... Žádná hra to teda nebyla. Regex One je kurz, který má sloužit k procvičování regulárních výrazů. Ano, nakonec jsem se dostala až na konec, ovšem byl to tedy boj. Pravdou je, že se některé části dali poměrně dobře obejít jednoduššími výrazy než se pak nacházely v řešení, což by se dalo považovat vlastně za chybu.




2. Regulární výrazy

Ok, absolutně nevím, proč jsem to udělala (snad, abych si přidělala práci nebo možná proto, abych se vytáhla před svým IT přítelem), ale v rámci této části úkolu jsem vytvořila hned dvě verze. Jednu vždy v aplikaci Sublime Text Editor, druhou pak v RegExr.

  • Parsování čísel





  • Nalezení e-mailových adres v HTML stránce






  • Nalezení URLs v HTML kódu




  • Odstranění všech XML elementů z RSS feedu v Sublime





Jestli tohle není dobře, asi se zabiju! :-D

3. Kimonolabs.com

Tato aplikace umožňuje převod libovolné webové stránky do API, aniž by uživatel zvládal programování. 

4. Import.io

Pokusila jsem se importovat data z webu České filmové databáze. Jak je vidět na obrázku, po zadání webové adresy do vyhledávače aplikace Import.io mi vyskočilo 11 filmů z roku 2015, čili ty filmy, které se zobrazují na úvodní stránce ČSFD.  








PS: Nerada bych, aby tento příspěvek působil jako jeden velký HATE na regulární výrazy, a proto to uzavřu tím, že můj šálek kávy to teda rozhodně nebyl, není a asi nikdy nebude :-)

středa 21. října 2015

Třetí sada úkolů aneb nakonec to bylo celkem fajn

Dalším úkolem bylo naučit se pracovat s Google Spreadsheet, na což jsem se nejdříve těšila, pak jsem to nesnášela a nakonec mi to vlastně nevadilo. I když vím, že Spreadsheet toho umí hodně, je zároveň o mnoho složitější, a proto bezpečně vím, že zůstanu věrná Excelu.

Dashboard

Na základě tématu svojí bakalářské práce jsem se rozhodla pro tentokrát pracovat s daty týkajícími se audioknih. 




Z Heureka.cz jsem ,,vytáhla" data pomocí funkce IMPORTXML a Google rozšíření XPath Helper a použila je k vytvoření čtyř grafů.

První z nich se týkal hodnocení nejoblíbenějších audioknih. U tohoto prvního grafu jsem měla trochu problém přeorientovat se na Spreadsheet a nepřemýšlet ,,Excelově". Jakmile jsem si na to však zvykla, bylo to už téměř bez problémů.




 Druhý graf znázorňoval počet recenzí jednotlivých audioknih.



Třetím grafem jsem chtěla znázornit, jaká je průměrná cena audioknih na internetu. Přiznám se ke dvěma věcem:
1) byla jsem občas překvapena, kam až se může cena mluveného slova vyšplhat
2) věřím, že existuje nějaká funkce na nejvyšší a nejnižší cenu v určitém rozpětí (jak tomu bylo v tomto případě), ale jelikož jsem na nic nepřišla, tupě jsem vždy nejnižší a nejnižší cenu opsala.





Poslední graf ukazoval dostupnost v internetových obchodech, která je k mé radosti poměrně dobrá 
:-)





Doplňky


Druhý a třetí úkol se týkal doplňků v Google Spreadsheet. Nejdřív bylo nutno zjistit, kde doplňky vlastně najdeme. V anglické verzi je to možná trochu problém, v té české je to však naprosto triviální.




A jaký doplněk jsem si vybrala? Je to obdoba upravování textu v Excelu, která mi v Google Spreadsheet chyběla. Jmenuje se Styles a pomáhá upravovat styly textu, zvýrazňovat buňky a text v nich.






V poslední části dnešního příspěvku bych chtěla vložit odkaz na můj Google Spreadsheet, kde se Honza nebo i kdokoli jiný může podívat, jak jsem se ke všem těm grafům vlastně dostala.