Skip to content

Commit a49fc08

Browse files
committed
Odstranění diakritiky z hlavičky dat
1 parent 3f3c6a0 commit a49fc08

File tree

2 files changed

+100
-100
lines changed

2 files changed

+100
-100
lines changed

python-pro-data-1/nacteni-dat/assets/nakupy.csv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
Jméno,Datum,Věc,Částka v korunách
1+
jmeno,datum,vec,cena
22
Petr,2020-02-05,Prací prášek,399
33
Ondra,2020-02-08,Savo,80
44
Petr,2020-02-24,Toaletní papír,65

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

Lines changed: 99 additions & 99 deletions
Original file line numberDiff line numberDiff line change
@@ -10,19 +10,19 @@ V Pandas většinou pracujeme s datovou strukturou zvanou `DataFrame`. Je to tab
1010

1111
Abychom si práci s DataFrame vyzkoušeli, vrátíme se k naší tabulce se seznamem nákupů.
1212

13-
| Jméno | Datum | Věc | Částka v korunách |
14-
|:--------|:-----------|:-----------------|--------------------:|
15-
| Petr | 2020-02-05 | Prací prášek | 399 |
16-
| Ondra | 2020-02-08 | Savo | 80 |
17-
| Petr | 2020-02-24 | Toaletní papír | 65 |
18-
| Libor | 2020-03-05 | Pivo | 124 |
19-
| Petr | 2020-03-18 | Pytel na odpadky | 75 |
20-
| Míša | 2020-03-30 | Utěrky na nádobí | 130 |
21-
| Ondra | 2020-04-22 | Toaletní papír | 120 |
22-
| Míša | 2020-05-05 | Pečící papír | 30 |
23-
| Zuzka | 2020-06-05 | Savo | 80 |
24-
| Pavla | 2020-06-13 | Máslo | 50 |
25-
| Ondra | 2020-07-25 | Káva | 300 |
13+
| jmeno | datum | vec | cena |
14+
|:--------|:-----------|:-----------------|-----:|
15+
| Petr | 2020-02-05 | Prací prášek | 399 |
16+
| Ondra | 2020-02-08 | Savo | 80 |
17+
| Petr | 2020-02-24 | Toaletní papír | 65 |
18+
| Libor | 2020-03-05 | Pivo | 124 |
19+
| Petr | 2020-03-18 | Pytel na odpadky | 75 |
20+
| Míša | 2020-03-30 | Utěrky na nádobí | 130 |
21+
| Ondra | 2020-04-22 | Toaletní papír | 120 |
22+
| Míša | 2020-05-05 | Pečící papír | 30 |
23+
| Zuzka | 2020-06-05 | Savo | 80 |
24+
| Pavla | 2020-06-13 | Máslo | 50 |
25+
| Ondra | 2020-07-25 | Káva | 300 |
2626

2727
#### Načítání dat
2828

@@ -43,18 +43,18 @@ Funkce `read_csv` má spoustu nepovinných parametrů, o kterých si můžeme p
4343
Celý DataFrame vypíšeme na obrazovku pomocí funkce `print()`.
4444

4545
```shell
46-
Jméno Datum Věc Částka v korunách
47-
0 Petr 2020-02-05 Prací prášek 399
48-
1 Ondra 2020-02-08 Savo 80
49-
2 Petr 2020-02-24 Toaletní papír 65
50-
3 Libor 2020-03-05 Pivo 124
51-
4 Petr 2020-03-18 Pytel na odpadky 75
52-
5 Míša 2020-03-30 Utěrky na nádobí 130
53-
6 Ondra 2020-04-22 Toaletní papír 120
54-
7 Míša 2020-05-05 Pečící papír 30
55-
8 Zuzka 2020-06-05 Savo 80
56-
9 Pavla 2020-06-13 Máslo 50
57-
10 Ondra 2020-07-25 Káva 300
46+
jmeno datum vec cena
47+
0 Petr 2020-02-05 Prací prášek 399
48+
1 Ondra 2020-02-08 Savo 80
49+
2 Petr 2020-02-24 Toaletní papír 65
50+
3 Libor 2020-03-05 Pivo 124
51+
4 Petr 2020-03-18 Pytel na odpadky 75
52+
5 Míša 2020-03-30 Utěrky na nádobí 130
53+
6 Ondra 2020-04-22 Toaletní papír 120
54+
7 Míša 2020-05-05 Pečící papír 30
55+
8 Zuzka 2020-06-05 Savo 80
56+
9 Pavla 2020-06-13 Máslo 50
57+
10 Ondra 2020-07-25 Káva 300
5858
```
5959

