Skip to content

Commit 3b65414

Browse files
committed
Překlepy, nadpisy, úpravy výstupů
1 parent 6ee021c commit 3b65414

File tree

4 files changed

+79
-69
lines changed

4 files changed

+79
-69
lines changed

python-pro-data-1/nacteni-dat/excs/titanic/exercise.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,5 +8,4 @@ Každý tutoriál datové analýzy začíná zpracováváním data setu pasažé
88
1. Načti data do `DataFrame`, který si pojmenuj `titanic`.
99
1. Nech si zobrazit názvy sloupců, které jsou v souboru uloženy.
1010
1. Podívej se, kolik má soubor řádků.
11-
1. Zjisti, jaký byl průměrný věk pasažérů.
12-
1. Kolik bylo nejstaršímu pasažérovi?
11+
1. Zjisti, v jakých sloupcích nějaké hodnoty chybí

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

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
## Odkud data bereme
22

3-
Data se nejčastěji nachází v databázích nebo v souborech. V rámci tohoto kurzu budeme pracovat se soubory, proto si o nich řekneme něco víc. Budeme zabývat textovými daty, protože ty jsou pro zpracování nejjednodušší.
3+
Data se nejčastěji nachází v databázích nebo v souborech. V rámci tohoto kurzu budeme pracovat se soubory, proto si o nich řekneme něco víc. Budeme se zabývat textovými daty, protože ty jsou pro zpracování nejjednodušší.
44

