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.

středa 14. října 2015

Datové formáty aneb druhá sada úkolů

Druhý úkol se skládal hned z několika částí. I přes to, že jsem byla na začátku hodně skeptická, nakonec se mi podařilo se všemi částmi (snad bravurně) poprat.

CSV - Navrhněte formát pro Váš týdenní rozvrh

Prvním úkolem bylo navrhnout formát týdenního rozvrhu hodin ve formátu CSV pomocí programu Sublime Text. Přiznám se, že nad touto částí jsem strávila nejvíce času, ale nakonec (po urputném boji se zobrazením CSV v Excelu) se zadařilo. 
Následující dva obrázky tedy ukazují zápis v programu Sublime Text a také následné zobrazení v Excelu.





XML - Vizualizujte si cestu ze školy domů

Druhým úkolem bylo vizualizovat si cestu ze školy. Postup byl následující: v Google Maps jsem nechala vyhledat trasu z ulice Arne Nováka do Zbýšova u Brna. Trasa, která se mi následně zobrazila mi poskytla záchytné body, které byly pro splnění tohoto úkolu v podstatě stěžejní. 
Nejprve jsem si vyplnila hlavičku, výchozí bod a následně souřadnice všech průchozích bodů. Jak je vidět, použila jsem funkci track. V poslední fázi jsem vyplnila souřadnice koncového bodu trasy.




Jen pro zajímavost (a taky jako důkaz, že jsem látku pochopila ;)) jsem si zkusila použít také funkci route, pomocí které se trasa plánuje vlastně jen orientačně.





JSON - Tweetněte něco z konzole

Předposlední částí bylo odeslání tweetu pomocí API Console Tool. Tato část pro mě znamenala chvíli klikání metodou pokus - omyl, po pár minutách byl však testovací tweet na světě :-)


Jak komunikuje IRIS se serverem?

Posledním úkolem bylo zjistit, jak komunikuje aplikace IRIS, která zobrazuje aktuální polohu všech vozidel integrovaného dopravního systému Jihomoravského kraje, se serverem. 
Základem je, že v každém vozidle MHD je zařízení, se kterým server komunikuje. Server odešle žádost a ze zařízení se mu vrátí data ve formátu .json, která obsahují např. číslo vozu, aktuální polohu, zpoždění nebo trasu spoje.



úterý 6. října 2015

Datová analýza knihy

Datová analýza (oblíbené) knihy: Fifty Shades of Grey

     Když jsme na hodině datové analytiky dostali za úkol analyzovat svoji oblíbenou knihu, dlouho jsem přemýšlela, kterou zvolit. Nakonec (abych z těch mnoha oblíbených nemusela jednu upřednostnit), jsem zvolila tu, která na mě působí dojmem, že zaujala všechny, jen mě ne. Jedná se o erotický román Fifty Shades of Grey, který v poslední době otřásl světem, aniž bych věděla proč. 

     Analýza se skládá ze čtyř grafů: 
  • Nejčastěji používaná slova
  • Frekvence výskytu slova ,,grey"
  • Frekvence výskytu jmen Christian a Anastasia - hlavních postav, mezi kterými se milostný poměr odehrává 
  • Frekvence výskytu slov oh a yes - slov, která dle mě jasně vystihují pointu celé knihy :-)


Nejčastěji používaná slova




Frekvence výskytu slova grey



Frekvence výskytu jmen hlavních postav tvořících milostný pár



Frekvence výskytu slov oh, yes