6060
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í. Mohli bychom si tedy jako index zvolit například sloupec `Jmeno`, ale tím bychom si zadělávali na problém do budoucna (například v tom, že by práce s `DataFrame` byla [pomalejší](https://stackoverflow.com/q/16626058/4693904)).
@@ -75,12 +75,12 @@ nakupy.info()
7575
<class 'pandas.core.frame.DataFrame'>
7676
RangeIndex: 11 entries, 0 to 10
7777
Data columns (total 4 columns):
78-
# Column Non-Null Count Dtype
79-
--- ------ -------------- -----
80-
0 Jméno 11 non-null object
81-
1 Datum 11 non-null object
82-
2 Věc 11 non-null object
83-
3 Částka v korunách 11 non-null int64
78+
# Column Non-Null Count Dtype
79+
--- ------ -------------- -----
80+
0 jmeno 11 non-null object
81+
1 datum 11 non-null object
82+
2 vec 11 non-null object
83+
3 cena 11 non-null int64
8484
dtypes: int64(1), object(3)
8585
memory usage: 480.0+ bytes
8686
```
@@ -116,7 +116,7 @@ print(nakupy.columns)
116116
```
117117

118118
```shell
119-
Index(['Jméno', 'Datum', 'Věc', 'Částka v korunách'], dtype='object')
119+
Index(['jmeno', 'datum', 'vec', 'cena'], dtype='object')
120120
```
121121

122122

@@ -127,7 +127,7 @@ V některých případech nás jako první při práci s daty napadne nějak si
127127
K tomu použijeme výběr sloupců pomocí hranatých závorek. Zápis připomíná práci se seznamy - hranatou závorku napíšeme přímo za název proměnné, kde máme uložený `DataFrame`, a do ní vepíšeme název sloupce, který nás zajímá.
128128

129129
```py
130-
print(nakupy['Věc'])
130+
print(nakupy['vec'])
131131
```
132132

133133
```shell
@@ -142,40 +142,40 @@ print(nakupy['Věc'])
142142
8 Savo
143143
9 Máslo
144144
10 Káva
145-
Name: Věc, dtype: object
145+
Name: vec, dtype: object
146146
```
147147

148148
Zde je důležité říct, že pokud vybíráme pouze jeden sloupec, vrátí se nám takzvaná **Série** (`Series`), což je jiný datový typ než DataFrame. Sérii si představme jako jednorozměrnou tabulku.
149149

150150
Pro výběr více sloupců musíme do indexace DataFrame vložit seznam s názvy sloupců.
151151

152152
```py
153-
print(nakupy[['Jméno', 'Částka v korunách']])
153+
print(nakupy[['jmeno', 'cena']])
154154
```
155155

156156
```shell
157-
Jméno Částka v korunách
158-
0 Petr 399
159-
1 Ondra 80
160-
2 Petr 65
161-
3 Libor 124
162-
4 Petr 75
163-
5 Míša 130
164-
6 Ondra 120
165-
7 Míša 30
166-
8 Zuzka 80
167-
9 Pavla 50
168-
10 Ondra 300
157+
jmeno cena
158+
0 Petr 399
159+
1 Ondra 80
160+
2 Petr 65
161+
3 Libor 124
162+
4 Petr 75
163+
5 Míša 130
164+
6 Ondra 120
165+
7 Míša 30
166+
8 Zuzka 80
167+
9 Pavla 50
168+
10 Ondra 300
169169
```
170170

171171
Tady se nám již vrátil datový typ DataFrame. Tohoto triku můžeme využít, když chceme získat pouze jeden sloupec, ale nechceme ho v datovém typu Série, ale jako DataFrame.
172172

173173
```py
174-
print(nakupy[['Věc']])
174+
print(nakupy[['vec']])
175175
```
176176

177177
```shell
178-
Věc
178+
vec
179179
0 Prací prášek
180180
1 Savo
181181
2 Toaletní papír
@@ -202,10 +202,10 @@ print(nakupy.iloc[3])
202202
```
203203

204204
```shell
205-
Jméno Libor
206-
Datum 2020-03-05
207-
Věc Pivo
208-
Částka v korunách 124
205+
jmeno Libor
206+
datum 2020-03-05
207+
vec Pivo
208+
cena 124
209209
Name: 3, dtype: object
210210
```
211211

@@ -218,9 +218,9 @@ print(nakupy.iloc[3:5])
218218
```
219219

220220
```shell
221-
Jméno Datum Věc Částka v korunách
222-
3 Libor 2020-03-05 Pivo 124
223-
4 Petr 2020-03-18 Pytel na odpadky
221+
jmeno datum vec cena
222+
3 Libor 2020-03-05 Pivo 124
223+
4 Petr 2020-03-18 Pytel na odpadky 75
224224
```
225225

226226
Pokud se chceme podívat třeba na první tři řádky, nemusíme před dvojtečku psát 0, stačí napsat `iloc[:3]`.
@@ -230,10 +230,10 @@ print(nakupy.iloc[:3])
230230
```
231231

232232
```shell
233-
Jméno Datum Věc Částka v korunách
234-
0 Petr 2020-02-05 Prací prášek 399
235-
1 Ondra 2020-02-08 Savo 80
236-
2 Petr 2020-02-24 Toaletní papír 65
233+
jmeno datum vec cena
234+
0 Petr 2020-02-05 Prací prášek 399
235+
1 Ondra 2020-02-08 Savo 80
236+
2 Petr 2020-02-24 Toaletní papír 65
237237
```
238238

239239
Podobně si můžeme nechat vypsat poslední tři řádky. Pokud víme, že řádků je 10, chceme vypsat řádky od osmého dále. Nyní se nabízí napsat číslo před dvojtečku. Píšeme tam ale 8, protože řádek, jehož číslo je před dvojtečkou, je vždy součástí výpisu.
@@ -243,10 +243,10 @@ print(nakupy.iloc[8:])
243243
```
244244

245245
```shell
246-
Jméno Datum Věc Částka v korunách
247-
8 Zuzka 2020-06-05 Savo 80
248-
9 Pavla 2020-06-13 Máslo 50
249-
10 Ondra 2020-07-25 Káva 300
246+
jmeno datum vec cena
247+
8 Zuzka 2020-06-05 Savo 80
248+
9 Pavla 2020-06-13 Máslo 50
249+
10 Ondra 2020-07-25 Káva 300
250250
```
251251

252252
Nevýhodou postupu je, že si musíme předem zjistit, jak kolik řádků máme. U seznamů už ale existoval trik použití záporného čísla. Ten můžeš použít i v `pandas`. Pokud napíšeš `iloc[-3:]`, získáš též poslední tři řádky.
@@ -256,10 +256,10 @@ print(nakupy.iloc[-3:])
256256
```
257257

258258
```shell
259-
Jméno Datum Věc Částka v korunách
260-
8 Zuzka 2020-06-05 Savo 80
261-
9 Pavla 2020-06-13 Máslo 50
262-
10 Ondra 2020-07-25 Káva 300
259+
jmeno datum vec cena
260+
8 Zuzka 2020-06-05 Savo 80
261+
9 Pavla 2020-06-13 Máslo 50
262+
10 Ondra 2020-07-25 Káva 300
263263
```
264264

265265

@@ -272,12 +272,12 @@ print(nakupy.head())
272272
```
273273

274274
```shell
275-
Jméno Datum Věc Částka v korunách
276-
0 Petr 2020-02-05 Prací prášek 399
277-
1 Ondra 2020-02-08 Savo 80
278-
2 Petr 2020-02-24 Toaletní papír 65
279-
3 Libor 2020-03-05 Pivo 124
280-
4 Petr 2020-03-18 Pytel na odpadky 75
275+
jmeno datum vec cena
276+
0 Petr 2020-02-05 Prací prášek 399
277+
1 Ondra 2020-02-08 Savo 80
278+
2 Petr 2020-02-24 Toaletní papír 65
279+
3 Libor 2020-03-05 Pivo 124
280+
4 Petr 2020-03-18 Pytel na odpadky 75
281281
```
282282

283283
Často je užitečné podívat se spíše na konec souboru. Pokud jsou data seřazená podle času, uvidíme na konci souboru nejnovější data, která nás často (např. u kurzu měn nebo akcií) zajímají víc než dávná historie.
@@ -287,12 +287,12 @@ print(nakupy.tail())
287287
```
288288

289289
```shell
290-
Jméno Datum Věc Částka v korunách
291-
6 Ondra 2020-04-22 Toaletní papír 120
292-
7 Míša 2020-05-05 Pečící papír 30
293-
8 Zuzka 2020-06-05 Savo 80
294-
9 Pavla 2020-06-13 Máslo 50
295-
10 Ondra 2020-07-25 Káva 300
290+
jmeno datum vec cena
291+
6 Ondra 2020-04-22 Toaletní papír 120
292+
7 Míša 2020-05-05 Pečící papír 30
293+
8 Zuzka 2020-06-05 Savo 80
294+
9 Pavla 2020-06-13 Máslo 50
295+
10 Ondra 2020-07-25 Káva 300
296296
```
297297

298298
#### Výběr řádků a sloupců podle čísla
@@ -311,7 +311,7 @@ print(nakupy.iloc[:5,0])
311311
2 Petr
312312
3 Libor
313313
4 Petr
314-
Name: Jméno, dtype: object
314+
Name: jmeno, dtype: object
315315
```
316316

317317
U sloupců ale často narazíme na to, že jich chceme několik, ale ony nutně nemusí být vedle sebe. nás u nákupů asi bude nejvíce zajímat jméno a částka. Abychom dali dohromady dvě čísla, která neleží vedle sebe, můžeme použít seznam. Pro prvních pět nákupů tedy jako druhý parametr napíšeme `[0,3]`.
@@ -321,12 +321,12 @@ print(nakupy.iloc[:5,[0,3]])
321321
```
322322

323323
```shell
324-
Jméno Částka v korunách
325-
0 Petr 399
326-
1 Ondra 80
327-
2 Petr 65
328-
3 Libor 124
329-
4 Petr 75
324+
jmeno cena
325+
0 Petr 399
326+
1 Ondra 80
327+
2 Petr 65
328+
3 Libor 124
329+
4 Petr 75
330330
```
331331

332332
Pokud bys chtěla vidět všechny řádky, jako první parametr napiš pouze dvojtečku.
@@ -336,16 +336,16 @@ print(nakupy.iloc[:,[0,3]])
336336
```
337337

338338
```shell
339-
Jméno Částka v korunách
340-
0 Petr 399
341-
1 Ondra 80
342-
2 Petr 65
343-
3 Libor 124
344-
4 Petr 75
345-
5 Míša 130
346-
6 Ondra 120
347-
7 Míša 30
348-
8 Zuzka 80
349-
9 Pavla 50
350-
10 Ondra 300
339+
jmeno cena
340+
0 Petr 399
341+
1 Ondra 80
342+
2 Petr 65
343+
3 Libor 124
344+
4 Petr 75
345+
5 Míša 130
346+
6 Ondra 120
347+
7 Míša 30
348+
8 Zuzka 80
349+
9 Pavla 50
350+
10 Ondra 300
351351
```

0 commit comments

Comments
 (0)