Skip to content

Commit 6ee021c

Browse files
pesikjZelenyMartin
andauthored
Opravy (#84)
* Opravy * Update python-pro-data-1/nacteni-dat/nacteni-dat.md Co-authored-by: Martin Zelený <[email protected]> --------- Co-authored-by: Martin Zelený <[email protected]>
1 parent a870b86 commit 6ee021c

File tree

10 files changed

+135470
-135455
lines changed

10 files changed

+135470
-135455
lines changed

python-pro-data-1/nacteni-dat/nacteni-dat.md

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,11 @@ Celý DataFrame vypíšeme na obrazovku pomocí funkce `print()`.
2525

2626
Všimni si, že `pandas` nám přidal nový sloupec s číslem řádku. Jedná se o **index**, se kterým budeme později pracovat. Index je hodnota, která identifikuje řádek. V některých případech nemusíme jako index používat číslo řádku, ale můžeme jako index vybrat některý ze sloupců. Obdobnou funkci má v databázích **primární klíč**. Jako *best practice* se většinou uvádí, že index by měl být **unikátní**, i když to `pandas` (na rozdíl od právě databází) nevyžadují. Na druhou stranu, práce s tabulkou, kde index není unikátní, je [pomalejší](https://stackoverflow.com/q/16626058/4693904).
2727

28-
My bychom si jako index zvolit sloupec `fdc_id`.
28+
My bychom si jako index mohli zvolit sloupec `fdc_id`. To bychom provedli pomocí metody `set_index()`.
29+
30+
```py
31+
food.set_index("fdc_id", inplace=True)
32+
```
2933

3034
Pandas nabízí kromě funkce `read_csv()` také funkci pro čtení formátu JSON `read_json()` nebo dokonce funkci pro čtení přímo Excelových tabulek `read_excel()`.
3135

@@ -37,7 +41,7 @@ Jakmile máme tabulku načtenou, budeme o ní chtít vědět nějaké úplně z
3741
food.info()
3842
```
3943

40-
Výsledek je vidět níže.
44+
Výsledek je vidět níže. Takto vypadá výsledek v případě, že nenastavíme sloupec `fdc_id` jako index. Pokud bychom to udělali, v seznamu sloupců `fdc_id` neuvidíme.
4145

4246
```shell
4347
<class 'pandas.core.frame.DataFrame'>
@@ -86,6 +90,8 @@ Názvy všech sloupců pak z vlastnosti `columns`:
8690
print(food.columns)
8791
```
8892

93+
Níže je výstup příkazu. Opět platí, že kdybychom nastavili sloupec `fdc_id` jako index, tak tímto příkazem vypsán nebude.
94+
8995
```shell
9096
Index(['fdc_id', 'data_type', 'description', 'food_category_id', 'publication_date'], dtype='object')
9197
```

python-pro-data-1/podmineny-vyber/assets/food_nutrient.csv

Lines changed: 135337 additions & 135337 deletions
Large diffs are not rendered by default.

python-pro-data-1/podmineny-vyber/excs/ceska-jmena-2/assets/jmena.csv

Lines changed: 0 additions & 101 deletions
This file was deleted.

python-pro-data-1/podmineny-vyber/excs/ceska-jmena-2/exercise.md

Lines changed: 0 additions & 11 deletions
This file was deleted.
Lines changed: 101 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,101 @@
1+
jméno,četnost,věk,pohlaví,původ
2+
Jiří,296090,49,m,řecký
3+
Jan,293938,40,m,hebrejský
4+
Petr,272135,42,m,řecký
5+
Jana,264944,50,ž,hebrejský
6+
Marie,260526,65,ž,hebrejský
7+
Josef,211317,57,m,hebrejský
8+
Pavel,200997,46,m,latinský
9+
Martin,188380,33,m,latinský
10+
Tomáš,181926,30,m,aramejský
11+
Jaroslav,172785,55,m,slovanský
12+
Eva,152463,53,ž,hebrejský
13+
Miroslav,147753,52,m,slovanský
14+
Hana,145901,51,ž,hebrejský
15+
Anna,134819,51,ž,hebrejský
16+
Zdeněk,126094,54,m,slovanský
17+
Václav,123927,51,m,slovanský
18+
Michal,123324,32,m,hebrejský
19+
František,122910,58,m,italský
20+
Lenka,118763,40,ž,neznámý
21+
Kateřina,118127,29,ž,řecký
22+
Lucie,111937,27,ž,latinský
23+
Jakub,108013,19,m,hebrejský
24+
Milan,107458,51,m,slovanský
25+
Věra,107388,63,ž,slovanský
26+
Alena,105093,55,ž,hebrejský
27+
Karel,104072,55,m,straroněmecký
28+
Lukáš,102982,23,m,latinský
29+
Petra,102693,35,ž,řecký
30+
David,101311,25,m,hebrejský
31+
Veronika,88854,25,ž,řecký
32+
Jaroslava,84556,63,ž,slovanský
33+
Vladimír,83762,56,m,slovanský
34+
Tereza,83692,18,ž,řecký
35+
Martina,81312,36,ž,latinský
36+
Michaela,78823,28,ž,hebrejský
37+
Jitka,78187,51,ž,hebrejský
38+
Ondřej,76225,22,m,řecký
39+
Helena,74391,58,ž,řecký
40+
Ludmila,72750,65,ž,slovanský
41+
Ladislav,69797,55,m,slovanský
42+
Zdeňka,69060,61,ž,slovanský
43+
Ivana,68917,49,ž,slovanský
44+
Roman,67754,40,m,latinský
45+
Monika,63857,35,ž,řecký
46+
Marek,63088,27,m,latinský
47+
Stanislav,61889,54,m,slovanský
48+
Eliška,61517,24,ž,hebrejský
49+
Zuzana,61382,34,ž,hebrejský
50+
Daniel,60935,23,m,hebrejský
51+
Markéta,59734,32,ž,řecký
52+
Jarmila,59666,65,ž,slovanský
53+
Radek,58589,36,m,slovanský
54+
Barbora,57201,22,ž,řecký
55+
Jiřina,55366,64,ž,řecký
56+
Antonín,53794,51,m,latinský
57+
Marcela,53654,50,ž,latinský
58+
Vojtěch,52802,22,m,slovanský
59+
Kristýna,51422,18,ž,řecký
60+
Dana,50781,51,ž,hebrejský
61+
Dagmar,50646,55,ž,skandinávský
62+
Filip,50464,17,m,řecký
63+
Adam,47837,14,m,hebrejský
64+
Adéla,45156,15,ž,germánský
65+
Pavla,41774,43,ž,latinský
66+
Vlasta,41736,68,ž,slovanský
67+
Andrea,41151,31,ž,řecký
68+
Miroslava,41151,54,ž,slovanský
69+
Irena,41054,56,ž,řecký
70+
Božena,39851,72,ž,slovanský
71+
Klára,39600,22,ž,latinský
72+
Libuše,39269,66,ž,slovanský
73+
Marta,38897,63,ž,aramejský
74+
Matěj,38519,13,m,hebrejský
75+
Šárka,38339,37,ž,slovanský
76+
Nikola,37996,19,ž,řecký
77+
Karolína,36997,15,ž,německý
78+
Iveta,36461,41,ž,německý
79+
Pavlína,35863,37,ž,latinský
80+
Natálie,33761,11,ž,řecký
81+
Olga,33669,58,ž,skandinávský
82+
Dominik,33322,14,m,latinský
83+
Aleš,33074,38,m,řecký
84+
Miloslav,32769,60,m,slovanský
85+
Blanka,31516,54,ž,latinský
86+
Gabriela,31175,33,ž,hebrejský
87+
Jaromír,30984,55,m,slovanský
88+
Patrik,30682,20,m,latinský
89+
Renata,30617,44,ž,latinský
90+
Libor,30464,44,m,latinský
91+
Aneta,29840,17,ž,hebrejský
92+
Simona,29618,30,ž,hebrejský
93+
Růžena,28952,69,ž,slovanský
94+
Radka,26939,38,ž,slovanský
95+
Daniela,26536,38,ž,hebrejský
96+
Denisa,26299,23,ž,řecký
97+
Jindřich,26230,51,m,německý
98+
Vlastimil,26014,54,m,slovanský
99+
Iva,26003,46,ž,slovanský
100+
Miloš,25509,53,m,slovanský
101+
Zdenka,25416,68,ž,slovanský
Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,16 @@
1+
---
2+
title: Česká jména
3+
demand: 3
4+
---
5+
6+
Stáhni si soubor [jmena.csv](assets/jmena.csv), která obsahuje nejpoužívanější česká jména.
7+
8+
1. Vypiš všechny řádky se jmény, jejichž nositelé mají průměrný věk vyšší než 60.
9+
1. Vypiš pouze jména z těch řádků, kde četnost je mezi 80 000 a 100 000.
10+
1. Vypiš jména a četnost pro jména se slovanským nebo hebrejským původem. Kolik takových jmen je?
11+
12+
Pro poslední úkol můžeš využít operátor `|`. Alternativně si můžeš vyzkoušet metodu `.isin()`, která zápis zkrátí. Jako parametr vkládáme seznam hodnot, které vyhovují podmínce. Níže je příklad použití metody. Z tabulky `tabulka` chceme vybrat řádky, které ve sloupci `sloupec` mají hodnotu `hodnota_1` nebo `hodnota_2`. Pokud jsi vytvořil(a) i verzi s operátorem `|`, můžeš obě verze porovnat a rozhodnout se, která verze se ti líbí více.
13+
14+
```python
15+
tabulka = tabulka[tabulka["sloupec"].isin(["hodnota_1", "hodnota_2"])]
16+
```

python-pro-data-1/podmineny-vyber/podmineny-vyber.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,7 +40,7 @@ food_nutrient["name"]
4040
Nás by mohlo zajímat, jaké všechny výživné látky v datech jsou. K tomu nám snaží vidět každý název jenom jednou. Jinak řečeno, potřebujeme unikátní hodnoty. K tomu můžeme využít metodu `.unique()`.
4141

4242
```py
43-
food_nutrient["name"]
43+
food_nutrient["name"].unique()
4444
```
4545

4646
Též může být zajímavé, kolikrát máme o některé z výživných látek informaci. K tomu můžeme použít metodu `.value_counts()`. Ta nám pro každou výživnou hodnotu zobrazí, kolikrát se v tabulce vyskytuje.
@@ -143,4 +143,4 @@ Pokud chceme, aby stačilo splnění jedné podmínky, použijeme symbol `|`.
143143

144144
## Bonusy
145145

146-
::exc[excs/ceska-jmena-2]
146+
::exc[excs/ceska-jmena]

python-pro-data-1/spojovani/excs/znacky/exercise.md

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@ Pro tabulku `branded_food` splň následující úkoly.
1111
1. Ve sloupci `brand_owner` jsou názvy výrobců potravin. Zjisti tři výrobce s největším počtem potravin v tabulce.
1212
1. Ve sloupci `branded_food_category` jsou kategorie potravin. Zjisti pět kategorií s největších počtem potravin v tabulce.
1313

14+
Nápověda: Na body 2 a 3 využij metodu, kterou jsme si již ukazovali v předchozí lekci. Její název se skládá ze dvou slov - anglického výrazu pro hodnotu a pro počet.
15+
1416
V tabulce je sloupec `fdc_id`, pomocí kterého ji můžeš propojit s tabulkou `food_merged`. Protože názvy jsou v obou tabulkách stejné, takže by bylo možné použít parametr `on`. Vyzkoušej si ale místo toho parametry `left_on` a `right_on`, kterým dáš stejnou hodnotu, tj. název sloupce `fdc_id`. Výsledek ulož do tabulky `food_merged_brands`.
1517

1618
Pro tabulku `food_merged_brands` splň následující úkoly.

python-pro-data-1/spojovani/pokrocile-upravy.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -61,8 +61,9 @@ My funkci využijeme, abychom si vytvořili větší tabulku s názvy potravin.
6161
Pozor na to, že v takto vzniklém DataFrame se nám **rozbije index**, protože se spojí za sebe indexy jednotlivých tabulek. Pokud chceme, aby `pandas` při spojování index přepočítal, musíme nastavit hodnotu parametru `ignore_index` na `True`.
6262

6363
```py
64-
food_other = pd.read_csv("food_other.csv", ignore_index=True)
65-
food = pd.concat([food_sample_100, food_other])
64+
food_sample_100 = pd.read_csv("food_sample_100.csv")
65+
food_other = pd.read_csv("food_other.csv")
66+
food = pd.concat([food_sample_100, food_other], ignore_index=True)
6667
```
6768

6869
K čemu je spojování vlastně dobré? Některé programy například ukládají data za každý den do samostatného souboru, takže pokud potřebujeme data za jeden týden, stačí nám stáhnout a spojit 7 souborů a ostatní stovky souborů a gigabajty dat můžeme ignorovat.

python-pro-data-1/vizualizace/excs.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
11
## Cvičení
22

33
::exc[excs/odstin]
4+
::exc[excs/catplot]

0 commit comments

Comments
 (0)