55
V rámci kurzu budeme používat data o potravinách, která [zveřejňuje americké ministerstvo zemědělství](https://fdc.nal.usda.gov/download-datasets.html).
66

@@ -26,6 +26,9 @@ Význam sloupců je následující:
2626

2727
S tabulkami pracujeme v software Microsoft Excel (soubory mají příponu `.xlsx`), případně v alternativách jako Google Spreadsheet, Libre Office Calc atd. Python umí pracovat přímo se soubory XLSX, slouží k tomu modul `openpyxl` (můžete ho stáhnout [zde](https://openpyxl.readthedocs.io/en/stable/)), případně s nimi lze pracovat i v `pandas`. Práce s nimi je ale poměrně komplexní, proto budeme používat soubory CSV.
2828

29+
30+
### CSV
31+
2932
Soubor CSV obsahuje data v textové podobě ve struktuře podobné tabulce. Jednotlivé buňky jsou odděleny **středníky** nebo **čárkami**. V rámci České republiky se častěji setkáváme se středníkem, protože čárky používáme pro zápis desetinných míst. Celosvětově je oblíbenější spíše čárka.
3033

3134
```
@@ -38,6 +41,8 @@ fdc_id,data_type,description,food_category_id,publication_date
3841
```
3942

4043

44+
### JSON
45+
4146
Formát JSON ti bude povědomý, pokud už jsi v Pythonu pracoval(a) se slovníky (`dict`). Na první pohled vypadají téměř stejně. Python ti navíc jednoduše umožní data ve formátu JSON převést na slovníky a seznamy. K tomu slouží modul příhodně pojmenovaný `json`. S tímto formátem si ale hravě poradí i `pandas`.
4247

4348
```json
@@ -80,7 +85,10 @@ Formát JSON ti bude povědomý, pokud už jsi v Pythonu pracoval(a) se slovník
8085
]
8186
```
8287

83-
Dalším používaným formátem je XML. XML je velmi podobné HTML, tedy jazyku, kterým určujeme, jak má vypadat webová stránka.
88+
89+
### XML
90+
91+
Dalším používaným formátem je XML. XML je velmi podobné HTML, tedy jazyku, kterým určujeme obsah webové stránky.
8492

8593
```xml
8694
<?xml version='1.0' encoding='utf-8'?>
@@ -118,7 +126,7 @@ Protože data zapisujeme jako hodnoty a atributy, můžeme jednu tabulku zapsat
118126

119127
U obou formátů musíme dodržovat základní pravidla, jinak bude soubor pro počítač nečitelný.
120128

121-
### Čtení na doma - formát YAML
129+
### YAML
122130

123131
Nejnovějším z formátů je YAML (YAML Ain't Markup Language), který vznikl v roce 2011. Byl vyvinut s ohledem pro snadnou čtenost člověkem.
124132

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

Lines changed: 25 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -41,21 +41,20 @@ Jakmile máme tabulku načtenou, budeme o ní chtít vědět nějaké úplně z
4141
food.info()
4242
```
4343

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.
44+
Výsledek je vidět níže.
4545

46-
```shell
46+
```
4747
<class 'pandas.core.frame.DataFrame'>
48-
Index: 100 entries, 0 to 7858
49-
Data columns (total 5 columns):
50-
# Column Non-Null Count Dtype
51-
--- ------ -------------- -----
52-
0 fdc_id 100 non-null int64
53-
1 data_type 100 non-null object
54-
2 description 100 non-null object
55-
3 food_category_id 99 non-null float64
56-
4 publication_date 100 non-null object
57-
dtypes: float64(1), int64(1), object(3)
58-
memory usage: 4.7+ KB
48+
Index: 100 entries, 2644829 to 328565
49+
Data columns (total 4 columns):
50+
# Column Non-Null Count Dtype
51+
--- ------ -------------- -----
52+
0 data_type 100 non-null object
53+
1 description 100 non-null object
54+
2 food_category_id 99 non-null float64
55+
3 publication_date 100 non-null object
56+
dtypes: float64(1), object(3)
57+
memory usage: 3.9+ KB
5958
```
6059

6160
**Poznámka:** Pokud znáš základy objektově orientovaného programování, pak věz, že `info` je ve skutečnosti metoda třídy `DataFrame`.
@@ -68,8 +67,8 @@ print(food.shape)
6867

6968
Výsledek je opět níže.
7069

71-
```shell
72-
(100, 5)
70+
```
71+
(100, 4)
7372
```
7473

7574
`pandas` nám vrací výsledky v sekvenci, která se jmenuje `tuple`. Nám stačí vědět, že si z ní data můžeme načíst stejně jako ze seznamu. Na prvním místě je vždy počet řádků a na druhém počet sloupců. Pokud by nás třeba zajímal jen počet řádků, napíšeme:
@@ -90,10 +89,10 @@ Názvy všech sloupců pak z vlastnosti `columns`:
9089
print(food.columns)
9190
```
9291

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.
92+
Níže je výstup příkazu.
9493

95-
```shell
96-
Index(['fdc_id', 'data_type', 'description', 'food_category_id', 'publication_date'], dtype='object')
94+
```
95+
Index(['data_type', 'description', 'food_category_id', 'publication_date'], dtype='object')
9796
```
9897

9998
### Začátek a konec
@@ -104,13 +103,14 @@ Na prvních a posledních několik řádků se chceme podívat často, hlavně v
104103
print(food.head())
105104
```
106105

107-
```shell
108-
fdc_id data_type description food_category_id publication_date
109-
0 2644829 sub_sample_food lentils, dry 16.0 2023-10-19
110-
1 2347263 sub_sample_food heavy cream 1.0 2022-10-28
111-
2 2261954 sub_sample_food Flour, potato 11.0 2022-04-28
112-
3 321470 sub_sample_food Salt, Iodized 2.0 2019-04-01
113-
4 322951 sub_sample_food Hot dogs beef 7.0 2019-04-01
106+
```
107+
data_type description food_category_id publication_date
108+
fdc_id
109+
2644829 sub_sample_food lentils, dry 16.0 2023-10-19
110+
2347263 sub_sample_food heavy cream 1.0 2022-10-28
111+
2261954 sub_sample_food Flour, potato 11.0 2022-04-28
112+
321470 sub_sample_food Salt, Iodized 2.0 2019-04-01
113+
322951 sub_sample_food Hot dogs beef 7.0 2019-04-01
114114
```
115115

116116
Metoda `head` má parametr `n`, což je počet řádků, které mají být vypsány. Tento parametr je ale *nepovinný*. Nepovinné parametry mají vždy nějakou výchozí hodnotu, v případě parametru `n` metody `head` je tato výchozí hodnota 5. Můžem ale zvolit libovolnou vlastní, například 20.

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

Lines changed: 42 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,19 @@ K tomu použijeme výběr sloupců pomocí hranatých závorek. Zápis připomí
88
food['description']
99
```
1010

11-
```shell
12-
0 lentils, dry
13-
1 heavy cream
14-
2 Flour, potato
15-
3 Salt, Iodized
16-
4 Hot dogs beef
17-
...
18-
38914 Yogurt, whole milk, plain
19-
58027 chicken, breast, boneless, skinless
20-
58591 pork, loin, boneless
21-
46593 Oats, whole grain, rolled, old fashioned
22-
7858 Cheese, cheddar, mild, block/chunk, store bran...
11+
```
12+
fdc_id
13+
2644829 lentils, dry
14+
2347263 heavy cream
15+
2261954 Flour, potato
16+
321470 Salt, Iodized
17+
322951 Hot dogs beef
18+
...
19+
2260615 Yogurt, whole milk, plain
20+
2646468 chicken, breast, boneless, skinless
21+
2647032 pork, loin, boneless
22+
2349564 Oats, whole grain, rolled, old fashioned
23+
328565 Cheese, cheddar, mild, block/chunk, store bran...
2324
Name: description, Length: 100, dtype: object
2425
```
2526

@@ -28,22 +29,23 @@ Zde je důležité říct, že pokud vybíráme pouze jeden sloupec, vrátí se
2829
Pro výběr více sloupců musíme do indexace DataFrame vložit seznam s názvy sloupců.
2930

3031
```py
31-
food[["fdc_id", "description"]]
32+
food[['description', 'publication_date']]
3233
```
3334

34-
```shell
35-
fdc_id description
36-
0 2644829 lentils, dry
37-
1 2347263 heavy cream
38-
2 2261954 Flour, potato
39-
3 321470 Salt, Iodized
40-
4 322951 Hot dogs beef
41-
... ... ...
42-
38914 2260615 Yogurt, whole milk, plain
43-
58027 2646468 chicken, breast, boneless, skinless
44-
58591 2647032 pork, loin, boneless
45-
46593 2349564 Oats, whole grain, rolled, old fashioned
46-
7858 328565 Cheese, cheddar, mild, block/chunk, store bran...
35+
```
36+
description publication_date
37+
fdc_id
38+
2644829 lentils, dry 2023-10-19
39+
2347263 heavy cream 2022-10-28
40+
2261954 Flour, potato 2022-04-28
41+
321470 Salt, Iodized 2019-04-01
42+
322951 Hot dogs beef 2019-04-01
43+
... ... ...
44+
2260615 Yogurt, whole milk, plain 2022-04-28
45+
2646468 chicken, breast, boneless, skinless 2023-10-19
46+
2647032 pork, loin, boneless 2023-10-19
47+
2349564 Oats, whole grain, rolled, old fashioned 2022-10-28
48+
328565 Cheese, cheddar, mild, block/chunk, store bran... 2019-04-01
4749
4850
[100 rows x 2 columns]
4951
```
@@ -54,19 +56,20 @@ Tady se nám již vrátil datový typ DataFrame. Tohoto triku můžeme využít,
5456
food[['description']]
5557
```
5658

57-
```shell
58-
description
59-
0 lentils, dry
60-
1 heavy cream
61-
2 Flour, potato
62-
3 Salt, Iodized
63-
4 Hot dogs beef
64-
... ...
65-
38914 Yogurt, whole milk, plain
66-
58027 chicken, breast, boneless, skinless
67-
58591 pork, loin, boneless
68-
46593 Oats, whole grain, rolled, old fashioned
69-
7858 Cheese, cheddar, mild, block/chunk, store bran...
59+
```
60+
description
61+
fdc_id
62+
2644829 lentils, dry
63+
2347263 heavy cream
64+
2261954 Flour, potato
65+
321470 Salt, Iodized
66+
322951 Hot dogs beef
67+
... ...
68+
2260615 Yogurt, whole milk, plain
69+
2646468 chicken, breast, boneless, skinless
70+
2647032 pork, loin, boneless
71+
2349564 Oats, whole grain, rolled, old fashioned
72+
328565 Cheese, cheddar, mild, block/chunk, store bran...
7073
7174
[100 rows x 1 columns]
7275
```

0 commit comments

Comments
 (0)