[sw,hu,cs] chore(i18n): sync translations

Sync translations with latest source changes.
Languages: Swahili [sw], Hungarian [hu], Czech [cs]
pull/798/head
localizeflow[bot] 7 days ago
parent 9a0682b36d
commit 991585d1cb

@ -96,8 +96,8 @@
"language_code": "cs"
},
"2-Working-With-Data/07-python/README.md": {
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:56:55+00:00",
"original_hash": "fb29e3e0be486fe8f15d50bdade79eb1",
"translation_date": "2026-07-17T18:15:19+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "cs"
},

@ -2,59 +2,61 @@
| ![ Sketchnote od [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: |
| Práce s Pythonem - _Sketchnote od [@nitya](https://twitter.com/nitya)_ |
| Práce s Pythonem - _Sketchnote od [@nitya](https://twitter.com/nitya)_ |
[![Úvodní video](../../../../translated_images/cs/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y)
Databáze nabízejí velmi efektivní způsoby ukládání dat a jejich dotazování pomocí dotazovacích jazyků, ale nejflexibilnějším způsobem zpracování dat je napsání vlastního programu pro manipulaci s daty. V mnoha případech by bylo efektivnější použít dotaz na databázi. Nicméně v některých situacích, kdy je potřeba složitější zpracování dat, to nelze snadno provést pomocí SQL.
Zpracování dat lze naprogramovat v jakémkoli programovacím jazyce, ale existují určité jazyky, které jsou na vyšší úrovni, pokud jde o práci s daty. Datoví vědci obvykle preferují jeden z následujících jazyků:
I když databáze nabízejí velmi efektivní způsoby ukládání dat a jejich dotazování pomocí dotazovacích jazyků, nejobecnější způsob zpracování dat je napsat si vlastní program pro manipulaci s daty. V mnoha případech je však efektivnější použít dotaz v databázi. Nicméně v některých případech, kdy je třeba složitější zpracování dat, to nelze snadno provést pomocí SQL.
Zpracování dat lze naprogramovat v jakémkoli programovacím jazyce, ale existují určité jazyky, které jsou vyšší úrovně vzhledem k práci s daty. Data vědci obvykle preferují jeden z následujících jazyků:
* **[Python](https://www.python.org/)**, univerzální programovací jazyk, který je často považován za jednu z nejlepších možností pro začátečníky díky své jednoduchosti. Python má mnoho dalších knihoven, které vám mohou pomoci vyřešit praktické problémy, jako je extrakce dat ze ZIP archivu nebo převod obrázku na odstíny šedi. Kromě datové vědy se Python často používá i pro vývoj webových aplikací.
* **[R](https://www.r-project.org/)** je tradiční nástroj vyvinutý s ohledem na statistické zpracování dat. Obsahuje také rozsáhlé úložiště knihoven (CRAN), což z něj činí dobrou volbu pro zpracování dat. Nicméně R není univerzální programovací jazyk a mimo oblast datové vědy se používá jen zřídka.
* **[Julia](https://julialang.org/)** je další jazyk vyvinutý speciálně pro datovou vědu. Je navržen tak, aby poskytoval lepší výkon než Python, což z něj činí skvělý nástroj pro vědecké experimentování.
* **[Python](https://www.python.org/)**, obecně použitelný programovací jazyk, který je často považován za jednu z nejlepších možností pro začátečníky díky své jednoduchosti. Python má spoustu doplňkových knihoven, které vám mohou pomoci vyřešit mnoho praktických problémů, jako je extrakce dat ze ZIP archivu nebo převod obrázku na odstíny šedi. Kromě datové vědy se Python často používá také pro vývoj webu.
* **[R](https://www.r-project.org/)** je tradiční nástroj vyvinutý s ohledem na statistické zpracování dat. Obsahuje také velký repozitář knihoven (CRAN), což z něj činí dobrou volbu pro zpracování dat. Nicméně R není obecně použitelný programovací jazyk a mimo oblast datové vědy se používá zřídka.
* **[Julia](https://julialang.org/)** je další jazyk vyvinutý speciálně pro datovou vědu. Má poskytovat lepší výkon než Python, což z něj činí skvělý nástroj pro vědecké experimenty.
V této lekci se zaměříme na použití Pythonu pro jednoduché zpracování dat. Předpokládáme základní znalost tohoto jazyka. Pokud chcete hlubší úvod do Pythonu, můžete se podívat na některý z následujících zdrojů:
V této lekci se zaměříme na použití Pythonu pro jednoduché zpracování dat. Předpokládáme základní znalost jazyka. Pokud chcete hlubší průvodce Pythonem, můžete se obrátit na některý z následujících zdrojů:
* [Naučte se Python zábavným způsobem pomocí grafiky Turtle a fraktálů](https://github.com/shwars/pycourse) - rychlý úvodní kurz programování v Pythonu na GitHubu
* [Udělejte své první kroky s Pythonem](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) - vzdělávací cesta na [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Naučte se Python zábavnou formou pomocí turtle grafiky a fraktálů](https://github.com/shwars/pycourse) - GitHubový rychlý úvod do programování v Pythonu
* [Udělte své první kroky s Pythonem](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Výuková cesta na [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Data mohou mít mnoho podob. V této lekci se zaměříme na tři formy dat - **tabulková data**, **text** a **obrázky**.
Data mohou mít mnoho podob. V této lekci zvážíme tři formy dat - **tabulková data**, **text** a **obrázky**.
Zaměříme se na několik příkladů zpracování dat, místo abychom vám poskytli kompletní přehled všech souvisejících knihoven. To vám umožní získat hlavní představu o tom, co je možné, a zanechá vás s pochopením, kde najít řešení vašich problémů, když je budete potřebovat.
Zaměříme se na několik příkladů zpracování dat místo poskytování úplného přehledu všech souvisejících knihoven. To vám umožní získat hlavní představu o tom, co je možné, a poskytne vám představu, kde hledat řešení vašich problémů, když je budete potřebovat.
> **Nejužitečnější rada**. Když potřebujete provést určitou operaci na datech, kterou nevíte, jak provést, zkuste ji vyhledat na internetu. [Stackoverflow](https://stackoverflow.com/) obvykle obsahuje mnoho užitečných ukázek kódu v Pythonu pro mnoho typických úkolů.
> **Nejužitečnější rada**. Kdykoli potřebujete provést určitou operaci s daty, kterou neznáte, jak provést, zkuste ji vyhledat na internetu. [Stackoverflow](https://stackoverflow.com/) obvykle obsahuje spoustu užitečných ukázek kódu v Pythonu pro mnoho typických úloh.
## [Kvíz před lekcí](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## [Přednáškový kvíz](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Tabulková data a DataFrame
S tabulkovými daty jste se již setkali, když jsme mluvili o relačních databázích. Když máte hodně dat, která jsou obsažena v mnoha různých propojených tabulkách, rozhodně má smysl použít SQL pro práci s nimi. Nicméně existuje mnoho případů, kdy máme tabulku dat a potřebujeme získat nějaké **pochopení** nebo **poznatky** o těchto datech, jako je rozložení, korelace mezi hodnotami atd. V datové vědě existuje mnoho situací, kdy potřebujeme provést nějaké transformace původních dat, následované vizualizací. Oba tyto kroky lze snadno provést pomocí Pythonu.
S tabulkovými daty jste se již setkali, když jsme mluvili o relačních databázích. Když máte hodně dat uložených v mnoha propojených tabulkách, určitě má smysl použít SQL pro práci s nimi. Nicméně existuje mnoho případů, kdy máme tabulku dat a potřebujeme získat nějaké **pochopení** nebo **informace** o těchto datech, například rozložení, korelaci mezi hodnotami atd. V datové vědě je mnoho případů, kdy potřebujeme provést nějaké transformace původních dat, následované vizualizací. Oba tyto kroky lze snadno provést pomocí Pythonu.
Existují dvě nejdůležitější knihovny v Pythonu, které vám mohou pomoci pracovat s tabulkovými daty:
* **[Pandas](https://pandas.pydata.org/)** umožňuje manipulovat s tzv. **DataFrame**, což jsou analogie relačních tabulek. Můžete mít pojmenované sloupce a provádět různé operace na řádcích, sloupcích a DataFrame obecně.
* **[Numpy](https://numpy.org/)** je knihovna pro práci s **tensory**, tj. vícerozměrnými **poli**. Pole má hodnoty stejného základního typu a je jednodušší než DataFrame, ale nabízí více matematických operací a vytváří menší režii.
Existují dvě nejpoužívanější knihovny v Pythonu, které vám pomohou pracovat s tabulkovými daty:
* **[Pandas](https://pandas.pydata.org/)** umožňuje manipulaci s tzv. **Dataframe**, což jsou analogie relačních tabulek. Můžete mít pojmenované sloupce a provádět různé operace s řádky, sloupci a dataframy obecně.
* **[Numpy](https://numpy.org/)** je knihovna pro práci s **tenzory**, tedy vícerozměrnými **poli**. Pole mají hodnoty stejného základního typu a jsou jednodušší než dataframy, ale nabízejí více matematických operací a vytváří méně režie.
Existuje také několik dalších knihoven, které byste měli znát:
* **[Matplotlib](https://matplotlib.org/)** je knihovna používaná pro vizualizaci dat a vykreslování grafů
* **[SciPy](https://www.scipy.org/)** je knihovna s některými dalšími vědeckými funkcemi. Již jsme se s touto knihovnou setkali, když jsme mluvili o pravděpodobnosti a statistice
* **[Matplotlib](https://matplotlib.org/)** je knihovna používaná pro vizualizaci dat a kreslení grafů
* **[SciPy](https://www.scipy.org/)** je knihovna s některými dalšími vědeckými funkcemi. S touto knihovnou jsme se již setkali při probírání pravděpodobnosti a statistik.
Zde je kousek kódu, který byste obvykle použili k importu těchto knihoven na začátku svého programu v Pythonu:
Zde je úryvek kódu, který byste typicky použili na začátku vašeho Python programu pro import těchto knihoven:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need
from scipy import ... # musíte specifikovat přesné podbalíčky, které potřebujete
```
Pandas je založen na několika základních konceptech.
### Series
### Series
**Series** je sekvence hodnot, podobná seznamu nebo numpy poli. Hlavní rozdíl je v tom, že Series má také **index**, a když s nimi pracujeme (např. je sčítáme), index se bere v úvahu. Index může být tak jednoduchý jako číslo řádku (je to výchozí index při vytváření Series ze seznamu nebo pole), nebo může mít složitou strukturu, jako je časový interval.
**Series** je posloupnost hodnot, podobná seznamu nebo numpy poli. Hlavní rozdíl je, že series má také **index**, a když operujeme se series (například je sčítáme), index se bere v úvahu. Index může být tak jednoduchý jako celočíselné číslo řádku (to je výchozí index při tvorbě series z listu nebo pole), nebo může mít složitější strukturu, jako např. časový interval.
> **Poznámka**: V doprovodném notebooku [`notebook.ipynb`](notebook.ipynb) je úvodní kód pro Pandas. Zde uvádíme pouze některé příklady, ale určitě se podívejte na celý notebook.
> **Poznámka**: V doprovodném notebooku [`notebook.ipynb`](notebook.ipynb) se nachází úvodní kód pro Pandas. Zde jen krátce nastíníme několik příkladů a samozřejmě doporučujeme podívat se na celý notebook.
Představme si příklad: chceme analyzovat prodeje našeho stánku se zmrzlinou. Vygenerujeme sérii čísel prodejů (počet prodaných položek každý den) za určité časové období:
Uvažujme příklad: chceme analyzovat prodeje našeho stánku se zmrzlinou. Vygenerujme sérii prodejních čísel (počet prodaných kusů každý den) za určité časové období:
```python
start_date = "Jan 1, 2020"
@ -64,47 +66,47 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Graf časové řady](../../../../translated_images/cs/timeseries-1.80de678ab1cf727e.webp)
![Časová série - graf](../../../../translated_images/cs/timeseries-1.80de678ab1cf727e.webp)
Předpokládejme, že každý týden pořádáme večírek pro přátele a bereme dalších 10 balení zmrzliny na večírek. Můžeme vytvořit další sérii, indexovanou podle týdne, abychom to ukázali:
Nyní předpokládejme, že každý týden pořádáme párty pro přátele, a k tomuto účelu vezmeme navíc 10 balení zmrzliny. Můžeme vytvořit další sérii, indexovanou týdnem, aby to demonstrovala:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
Když sečteme dvě série dohromady, získáme celkový počet:
Když přidáme dvě série dohromady, dostaneme celkový počet:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Graf časové řady](../../../../translated_images/cs/timeseries-2.aae51d575c55181c.webp)
![Časová série - graf](../../../../translated_images/cs/timeseries-2.aae51d575c55181c.webp)
> **Poznámka**: Nepoužíváme jednoduchou syntaxi `total_items+additional_items`. Pokud bychom to udělali, dostali bychom mnoho hodnot `NaN` (*Not a Number*) v výsledné sérii. To je proto, že některé hodnoty indexu v sérii `additional_items` chybí, a přičtení `NaN` k čemukoli vede k `NaN`. Proto musíme při sčítání specifikovat parametr `fill_value`.
> **Poznámka**, že nepoužíváme jednoduchou syntaxi `total_items+additional_items`. Kdybychom to udělali, dostali bychom mnoho hodnot `NaN` (*Not a Number*) v výsledné sérii. Je to proto, že některé hodnoty indexu v sérii `additional_items` chybí, a přičítání `NaN` k čemukoli vede k výsledku `NaN`. Proto při sčítání musíme zadat parametr `fill_value`.
U časových řad můžeme také **převzorkovat** sérii na různé časové intervaly. Například pokud chceme vypočítat průměrný objem prodeje měsíčně, můžeme použít následující kód:
U časových řad můžeme také **zpětně měřit vzorkování** série s různými časovými intervaly. Například, chcete-li vypočítat průměrný objem prodeje měsíčně, můžeme použít následující kód:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Měsíční průměry časové řady](../../../../translated_images/cs/timeseries-3.f3147cbc8c624881.webp)
![Průměrné měsíční hodnoty časové řady](../../../../translated_images/cs/timeseries-3.f3147cbc8c624881.webp)
### DataFrame
DataFrame je v podstatě kolekce sérií se stejným indexem. Můžeme spojit několik sérií dohromady do DataFrame:
DataFrame je v podstatě kolekce series, které mají stejný index. Můžeme několik series spojit dohromady do DataFrame:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
To vytvoří horizontální tabulku jako tuto:
To vytvoří horizontální tabulku jako tato:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
Můžeme také použít Series jako sloupce a specifikovat názvy sloupců pomocí slovníku:
Můžeme také použít Series jako sloupce a pojmenovat je pomocí slovníku:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
To nám dá tabulku jako tuto:
To nám dá tabulku jako tato:
| | A | B |
| --- | --- | ------ |
@ -118,39 +120,39 @@ To nám dá tabulku jako tuto:
| 7 | 8 | very |
| 8 | 9 | much |
**Poznámka**: Tuto tabulku můžeme také získat transpozicí předchozí tabulky, např. napsáním
**Poznámka**, že tuto tabulku můžeme také získat transpozicí předchozí tabulky, např. takto:
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
df = pd.DataFrame([a,b]).T.rename(columns={ 0 : 'A', 1 : 'B' })
```
Zde `.T` znamená operaci transpozice DataFrame, tj. změnu řádků a sloupců, a operace `rename` nám umožňuje přejmenovat sloupce tak, aby odpovídaly předchozímu příkladu.
Zde `.T` znamená operaci transpozice DataFrame, tedy změnu řádků a sloupců, a operace `rename` nám umožňuje přejmenovat sloupce tak, aby odpovídaly předchozímu příkladu.
Zde je několik nejdůležitějších operací, které můžeme provádět na DataFrame:
Zde je pár nejdůležitějších operací, které můžeme s DataFrame provádět:
**Výběr sloupců**. Můžeme vybrat jednotlivé sloupce napsáním `df['A']` - tato operace vrací Series. Můžeme také vybrat podmnožinu sloupců do jiného DataFrame napsáním `df[['B','A']]` - to vrací další DataFrame.
**Výběr sloupců**. Můžeme vybrat jednotlivé sloupce napsáním `df['A']` - tato operace vrací Series. Také můžeme vybrat podmnožinu sloupců do jiného DataFrame, když napíšeme `df[['B','A']]` - to vrátí jiný DataFrame.
**Filtrování** pouze určitých řádků podle kritérií. Například, abychom ponechali pouze řádky se sloupcem `A` větším než 5, můžeme napsat `df[df['A']>5]`.
**Filtrování** pouze určitých řádků podle kritéria. Například, pokud chceme nechat pouze řádky, kde je hodnota ve sloupci `A` větší než 5, napíšeme `df[df['A']>5]`.
> **Poznámka**: Způsob, jakým filtrování funguje, je následující. Výraz `df['A']<5` vrací booleovskou sérii, která označuje, zda je výraz `True` nebo `False` pro každý prvek původní série `df['A']`. Když je booleovská série použita jako index, vrací podmnožinu řádků v DataFrame. Proto není možné použít libovolný booleovský výraz v Pythonu, například napsání `df[df['A']>5 and df['A']<7]` by bylo špatné. Místo toho byste měli použít speciální operaci `&` na booleovské sérii, napsáním `df[(df['A']>5) & (df['A']<7)]` (*závorky jsou zde důležité*).
> **Poznámka**: Filtrování funguje takto. Výraz `df['A']<5` vrátí logickou sérii, která označuje, zda je výraz `True` nebo `False` pro každý prvek originální série `df['A']`. Když je logická série použita jako index, vrátí podmnožinu řádků ve DataFrame. Proto nelze použít libovolný Python boolean výraz, např. psaní `df[df['A']>5 and df['A']<7]` by bylo nesprávné. Místo toho byste měli použít speciální operátor `&` na logických sériích, např. `df[(df['A']>5) & (df['A']<7)]` (*závorky jsou zde důležité*).
**Vytváření nových vypočitatelných sloupců**. Můžeme snadno vytvořit nové vypočitatelné sloupce pro náš DataFrame pomocí intuitivního výrazu jako tento:
**Vytváření nových vypočitatelných sloupců**. Můžeme snadno vytvořit nové vypočitatelné sloupce pro náš DataFrame použitím intuitivního výrazu jako je tento:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Tento příklad vypočítává odchylku A od její průměrné hodnoty. Co se zde vlastně děje, je to, že počítáme sérii a poté tuto sérii přiřazujeme na levou stranu, čímž vytváříme další sloupec. Proto nemůžeme použít žádné operace, které nejsou kompatibilní se sériemi, například následující kód je špatný:
Tento příklad počítá odchylku sloupce A od jeho průměrné hodnoty. Co se zde vlastně děje, je výpočet series, která je pak přiřazena vlevo, čímž vzniká další sloupec. Tedy nemůžeme použít žádné operace, které nejsou kompatibilní se series, například následující kód je špatně:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
# Nesprávný kód -> df['ADescr'] = "Low" pokud df['A'] < 5 jinak "Hi"
df['LenB'] = len(df['B']) # <- Nesprávný výsledek
```
Poslední příklad, i když je syntakticky správný, nám dává špatný výsledek, protože přiřazuje délku série `B` všem hodnotám ve sloupci, a ne délku jednotlivých prvků, jak jsme zamýšleli.
Poslední příklad, ač syntakticky správný, dává nesprávný výsledek, protože přiřazuje délku série `B` všem hodnotám ve sloupci, místo délky jednotlivých prvků, jak jsme chtěli.
Pokud potřebujeme vypočítat složité výrazy jako tento, můžeme použít funkci `apply`. Poslední příklad lze napsat takto:
Pokud potřebujeme vypočítat složitější výrazy, můžeme použít funkci `apply`. Poslední příklad lze zapsat takto:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
# nebo
df['LenB'] = df['B'].apply(len)
```
Po výše uvedených operacích skončíme s následujícím DataFrame:
Po operacích výše dostaneme následující DataFrame:
| | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- |
@ -164,22 +166,22 @@ Po výše uvedených operacích skončíme s následujícím DataFrame:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Výběr řádků podle čísel** lze provést pomocí konstruktu `iloc`. Například, abychom vybrali prvních 5 řádků z DataFrame:
**Výběr řádků podle čísel** lze provést pomocí konstrukce `iloc`. Například pro výběr prvních 5 řádků z DataFrame:
```python
df.iloc[:5]
```
**Seskupování** se často používá k získání výsledku podobného *kontingenčním tabulkám* v Excelu. Předpokládejme, že chceme vypočítat průměrnou hodnotu sloupce `A` pro každé dané číslo `LenB`. Poté můžeme seskupit náš DataFrame podle `LenB` a zavolat `mean`:
**Seskupování** se často používá k získání výsledku podobného *kontingenčním tabulkám* v Excelu. Předpokládejme, že chceme spočítat průměrnou hodnotu sloupce `A` pro každý daný počet `LenB`. Pak můžeme seskupit náš DataFrame podle `LenB` a zavolat `mean`:
```python
df.groupby(by='LenB')[['A','DivA']].mean()
```
Pokud potřebujeme vypočítat průměr a počet prvků ve skupině, můžeme použít složitější funkci `aggregate`:
Pokud potřebujeme spočítat průměr i počet prvků ve skupině, můžeme použít složitější funkci `aggregate`:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
To nám dá následující tabulku:
Toto nám dává následující tabulku:
| LenB | Count | Mean |
| ---- | ----- | -------- |
@ -190,92 +192,97 @@ To nám dá následující tabulku:
| 6 | 2 | 6.000000 |
### Získávání dat
Viděli jsme, jak snadné je vytvořit Series a DataFrames z objektů v Pythonu. Nicméně, data obvykle přicházejí ve formě textového souboru nebo tabulky v Excelu. Naštěstí nám Pandas nabízí jednoduchý způsob, jak načíst data z disku. Například čtení CSV souboru je tak jednoduché:
Viděli jsme, jak je snadné sestavit Series a DataFrames z Python objektů. Data však obvykle přicházejí ve formě textového souboru nebo Excel tabulky. Naštěstí nám Pandas nabízí jednoduchý způsob, jak načíst data z disku. Například čtení CSV souboru je takto jednoduché:
```python
df = pd.read_csv('file.csv')
```
V sekci "Výzva" uvidíme více příkladů načítání dat, včetně jejich získávání z externích webových stránek.
Uvidíme více příkladů načítání dat, včetně získávání dat z externích webových stránek, v části "Challenge"
### Tisk a Vizualizace
### Tisk a grafy
Datový vědec často musí prozkoumat data, a proto je důležité být schopen je vizualizovat. Když je DataFrame velký, často chceme jen ověřit, že vše děláme správně, tím, že si vytiskneme prvních pár řádků. To lze provést voláním `df.head()`. Pokud to spustíte z Jupyter Notebooku, vytiskne se DataFrame v pěkné tabulkové podobě.
Data Scientist často musí prozkoumávat data, proto je důležité být schopný je vizualizovat. Když je DataFrame velký, často chceme jen mít jistotu, že děláme vše správně, vytištěním několika prvních řádků. To lze udělat zavoláním `df.head()`. Pokud to spouštíte v Jupyter Notebooku, DataFrame se vytiskne v pěkné tabulkové podobě.
Také jsme viděli použití funkce `plot` k vizualizaci některých sloupců. Zatímco `plot` je velmi užitečný pro mnoho úkolů a podporuje různé typy grafů pomocí parametru `kind=`, vždy můžete použít knihovnu `matplotlib` k vytvoření něčeho složitějšího. Vizualizaci dat se budeme podrobně věnovat v samostatných lekcích kurzu.
Viděli jsme také použití funkce `plot` k vizualizaci některých sloupců. Zatímco `plot` je velmi užitečný pro mnoho úkolů a podporuje mnoho různých typů grafů přes parametr `kind=`, vždy můžete použít přímo knihovnu `matplotlib` k vytvoření něčeho složitějšího. Podrobněji pokryjeme vizualizaci dat v samostatných lekcích kurzu.
Tento přehled pokrývá nejdůležitější koncepty Pandas, nicméně knihovna je velmi bohatá a neexistují žádné limity, co s ní můžete dělat! Pojďme nyní aplikovat tyto znalosti na řešení konkrétního problému.
Tento přehled pokrývá nejdůležitější koncepty Pandas, avšak knihovna je velmi bohatá a neexistuje žádný limit tomu, co s ní můžete dělat! Nyní tuto znalost použijeme k řešení konkrétního problému.
## 🚀 Výzva 1: Analýza šíření COVID
Prvním problémem, na který se zaměříme, je modelování epidemického šíře COVID-19. K tomu použijeme data o počtu nakažených jednotlivců v různých zemích, která poskytuje [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) na [Johns Hopkins University](https://jhu.edu/). Dataset je dostupný v [tomto GitHub repozitáři](https://github.com/CSSEGISandData/COVID-19).
Prvním problémem, na který se zaměříme, je modelování šíření epidemie COVID-19. K tomu použijeme data o počtu nakažených jedinců v různých zemích, poskytovaná [Centrem pro systémy vědy a inženýrství](https://systems.jhu.edu/) (CSSE) na [Johns Hopkins University](https://jhu.edu/). Datová sada je dostupná v [tomto GitHub repozitáři](https://github.com/CSSEGISandData/COVID-19).
Protože chceme ukázat, jak pracovat s daty, zveme vás k otevření [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) a jeho přečtení od začátku do konce. Můžete také spustit buňky a vyzkoušet některé výzvy, které jsme pro vás nechali na konci.
Protože chceme ukázat, jak pracovat s daty, zveme vás k otevření [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) a přečtení od začátku do konce. Můžete také spouštět buňky a vyzkoušet některé výzvy, které jsme pro vás nechali na konci.
![COVID Spread](../../../../translated_images/cs/covidspread.f3d131c4f1d260ab.webp)
![COVID šíření](../../../../translated_images/cs/covidspread.f3d131c4f1d260ab.webp)
> Pokud nevíte, jak spustit kód v Jupyter Notebooku, podívejte se na [tento článek](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
> Pokud nevíte, jak spouštět kód v Jupyter Notebooku, podívejte se na [tento článek](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Práce s nestrukturovanými daty
Zatímco data často přicházejí v tabulkové podobě, v některých případech musíme pracovat s méně strukturovanými daty, například textem nebo obrázky. V takovém případě, abychom mohli použít techniky zpracování dat, které jsme viděli výše, musíme nějakým způsobem **extrahovat** strukturovaná data. Zde je několik příkladů:
I když data velmi často přicházejí v tabulární podobě, v některých případech je potřeba pracovat s méně strukturovanými daty, například textem nebo obrázky. V takovém případě, abychom mohli aplikovat výše zmíněné techniky zpracování dat, potřebujeme nějakým způsobem **extrahovat** strukturovaná data. Zde je několik příkladů:
* Extrakce klíčových slov z textu a sledování, jak často se tato klíčová slova objevují
* Použití neuronových sítí k extrakci informací o objektech na obrázku
* Získání informací o emocích lidí na záznamu z kamery
* Extrahování klíčových slov z textu a sledování, jak často se tato slova objevují
* Používání neuronových sítí k získání informací o objektech na obrázku
* Získání informací o emocích lidí z videa z kamery
## 🚀 Výzva 2: Analýza COVID publikací
V této výzvě budeme pokračovat v tématu pandemie COVID a zaměříme se na zpracování vědeckých publikací na toto téma. Existuje [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) s více než 7000 (v době psaní) publikacemi o COVID, dostupný s metadaty a abstrakty (a u přibližně poloviny z nich je k dispozici také celý text).
V této výzvě budeme pokračovat s tématem pandemie COVID a zaměříme se na zpracování vědeckých prací na toto téma. Existuje [datová sada CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) s více než 7000 (v době psaní) pracemi o COVID, dostupná s metadaty a abstrakty (a u asi poloviny je také poskytnut celý text).
Kompletní příklad analýzy tohoto datasetu pomocí [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) kognitivní služby je popsán [v tomto blogovém příspěvku](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Budeme diskutovat zjednodušenou verzi této analýzy.
Kompletní příklad analýzy této datové sady pomocí kognitivní služby [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) je popsán [v tomto blogovém příspěvku](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Budeme diskutovat zjednodušenou verzi této analýzy.
> **NOTE**: Kopii datasetu neposkytujeme jako součást tohoto repozitáře. Možná budete muset nejprve stáhnout soubor [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) z [tohoto datasetu na Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Registrace na Kaggle může být vyžadována. Dataset můžete také stáhnout bez registrace [zde](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), ale bude zahrnovat všechny plné texty kromě souboru s metadaty.
> **POZNÁMKA**: Nekončíme kopii datové sady jako součást tohoto repozitáře. Nejprve si budete možná muset stáhnout soubor [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) z [této datové sady na Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Může být vyžadována registrace na Kaggle. Datovou sadu můžete také stáhnout bez registrace [odsud](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), ale bude obsahovat všechny plné texty kromě metadata souboru.
Otevřete [`notebook-papers.ipynb`](notebook-papers.ipynb) a přečtěte si jej od začátku do konce. Můžete také spustit buňky a vyzkoušet některé výzvy, které jsme pro vás nechali na konci.
Otevřete [`notebook-papers.ipynb`](notebook-papers.ipynb) a přečtěte si jej od začátku do konce. Můžete také spouštět buňky a vyzkoušet některé výzvy, které pro vás zanechali na konci.
![Covid Medical Treatment](../../../../translated_images/cs/covidtreat.b2ba59f57ca45fbc.webp)
![Covid lékařská léčba](../../../../translated_images/cs/covidtreat.b2ba59f57ca45fbc.webp)
## Zpracování obrazových dat
V poslední době byly vyvinuty velmi výkonné AI modely, které nám umožňují porozumět obrázkům. Existuje mnoho úkolů, které lze řešit pomocí předtrénovaných neuronových sítí nebo cloudových služeb. Některé příklady zahrnují:
Nedávno byly vyvinuty velmi výkonné AI modely, které nám umožňují rozumět obrázkům. Existuje mnoho úloh, které lze vyřešit pomocí předtrénovaných neuronových sítí nebo cloudových služeb. Některé příklady zahrnují:
* **Klasifikace obrázků**, která vám může pomoci kategorizovat obrázek do jedné z předdefinovaných tříd. Svůj vlastní klasifikátor obrázků můžete snadno vytrénovat pomocí služeb jako [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Detekce objektů** k identifikaci různých objektů na obrázku. Služby jako [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) mohou detekovat řadu běžných objektů a můžete vytrénovat model [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) k detekci specifických objektů.
* **Detekce obličeje**, včetně věku, pohlaví a emocí. To lze provést pomocí [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Klasifikace obrázků**, která může pomoci rozdělit obrázek do jedné z předdefinovaných kategorií. Svůj vlastní klasifikátor obrázků můžete jednoduše natrénovat pomocí služeb jako je [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Detekce objektů** k identifikaci různých objektů na obrázku. Služby jako [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) dokážou detekovat řadu běžných objektů a model [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) můžete natrénovat na konkrétní objekty, které vás zajímají.
* **Detekce obličejů**, včetně detekce věku, pohlaví a emocí. To lze provést pomocí [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Všechny tyto cloudové služby lze volat pomocí [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), a tak je lze snadno začlenit do vašeho workflow pro průzkum dat.
Všechny tyto cloudové služby lze volat pomocí [Python SDK](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), a tak je snadno začlenit do vašeho workflow prozkoumávání dat.
Zde jsou některé příklady průzkumu dat z obrazových zdrojů:
* V blogovém příspěvku [Jak se naučit datovou vědu bez programování](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) zkoumáme fotografie z Instagramu, snažíme se pochopit, co způsobuje, že lidé dávají více lajků na fotografii. Nejprve extrahujeme co nejvíce informací z obrázků pomocí [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), a poté použijeme [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) k vytvoření interpretovatelného modelu.
* V [Workshopu o studiu obličejů](https://github.com/CloudAdvocacy/FaceStudies) používáme [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) k extrakci emocí lidí na fotografiích z událostí, abychom se pokusili pochopit, co dělá lidi šťastnými.
Zde jsou některé příklady zkoumání dat z obrazových zdrojů:
* V blogovém příspěvku [Jak se učit datovou vědu bez programování](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) zkoumáme fotografie z Instagramu a snažíme se pochopit, co vede lidi k tomu, aby dalo fotografii více lajků. Nejprve extrahujeme z obrázků co nejvíce informací pomocí [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), a pak použijeme [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) k vytvoření interpretovatelného modelu.
* V [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) používáme [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) k extrahování emocí lidí na fotografiích z akcí, abychom se pokusili pochopit, co dělá lidi šťastnými.
## Závěr
Ať už máte strukturovaná nebo nestrukturovaná data, pomocí Pythonu můžete provést všechny kroky související se zpracováním a porozuměním dat. Je to pravděpodobně nejflexibilnější způsob zpracování dat, a to je důvod, proč většina datových vědců používá Python jako svůj primární nástroj. Naučit se Python do hloubky je pravděpodobně dobrý nápad, pokud to s vaší cestou v datové vědě myslíte vážně!
Ať už máte strukturovaná nebo nestrukturovaná data, pomocí Pythonu můžete provádět všechny kroky spojené se zpracováním a porozuměním dat. Je to pravděpodobně nejflexibilnější způsob zpracování dat, a proto většina datových vědců používá Python jako svůj hlavní nástroj. Pokud to s datovou vědou myslíte vážně, hlubší znalost Pythonu je pravděpodobně dobrý nápad!
## [Kvíz po přednášce](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## Recenze a samostudium
## Přehled a samostudium
**Knihy**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
* [Wes McKinney. Python pro analýzu dat: Data Wrangling s Pandas, NumPy a IPython](https://www.amazon.com/gp/product/1491957662)
**Online zdroje**
* Oficiální [10 minutový Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) tutoriál
* Oficiální tutoriál [10 minut k Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [Dokumentace k vizualizaci v Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Učení Pythonu**
* [Naučte se Python zábavným způsobem s Turtle Graphics a fraktály](https://github.com/shwars/pycourse)
* [Uděláte své první kroky s Pythonem](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Learning Path na [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Naučte se Python zábavnou formou s grafikou Turtle a fraktály](https://github.com/shwars/pycourse)
* [Uděláte své první kroky s Pythonem](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Výuková cesta na [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Zadání
[Proveďte podrobnější studii dat pro výzvy výše](assignment.md)
[Proveďte podrobnější studii dat pro výše uvedené výzvy](assignment.md)
## Poděkování
Tuto lekci vytvořil s ♥️ [Dmitry Soshnikov](http://soshnikov.com)
Tuto lekci připravil s ♥️ [Dmitry Soshnikov](http://soshnikov.com)
---
**Prohlášení**:
Tento dokument byl přeložen pomocí služby pro automatický překlad [Co-op Translator](https://github.com/Azure/co-op-translator). I když se snažíme o přesnost, mějte na paměti, že automatické překlady mohou obsahovat chyby nebo nepřesnosti. Původní dokument v jeho původním jazyce by měl být považován za autoritativní zdroj. Pro důležité informace se doporučuje profesionální lidský překlad. Neodpovídáme za žádná nedorozumění nebo nesprávné interpretace vyplývající z použití tohoto překladu.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Prohlášení o omezení odpovědnosti**:
Tento dokument byl přeložen pomocí AI překladatelské služby [Co-op Translator](https://github.com/Azure/co-op-translator). Přestože usilujeme o co největší přesnost, mějte prosím na paměti, že automatizované překlady mohou obsahovat chyby nebo nepřesnosti. Originální dokument v jeho mateřském jazyce by měl být považován za autoritativní zdroj. Pro kritické informace se doporučuje profesionální lidský překlad. Nejsme odpovědní za jakékoli nedorozumění nebo nesprávné interpretace vzniklé použitím tohoto překladu.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -96,8 +96,8 @@
"language_code": "hu"
},
"2-Working-With-Data/07-python/README.md": {
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:55:52+00:00",
"original_hash": "fb29e3e0be486fe8f15d50bdade79eb1",
"translation_date": "2026-07-17T18:13:46+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "hu"
},

@ -1,60 +1,62 @@
# Adatok kezelése: Python és a Pandas könyvtár
| ![ Sketchnote by [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| ![ Sketchnote készítette [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: |
| Python használata - _Sketchnote by [@nitya](https://twitter.com/nitya)_ |
| Python használata - _Sketchnote készítette [@nitya](https://twitter.com/nitya)_ |
[![Bevezető videó](../../../../translated_images/hu/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y)
[![Bevezető Videó](../../../../translated_images/hu/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y)
Bár az adatbázisok hatékony módot kínálnak az adatok tárolására és lekérdezésére lekérdezési nyelvek segítségével, az adatok feldolgozásának legflexibilisebb módja az, ha saját programot írunk az adatok manipulálására. Sok esetben egy adatbázis-lekérdezés hatékonyabb megoldás lehet. Azonban, ha összetettebb adatfeldolgozásra van szükség, azt nem lehet könnyen SQL segítségével megvalósítani.
Az adatfeldolgozást bármely programozási nyelven meg lehet valósítani, de vannak olyan nyelvek, amelyek magasabb szintűek az adatokkal való munka szempontjából. Az adatelemzők általában az alábbi nyelvek egyikét részesítik előnyben:
Míg az adatbázisok nagyon hatékony módot kínálnak az adatok tárolására és lekérdezésére lekérdező nyelvek használatával, az adatok feldolgozásának legflexibilisebb módja az, ha saját programot írsz az adatok manipulálására. Sok esetben az adatbázis lekérdezés hatékonyabb megoldás lenne. Azonban bizonyos esetekben, amikor összetettebb adatfeldolgozásra van szükség, azt nem lehet könnyen megoldani SQL segítségével.
Az adatfeldolgozás bármilyen programozási nyelvvel megvalósítható, de vannak olyan nyelvek, amelyek magasabb szintűek az adatok kezelésére. Az adattudósok általában az alábbi nyelvek egyikét favorizálják:
* **[Python](https://www.python.org/)**, egy általános célú programozási nyelv, amelyet gyakran a legjobb választásnak tartanak kezdők számára egyszerűsége miatt. A Python számos kiegészítő könyvtárral rendelkezik, amelyek segítenek gyakorlati problémák megoldásában, például adatok kicsomagolása ZIP archívumból vagy képek szürkeárnyalatossá alakítása. Az adatelemzés mellett a Python gyakran használatos webfejlesztésre is.
* **[R](https://www.r-project.org/)** egy hagyományos eszköztár, amelyet statisztikai adatfeldolgozásra fejlesztettek ki. Széles könyvtárgyűjteménnyel (CRAN) rendelkezik, ami jó választássá teszi az adatok feldolgozására. Azonban az R nem általános célú programozási nyelv, és ritkán használják az adatelemzésen kívül.
* **[Julia](https://julialang.org/)** egy másik nyelv, amelyet kifejezetten adatelemzésre fejlesztettek ki. Jobb teljesítményt kínál, mint a Python, így kiváló eszköz tudományos kísérletezéshez.
* **[Python](https://www.python.org/)**, egy általános célú programozási nyelv, amelyet gyakran az egyik legjobb választásnak tartanak kezdőknek az egyszerűsége miatt. Python rengeteg extra könyvtárral rendelkezik, melyek segítenek sok gyakorlati problémát megoldani, például adat kinyerése ZIP archívumból vagy kép átalakítása szürkeárnyalatossá. Az adattudomány mellett a Python gyakran használatos webfejlesztésre is.
* **[R](https://www.r-project.org/)** egy hagyományos eszköztár, amely statisztikai adatfeldolgozásra lett kifejlesztve. Nagy könyvtárkészlettel (CRAN) rendelkezik, így jó választás az adatfeldolgozáshoz. Ugyanakkor az R nem általános célú programozási nyelv, és ritkán használják az adattudományi területen kívül.
* **[Julia](https://julialang.org/)** egy másik nyelv, amelyet kifejezetten az adattudomány céljára fejlesztettek. Célja, hogy jobb teljesítményt nyújtson, mint a Python, így kiváló eszköz tudományos kísérletekhez.
Ebben a leckében a Python használatára összpontosítunk egyszerű adatfeldolgozási feladatokhoz. Feltételezzük, hogy alapvető ismeretekkel rendelkezik a nyelvről. Ha mélyebb betekintést szeretne kapni a Pythonba, az alábbi forrásokat ajánljuk:
Ebben a leckében a Python használatára koncentrálunk egyszerű adatfeldolgozás esetén. Feltételezzük az alapvető nyelvismeretet. Ha mélyebb bevezetőt szeretnél a Python-ba, az alábbi forrásokat ajánljuk:
* [Tanulj Python-t szórakoztató módon Turtle Graphics és Fraktálok segítségével](https://github.com/shwars/pycourse) - GitHub-alapú gyors bevezető kurzus a Python programozásba
* [Tedd meg az első lépéseket a Python-nal](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Tanulási útvonal a [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) oldalon
* [Tanulj Python-t játékosan Turtle grafikával és fraktálokkal](https://github.com/shwars/pycourse) - GitHub alapú gyors Python programozás bevezető tanfolyam
* [Tedd meg az első lépéseidet Python-nal](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Tanulási útvonal a [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) oldalon
Az adatok sokféle formában érkezhetnek. Ebben a leckében három adatformát vizsgálunk meg: **táblázatos adatok**, **szöveg** és **képek**.
Az adatok sok formában érkezhetnek. Ebben a leckében három formát vizsgálunk meg - **táblázatos adatokat**, **szöveget** és **képeket**.
Néhány adatfeldolgozási példára fogunk összpontosítani, ahelyett, hogy teljes áttekintést nyújtanánk az összes kapcsolódó könyvtárról. Ez lehetővé teszi, hogy megértsük a lehetőségeket, és tudjuk, hol találhatunk megoldásokat a problémáinkra, amikor szükség van rájuk.
Néhány adatfeldolgozási példára koncentrálunk, ahelyett, hogy a kapcsolódó könyvtárakat teljes egészében bemutatnánk. Ez megengedi, hogy megértsd a fő elképzelést, és eligazodj, hol találhatod meg a megoldásokat, amikor szükséged van rájuk.
> **Legfontosabb tanács**. Ha olyan műveletet kell végrehajtania az adatokon, amelyet nem tud, hogyan kell megtenni, próbáljon meg rákeresni az interneten. [Stackoverflow](https://stackoverflow.com/) általában sok hasznos Python kódmintát tartalmaz tipikus feladatokhoz.
> **Leghasznosabb tanács**. Ha végezni szeretnél egy műveletet az adatokkal, és nem tudod, hogyan, próbálj meg rákeresni az interneten. A [Stackoverflow](https://stackoverflow.com/) rendszerint sok hasznos Python mintakódot tartalmaz sok tipikus feladathoz.
## [Előadás előtti kvíz](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Táblázatos adatok és Dataframe-ek
Már találkozott táblázatos adatokkal, amikor a relációs adatbázisokról beszéltünk. Ha sok adat van, és az sok különböző, összekapcsolt táblában található, akkor határozottan érdemes SQL-t használni az adatok kezelésére. Azonban sok esetben van egy adatunk táblázat formájában, és szeretnénk **megérteni** vagy **következtetéseket levonni** az adatokból, például az eloszlásról, az értékek közötti korrelációról stb. Az adatelemzés során gyakran szükség van az eredeti adatok átalakítására, majd vizualizálására. Mindkét lépés könnyen elvégezhető Python segítségével.
## [Bevezető kvíz](https://ff-quizzes.netlify.app/en/ds/quiz/12)
Két legfontosabb Python könyvtár segíthet a táblázatos adatok kezelésében:
* **[Pandas](https://pandas.pydata.org/)** lehetővé teszi az úgynevezett **Dataframe-ek** manipulálását, amelyek analógok a relációs táblákkal. Lehetnek elnevezett oszlopok, és különböző műveleteket végezhetünk sorokon, oszlopokon és általában a Dataframe-eken.
* **[Numpy](https://numpy.org/)** egy könyvtár **tenszorokkal**, azaz többdimenziós **tömbökkel** való munkához. A tömb azonos típusú értékeket tartalmaz, és egyszerűbb, mint a Dataframe, de több matematikai műveletet kínál, és kevesebb erőforrást igényel.
## Táblázatos Adatok és Dataframe-ek
Van néhány további könyvtár, amelyet érdemes ismerni:
* **[Matplotlib](https://matplotlib.org/)** egy könyvtár, amelyet adatvizualizációra és grafikonok rajzolására használnak
* **[SciPy](https://www.scipy.org/)** egy könyvtár további tudományos funkciókkal. Már találkoztunk ezzel a könyvtárral, amikor a valószínűségről és statisztikáról beszéltünk
Már találkoztál táblázatos adatokkal, amikor a relációs adatbázisokról beszéltünk. Ha sok adata van, és az sok, összekapcsolt táblában található, akkor kétségtelenül érdemes az SQL-t használni az adatok kezelésére. Azonban sok esetben van egy adatokat tartalmazó táblázatunk, és szükségünk van arra, hogy **megértsük** vagy **észrevegyük a mintázatokat** az adatokban, például az eloszlást, az értékek közötti korrelációt stb. Az adattudományban gyakran szükséges az eredeti adatok átalakítása, majd vizualizáció. Mindkét lépés könnyen elvégezhető Python segítségével.
Íme egy kódrészlet, amelyet általában a Python program elején használunk ezeknek a könyvtáraknak az importálására:
Pythonban két leghasznosabb könyvtár segít a táblázatos adatok kezelésében:
* **[Pandas](https://pandas.pydata.org/)** lehetővé teszi úgynevezett **Dataframe**-ek kezelését, amelyek relációs táblákhoz hasonlóak. Lehetnek elnevezett oszlopok, és különféle műveleteket végezhetünk sorokon, oszlopokon és magán a dataframe-en is.
* **[Numpy](https://numpy.org/)** egy könyvtár többdimenziós **tényezők**, azaz tömbök kezelésére. A tömbben az értékek azonos típusúak, ez egyszerűbb, mint egy dataframe, de több matematikai műveletet támogat, és kevesebb plusz terhet jelent.
Van néhány más könyvtár is, amiről tudnia kell:
* **[Matplotlib](https://matplotlib.org/)** könyvtár adatvizualizációhoz és grafikonok megrajzolásához
* **[SciPy](https://www.scipy.org/)** könyvtár néhány további tudományos függvénnyel. Ezzel a könyvtárral már találkoztunk a valószínűség és statisztika tárgyalásánál
Íme egy kódrészlet, amit általában az említett könyvtárak importálására használnál Python program elején:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need
```
from scipy import ... # meg kell adnia a pontos alcsomagokat, amikre szüksége van
```
A Pandas néhány alapvető fogalom köré épül.
A Pandas néhány alapvető koncepció köré épül.
### Sorozatok (Series)
### Sorozat (Series)
A **Series** egy értékek sorozata, hasonlóan a listához vagy numpy tömbhöz. A fő különbség az, hogy a sorozatnak van egy **indexe**, és amikor műveleteket végzünk rajta (pl. összeadjuk őket), az indexet figyelembe vesszük. Az index lehet egyszerű, mint például az egész számú sorszám (ez az alapértelmezett index, amikor listából vagy tömbből hozunk létre sorozatot), vagy lehet összetett, például dátumintervallum.
A **Series** egy értéksorozat, hasonló egy listához vagy numpy tömbhöz. A fő különbség, hogy a series-nek van egy **indexe**, és amikor műveleteket végzünk series-eken (pl. hozzáadás), az indexszámítás figyelembe van véve. Az index lehet egyszerű, például egész szám sorozatszám (ha listából vagy tömbből hozunk létre series-t, ez az alapértelmezett index), vagy lehet összetett, például dátumtartomány.
> **Megjegyzés**: Van néhány bevezető Pandas kód az ehhez tartozó notebookban [`notebook.ipynb`](notebook.ipynb). Itt csak néhány példát vázolunk fel, de mindenképpen érdemes megnézni a teljes notebookot.
> **Megjegyzés**: Van némi bevezető Pandas kód a mellékelt jegyzetfüzetben [`notebook.ipynb`](notebook.ipynb). Itt csak az példákat vázoljuk, de természetesen megtekintheted az egész jegyzetet.
Vegyünk egy példát: elemezni szeretnénk fagylaltárusító helyünk eladásait. Generáljunk egy sorozatot az eladási számokkal (naponta eladott tételek száma) egy időszakra:
Példaként elemezzük egy fagylaltozó eladásait. Generáljunk egy sorozatot az eladott darabszámokról (az eladott tételek száma naponta) egy adott időszakra:
```python
start_date = "Jan 1, 2020"
@ -63,48 +65,48 @@ idx = pd.date_range(start_date,end_date)
print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Idősor grafikon](../../../../translated_images/hu/timeseries-1.80de678ab1cf727e.webp)
```
![Idősoros ábrázolás](../../../../translated_images/hu/timeseries-1.80de678ab1cf727e.webp)
Tegyük fel, hogy minden héten szervezünk egy baráti összejövetelt, és további 10 csomag fagylaltot viszünk a bulira. Létrehozhatunk egy másik sorozatot, amelyet hetek szerint indexelünk, hogy ezt bemutassuk:
Tegyük fel, hogy hetente baráti partit szervezünk, és a partira további 10 csomag fagylaltot viszünk. Készítsünk egy másik sorozatot, heti indexekkel, hogy ezt bemutassuk:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
Amikor összeadjuk a két sorozatot, megkapjuk a teljes számot:
```
Két sorozat összeadásakor az összesített darabszámot kapjuk:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Idősor grafikon](../../../../translated_images/hu/timeseries-2.aae51d575c55181c.webp)
```
![Idősoros ábrázolás](../../../../translated_images/hu/timeseries-2.aae51d575c55181c.webp)
> **Megjegyzés**: Nem használjuk az egyszerű `total_items+additional_items` szintaxist. Ha ezt tennénk, sok `NaN` (*Not a Number*) értéket kapnánk az eredményül kapott sorozatban. Ennek oka, hogy az `additional_items` sorozatban hiányzó értékek vannak néhány indexpontnál, és ha `NaN`-t adunk hozzá bármihez, az eredmény `NaN` lesz. Ezért meg kell adnunk a `fill_value` paramétert az összeadás során.
> **Megjegyzés**, hogy nem egyszerűen a `total_items+additional_items` kifejezést használjuk. Ha ezt tettük volna, sok `NaN` (*Nem Szám*) értéket kaptunk volna az eredmény sorozatban. Ez azért van, mert az `additional_items` sorozat némely indexpontjára hiányzó értékek vannak, és `NaN` hozzáadása bármilyen értékhez `NaN`-t eredményez. Ezért az összeadás során a `fill_value` paramétert kell megadni.
Az idősorokkal különböző időintervallumokkal is **újramintázhatjuk** a sorozatot. Például, ha havi átlagos eladási mennyiséget szeretnénk kiszámítani, használhatjuk a következő kódot:
Idősorozatoknál a sorozatot különböző időintervallumokra is átvehetjük (resample). Például, ha havi átlagos eladást akarunk számolni, a következő kódot használhatjuk:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Havi idősor átlagok](../../../../translated_images/hu/timeseries-3.f3147cbc8c624881.webp)
```
![Havi idősoros átlag](../../../../translated_images/hu/timeseries-3.f3147cbc8c624881.webp)
### DataFrame
A DataFrame lényegében azonos indexű sorozatok gyűjteménye. Több sorozatot kombinálhatunk egy DataFrame-be:
A DataFrame tulajdonképpen ugyanazzal az indexszel rendelkező sorozatok gyűjteménye. Több sorozatot is összekapcsolhatunk DataFrame-é:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
Ez egy vízszintes táblázatot hoz létre, mint például:
```
Ez egy vízszintes táblázatot hoz létre, mint az alábbi:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
Sorozatokat oszlopként is használhatunk, és megadhatjuk az oszlopneveket szótár segítségével:
Sorozatokat használhatunk oszlopként is, és megadhatjuk az oszlopneveket szótár segítségével:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
Ez egy ilyen táblázatot eredményez:
```
Ez az alábbi táblázatot eredményezi:
| | A | B |
| --- | --- | ------ |
@ -118,37 +120,37 @@ Ez egy ilyen táblázatot eredményez:
| 7 | 8 | very |
| 8 | 9 | much |
**Megjegyzés**: Ezt a táblázat-elrendezést úgy is elérhetjük, hogy az előző táblázatot transzponáljuk, például az alábbi kóddal:
**Megjegyzés**, hogy ezt a táblázatot úgy is megkaphatjuk, ha az előző táblázatot transzponáljuk, pl. az alábbi módon:
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
```
Itt a `.T` a DataFrame transzponálásának műveletét jelenti, azaz a sorok és oszlopok cseréjét, és a `rename` művelet lehetővé teszi az oszlopok átnevezését, hogy megfeleljenek az előző példának.
df = pd.DataFrame([a,b]).T.rename(columns={ 0 : 'A', 1 : 'B' })
```
Itt a `.T` a DataFrame transzponálásának műveletét jelenti, vagyis a sorok és oszlopok felcserélését, és a `rename` művelet lehetővé teszi az oszlopok átnevezését, hogy megfeleljen az előző példának.
Íme néhány legfontosabb művelet, amelyet DataFrame-eken végezhetünk:
Íme néhány legfontosabb művelet, amit DataFrame-ekkel végezhetünk:
**Oszlopok kiválasztása**. Egyedi oszlopokat választhatunk ki az `df['A']` írásával - ez a művelet egy sorozatot ad vissza. Az oszlopok egy részhalmazát egy másik DataFrame-be is kiválaszthatjuk az `df[['B','A']]` írásával - ez egy másik DataFrame-et ad vissza.
**Oszlop kiválasztás**. Kiválaszthatunk egyéni oszlopokat azzal, hogy írjuk `df['A']` - ez egy Series-t ad vissza. Szintén kiválaszthatunk egy részhalmaz oszlopokat egy másik DataFrame-be azzal, hogy `df[['B','A']]` - ez egy másik DataFrame-et ad vissza.
**Szűrés** bizonyos sorokra kritérium alapján. Például, ha csak azokat a sorokat szeretnénk megtartani, ahol az `A` oszlop értéke nagyobb, mint 5, akkor írhatjuk: `df[df['A']>5]`.
**Szűrés** bizonyos sorokra feltételek alapján. Például hogy csak azokat a sorokat hagyjuk meg, ahol az `A` oszlop értéke nagyobb, mint 5, írhatjuk: `df[df['A']>5]`.
> **Megjegyzés**: A szűrés működése a következő. Az `df['A']<5` kifejezés egy logikai sorozatot ad vissza, amely jelzi, hogy a kifejezés `True` vagy `False` az eredeti sorozat `df['A']` minden elemére. Amikor a logikai sorozatot indexként használjuk, az a DataFrame sorainak részhalmazát adja vissza. Ezért nem lehet tetszőleges Python logikai kifejezést használni, például az `df[df['A']>5 and df['A']<7]` írása helytelen lenne. Ehelyett speciális `&` műveletet kell használni a logikai sorozatokon, például az `df[(df['A']>5) & (df['A']<7)]` írásával (*a zárójelek itt fontosak*).
> **Megjegyzés**: A szűrés működése a következő. A `df['A']<5` kifejezés egy logikai sorozatot ad vissza, amely megmutatja, hogy az eredeti `df['A']` sorozat egyes elemeire az adott kifejezés igaz vagy hamis. Amikor egy ilyen logikai sorozatot indexként használunk, a DataFrame-ből csak a megfelelő sorok kerülnek kiválasztásra. Ezért nem lehet tetszőleges Python logikai kifejezést használni, például a `df[df['A']>5 and df['A']<7]` helytelen. Ehelyett speciális `&` operátort kell használni a logikai sorozaton, így: `df[(df['A']>5) & (df['A']<7)]` (*a zárójelek itt nagyon fontosak*).
**Új számítható oszlopok létrehozása**. Könnyen létrehozhatunk új számítható oszlopokat a DataFrame-hez intuitív kifejezések használatával, például:
**Új, számítható oszlopok létrehozása**. Könnyen létrehozhatunk új oszlopokat DataFrame-ben intuitív kifejezésekkel, például:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Ez a példa kiszámítja az `A` eltérését az átlagértékétől. Ami valójában történik, az az, hogy kiszámítunk egy sorozatot, majd ezt a sorozatot hozzárendeljük a bal oldali oszlophoz, létrehozva egy új oszlopot. Ezért nem használhatunk olyan műveleteket, amelyek nem kompatibilisek a sorozatokkal, például az alábbi kód helytelen:
```
Ez a példa kiszámolja az `A` eltérését az átlagától. Ami itt valójában történik, az az, hogy kiszámítunk egy series-t, majd hozzárendeljük ezt a baloldali változóhoz, létrehozva egy új oszlopot. Ezért nem használhatunk olyan műveleteket, amelyek nem kompatibilisek a series-ekkel. Például a következő kód hibás:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
```
Az utóbbi példa, bár szintaktikailag helyes, rossz eredményt ad, mert a `B` sorozat hosszát rendeli hozzá az oszlop összes értékéhez, nem pedig az egyes elemek hosszát, ahogy azt szerettük volna.
# Hibás kód -> df['ADescr'] = "Low" ha df['A'] < 5 különben "Hi"
df['LenB'] = len(df['B']) # <- Hibás eredmény
```
Az utóbbi példa, bár szintaktikailag helyes, helytelen eredményt ad, mert az `B` sorozat hosszát rendeli az oszlop minden értékéhez, nem pedig az egyes elemek hosszát, ahogy szerettük volna.
Ha összetett kifejezéseket kell kiszámítanunk, használhatjuk az `apply` függvényt. Az utolsó példa így írható:
Ha összetettebb kifejezéseket kell számolnunk, használhatjuk az `apply` függvényt. Az utolsó példát így írhatjuk át:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
# vagy
df['LenB'] = df['B'].apply(len)
```
```
A fenti műveletek után a következő DataFrame-et kapjuk:
@ -164,22 +166,22 @@ A fenti műveletek után a következő DataFrame-et kapjuk:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Sorok kiválasztása számok alapján** az `iloc` konstrukcióval végezhető el. Például az első 5 sor kiválasztásához a DataFrame-ből:
**Sorok kiválasztása számok alapján** az `iloc` szerkezet használatával történik. Például az első 5 sor kiválasztásához:
```python
df.iloc[:5]
```
```
**Csoportosítás** gyakran használatos olyan eredmények elérésére, amelyek hasonlóak az Excel *pivot tábláihoz*. Tegyük fel, hogy az `A` oszlop átlagértékét szeretnénk kiszámítani az egyes `LenB` értékekhez. Ekkor csoportosíthatjuk a DataFrame-et `LenB` szerint, és meghívhatjuk a `mean` függvényt:
**Csoportosítás** gyakran használatos olyan eredmény létrehozásához, ami hasonló az Excel *kereszt-táblákhoz* (pivot tables). Tegyük fel, hogy az `A` oszlop átlagértékét szeretnénk kiszámolni az egyes `LenB` értékekhez. Akkor csoportosíthatunk a DataFrame-et `LenB` oszlop szerint, és meghívhatjuk a `mean` függvényt:
```python
df.groupby(by='LenB')[['A','DivA']].mean()
```
Ha az átlagot és az elemek számát is ki szeretnénk számítani a csoportban, akkor használhatjuk az összetettebb `aggregate` függvényt:
```
Ha átlag mellett az elemek számát is szeretnénk meghatározni a csoportban, használhatjuk az összetettebb `aggregate` függvényt:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
Ez a következő táblázatot adja:
```
Ez a következő táblázatot eredményezi:
| LenB | Count | Mean |
| ---- | ----- | -------- |
@ -190,69 +192,72 @@ Ez a következő táblázatot adja:
| 6 | 2 | 6.000000 |
### Adatok beszerzése
Láttuk, milyen egyszerű Series és DataFrame-eket létrehozni Python objektumokból. Azonban az adatok általában szövegfájl vagy Excel-tábla formájában érkeznek. Szerencsére a Pandas egyszerű módot kínál az adatok betöltésére a lemezről. Például, egy CSV fájl beolvasása ilyen egyszerű:
Láttuk, milyen könnyű Series és DataFrame objektumokat létrehozni Python objektumokból. Azonban az adatok általában egy szövegfájl vagy Excel táblázat formájában érkeznek. Szerencsére a Pandas egyszerű módot kínál arra, hogy lemezről töltsünk be adatokat. Például CSV fájl olvasása ilyen egyszerű:
```python
df = pd.read_csv('file.csv')
```
További példákat fogunk látni az adatok betöltésére, beleértve az adatok külső weboldalakról való lekérését is, a "Kihívás" szekcióban.
Az adatbetöltés további példáit, beleértve az adatok külső weboldalakról történő lekérését, a „Kihívás” részben fogjuk megtekinteni
### Nyomtatás és Ábrázolás
### Nyomtatás és ábrázolás
Egy adatkutatónak gyakran kell felfedeznie az adatokat, ezért fontos, hogy képes legyen vizualizálni azokat. Ha a DataFrame nagy, sokszor csak meg akarunk győződni arról, hogy mindent helyesen csinálunk, például az első néhány sor kinyomtatásával. Ezt a `df.head()` hívásával tehetjük meg. Ha Jupyter Notebookban futtatjuk, a DataFrame-et szép táblázatos formában fogja megjeleníteni.
Egy Data Scientist gyakran kell, hogy felfedezze az adatokat, ezért fontos, hogy képes legyen azokat vizualizálni. Amikor a DataFrame nagy, sokszor csak meg akarjuk győződni arról, hogy mindent helyesen csinálunk az első néhány sor kiíratásával. Ezt a `df.head()` hívásával tehetjük meg. Ha Jupyter Notebookból futtatod, akkor az szép táblázatos formában jeleníti meg a DataFrame-et.
Láttuk már a `plot` függvény használatát néhány oszlop vizualizálására. Bár a `plot` nagyon hasznos sok feladathoz, és számos különböző grafikon típust támogat a `kind=` paraméter segítségével, mindig használhatjuk a nyers `matplotlib` könyvtárat valami összetettebb ábrázolására. Az adatvizualizációt részletesen fogjuk tárgyalni külön tanfolyami leckékben.
Láttuk a `plot` függvény használatát is, hogy bizonyos oszlopokat vizualizáljunk. Bár a `plot` sok feladatra nagyon hasznos, és a `kind=` paraméterrel sokféle grafikon típust támogat, mindig használhatod a natív `matplotlib` könyvtárat is, ha valami bonyolultabbat szeretnél rajzolni. Az adatvizualizációt részletesen egy külön kurzus leckében tárgyaljuk majd.
Ez az áttekintés lefedi a Pandas legfontosabb fogalmait, azonban a könyvtár nagyon gazdag, és nincs határa annak, hogy mit lehet vele elérni! Most alkalmazzuk ezt a tudást egy konkrét probléma megoldására.
Ez az áttekintés lefedi a Pandas legfontosabb fogalmait, de a könyvtár nagyon gazdag, és nincs korlát arra, mit tehetsz vele! Most alkalmazzuk ezt a tudást egy konkrét probléma megoldásához.
## 🚀 Kihívás 1: A COVID terjedésének elemzése
Az első probléma, amire összpontosítunk, a COVID-19 járvány terjedésének modellezése. Ehhez az egyes országokban fertőzött személyek számáról szóló adatokat fogjuk használni, amelyeket a [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) biztosít a [Johns Hopkins University](https://jhu.edu/) keretében. Az adatállomány elérhető [ebben a GitHub repóban](https://github.com/CSSEGISandData/COVID-19).
Az első problémánk a COVID-19 járvány terjedésének modellezése. Ehhez a különböző országokban fertőzött egyének számával kapcsolatos adatokat fogjuk használni, amelyeket a [Johns Hopkins Egyetem](https://jhu.edu/) [System Science and Engineering Center](https://systems.jhu.edu/) (CSSE) biztosít. Az adatkészlet elérhető [ebben a GitHub tárolóban](https://github.com/CSSEGISandData/COVID-19).
Mivel meg szeretnénk mutatni, hogyan kell az adatokkal dolgozni, arra kérünk, hogy nyisd meg a [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) fájlt, és olvasd el elejétől a végéig. A cellákat is végrehajthatod, és néhány kihívást is megoldhatsz, amelyeket a végén hagytunk neked.
Mivel azt szeretnénk megmutatni, hogyan kell az adatokkal dolgozni, kérünk, hogy nyisd meg a [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) fájlt és olvasd végig az elejétől a végéig. A cellákat is lefuttathatod, és megoldhatod az utolsó részben hagyott kihívásokat.
![COVID Terjedés](../../../../translated_images/hu/covidspread.f3d131c4f1d260ab.webp)
![COVID Spread](../../../../translated_images/hu/covidspread.f3d131c4f1d260ab.webp)
> Ha nem tudod, hogyan kell kódot futtatni Jupyter Notebookban, nézd meg [ezt a cikket](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
> Ha nem tudod, hogyan futtass kódot Jupyter Notebookban, nézd meg [ezt a cikket](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Strukturálatlan adatok kezelése
## Dolgozás strukturálatlan adatokkal
Bár az adatok gyakran táblázatos formában érkeznek, néhány esetben kevésbé strukturált adatokkal kell dolgoznunk, például szövegekkel vagy képekkel. Ilyenkor, hogy alkalmazni tudjuk az előbb látott adatfeldolgozási technikákat, valahogy **ki kell nyernünk** a strukturált adatokat. Íme néhány példa:
Bár az adatok gyakran táblázatos formában érkeznek, bizonyos esetekben kevésbé strukturált adatokkal, például szöveggel vagy képekkel kell foglalkoznunk. Ilyenkor, hogy alkalmazni tudjuk az előzőekben bemutatott adatfeldolgozási technikákat, valahogyan **ki kell nyernünk** a strukturált adatokat. Íme néhány példa:
* Kulcsszavak kinyerése szövegből, és annak vizsgálata, hogy ezek milyen gyakran fordulnak elő
* Neurális hálók használata információ kinyerésére a képen lévő objektumokról
* Információ szerzése emberek érzelmeiről videokamera felvételek alapján
* Kulcsszavak kinyerése szövegből, és megfigyelése, hogy hányszor fordulnak elő ezek a kulcsszavak
* Neurális hálózatok használata tárgyak azonosítására a képen
* Információk gyűjtése az emberek érzelmi állapotáról a videó kameraképről
## 🚀 Kihívás 2: A COVID témájú tudományos cikkek elemzése
## 🚀 Kihívás 2: COVID tudományos cikkek elemzése
Ebben a kihívásban folytatjuk a COVID járvány témáját, és a témával kapcsolatos tudományos cikkek feldolgozására összpontosítunk. Létezik egy [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge), amely több mint 7000 (az írás idején) COVID-ról szóló cikket tartalmaz, metaadatokkal és absztraktokkal (és körülbelül felükhöz teljes szöveg is elérhető).
Ebben a kihívásban a COVID pandémiával kapcsolatos tudományos cikkek feldolgozására fókuszálunk. Létezik a [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge), amely több mint 7000 cikket tartalmaz (a cikk írásakor), a hozzá tartozó metaadatokkal és kivonatokkal (és körülbelül a cikkek feléhez teljes szöveg is elérhető).
A dataset elemzésének teljes példája a [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) kognitív szolgáltatás használatával [ebben a blogbejegyzésben](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) található. Egy egyszerűsített verzióját fogjuk megvitatni ennek az elemzésnek.
Egy teljes példa a dataset elemzésére a [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) kognitív szolgáltatás segítségével [ebben a blogbejegyzésben](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) található. Mi egy egyszerűsített változatot fogunk tárgyalni.
> **NOTE**: Nem biztosítunk másolatot az adatállományról ebben a repóban. Először le kell töltened a [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) fájlt [ebből a Kaggle datasetből](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Regisztráció szükséges lehet a Kaggle-nél. Regisztráció nélkül is letöltheted az adatállományt [innen](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), de ez tartalmazni fogja az összes teljes szöveget a metaadat fájl mellett.
> **MEGJEGYZÉS**: Az adatkészlet másolatát nem biztosítjuk ennek a tárolónak a részeként. Először le kell töltened a [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) fájlt ebből a [Kaggle adatkészletből](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Lehet, hogy regisztrálnod kell a Kaggle-re. Regisztráció nélkül is letöltheted az adatkészletet [innen](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), de ebben a teljes szövegek is benne lesznek a metaadat fájl mellett.
Nyisd meg a [`notebook-papers.ipynb`](notebook-papers.ipynb) fájlt, és olvasd el elejétől a végéig. A cellákat is végrehajthatod, és néhány kihívást is megoldhatsz, amelyeket a végén hagytunk neked.
Nyisd meg a [`notebook-papers.ipynb`](notebook-papers.ipynb) fájlt és olvasd végig az elejétől a végéig. A cellákat is futtathatod, és megoldhatod az utolsó részben hagyott kihívásokat.
![Covid Orvosi Kezelés](../../../../translated_images/hu/covidtreat.b2ba59f57ca45fbc.webp)
![Covid Medical Treatment](../../../../translated_images/hu/covidtreat.b2ba59f57ca45fbc.webp)
## Képadatok feldolgozása
Az utóbbi időben nagyon erős AI modellek születtek, amelyek lehetővé teszik a képek megértését. Számos feladat megoldható előre betanított neurális hálókkal vagy felhőszolgáltatásokkal. Néhány példa:
Nemrég nagyon hatékony MI modelleket fejlesztettek ki, amelyek lehetővé teszik, hogy megértsük a képeket. Számos feladat megoldható előre betanított neurális hálózatokkal vagy felhőszolgáltatásokkal. Néhány példa:
* **Képklasszifikáció**, amely segíthet a képet egy előre definiált osztályba sorolni. Saját képklasszifikátorokat könnyen betaníthatsz olyan szolgáltatásokkal, mint a [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum).
* **Objektumfelismerés**, amely lehetővé teszi különböző objektumok felismerését a képen. Olyan szolgáltatások, mint a [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) számos általános objektumot felismerhetnek, és a [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) modellel specifikus érdeklődési objektumokat is felismerhetsz.
* **Arcészlelés**, beleértve az életkor, nem és érzelem felismerését. Ez megvalósítható a [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) segítségével.
* **Kép osztályozás**, amely segít kategorizálni a képet előre definiált osztályok egyikébe. Könnyen képezheted saját képosztályozódat szolgáltatások segítségével, például a [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) szolgáltatással
* **Tárgyfelismerés** különböző tárgyak azonosításához a képen. Olyan szolgáltatások, mint a [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) felismernek sok gyakori tárgyat, és a [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) modellt is képezheted, hogy bizonyos érdekes tárgyakat felismerjen.
* **Arc felismerés**, beleértve az életkor, nem és érzelem felismerést is. Ezt a [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) szolgáltatás biztosítja.
Mindezek a felhőszolgáltatások hívhatók [Python SDK-k](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) segítségével, és így könnyen beépíthetők az adatfeltárási munkafolyamatba.
Ezeket a felhőszolgáltatásokat [Python SDK-kkal](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) hívhatod meg, ezáltal könnyedén beillesztheted adatfeltáró munkafolyamatodba.
Íme néhány példa a képadatok forrásainak feltárására:
* A blogbejegyzésben [Hogyan tanulj adatkutatást kódolás nélkül](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) Instagram fotókat vizsgálunk, hogy megértsük, miért kapnak egyes képek több lájkot. Először a lehető legtöbb információt kinyerjük a képekből a [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) segítségével, majd az [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) segítségével értelmezhető modellt építünk.
* A [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) keretében a [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) segítségével érzelmeket nyerünk ki emberek fotóiból eseményekről, hogy megértsük, mi teszi boldoggá az embereket.
Íme néhány példa képekből származó adatforrások felfedezésére:
* A [Hogyan tanulj adat tudományt kódolás nélkül](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) blogbejegyzésben Instagram fotókat elemzünk, hogy megértsük, miért adnak az emberek több lájkot egy képre. Először annyi információt nyerünk ki a képekből, amennyit csak lehet a [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) segítségével, majd az [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) modellel értelmezhető modellt építünk.
* A [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) keretében a [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) segítségével az eseményeken készített fényképeken szereplő emberek érzelmeit nyerjük ki, hogy megpróbáljuk megérteni, mi teszi boldoggá az embereket.
## Összegzés
## Összefoglalás
Akár strukturált, akár strukturálatlan adatokkal rendelkezel, Python segítségével elvégezheted az adatfeldolgozással és megértéssel kapcsolatos összes lépést. Ez valószínűleg a legflexibilisebb módja az adatfeldolgozásnak, és ezért az adatkutatók többsége a Pythont használja elsődleges eszközként. A Python mélyebb elsajátítása valószínűleg jó ötlet, ha komolyan veszed az adatkutatási utadat!
Akár strukturált, akár strukturálatlan adatokkal dolgozol, a Python segítségével elvégezhetsz minden adatfeldolgozással és megértéssel kapcsolatos lépést. Valószínűleg ez a leginkább rugalmas adatfeldolgozási mód, és ezért használja a data scientist-ek többsége elsődleges eszközként a Pythont. A Python mélyreható tanulása jó ötlet, ha komolyan veszed az adat tudományútadat!
## [Utó-előadás kvíz](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## [Előadás utáni kvíz](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## Áttekintés és önálló tanulás
@ -260,22 +265,24 @@ Akár strukturált, akár strukturálatlan adatokkal rendelkezel, Python segíts
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**Online források**
* Hivatalos [10 perc Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) tutorial
* [Dokumentáció a Pandas vizualizációról](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
* Hivatalos [10 perc a Pandas-hoz](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) bemutató
* [Dokumentáció a Pandas vizualizációhoz](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Python tanulása**
* [Tanulj Pythont szórakoztató módon Turtle Graphics és Fraktálok segítségével](https://github.com/shwars/pycourse)
* [Tedd meg az első lépéseket a Pythonnal](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) tanulási útvonal a [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum) oldalon
* [Tanulj Python-t játékosan Turtle Graphics-szal és fraktálokkal](https://github.com/shwars/pycourse)
* [Tedd meg az első lépéseidet Python-nal](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) tanulási útvonal a [Microsoft Learn-en](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Feladat
[Részletesebb adatvizsgálat elvégzése a fenti kihívásokhoz](assignment.md)
[Végezz részletesebb adatvizsgálatot a fenti kihívásokra](assignment.md)
## Köszönetnyilvánítás
Ezt a leckét ♥️-vel írta [Dmitry Soshnikov](http://soshnikov.com).
Ezt a leckét ♥️-vel írta [Dmitry Soshnikov](http://soshnikov.com)
---
**Felelősségkizárás**:
Ez a dokumentum az [Co-op Translator](https://github.com/Azure/co-op-translator) AI fordítási szolgáltatás segítségével készült. Bár törekszünk a pontosságra, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az eredeti nyelvén tekintendő hiteles forrásnak. Kritikus információk esetén javasolt a professzionális, emberi fordítás igénybevétele. Nem vállalunk felelősséget a fordítás használatából eredő félreértésekért vagy téves értelmezésekért.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Jogi nyilatkozat**:
Ez a dokumentum az AI fordítási szolgáltatás, a [Co-op Translator](https://github.com/Azure/co-op-translator) segítségével készült. Bár az pontosságra törekszünk, kérjük, vegye figyelembe, hogy az automatikus fordítások hibákat vagy pontatlanságokat tartalmazhatnak. Az eredeti dokumentum az anyanyelvén tekintendő hiteles forrásnak. Fontos információk esetén professzionális emberi fordítást javasolunk. Nem vállalunk felelősséget semmilyen félreértésért vagy téves értelmezésért, amely ebből a fordításból ered.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -96,8 +96,8 @@
"language_code": "sw"
},
"2-Working-With-Data/07-python/README.md": {
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:54:48+00:00",
"original_hash": "fb29e3e0be486fe8f15d50bdade79eb1",
"translation_date": "2026-07-17T18:12:07+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "sw"
},

@ -1,4 +1,4 @@
# Kufanya Kazi na Data: Python na Maktaba ya Pandas
# Kufanya kazi na Data: Python na Maktaba ya Pandas
| ![ Sketchnote na [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: |
@ -6,55 +6,57 @@
[![Video ya Utangulizi](../../../../translated_images/sw/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y)
Ingawa hifadhidata zinatoa njia bora za kuhifadhi data na kuziuliza kwa kutumia lugha za maswali, njia inayobadilika zaidi ya kuchakata data ni kuandika programu yako mwenyewe ili kuibadilisha. Katika hali nyingi, kufanya maswali ya hifadhidata kungekuwa njia bora zaidi. Hata hivyo, katika baadhi ya hali ambapo uchakataji wa data changamani unahitajika, haiwezi kufanyika kwa urahisi kwa kutumia SQL.
Uchakataji wa data unaweza kupangwa kwa lugha yoyote ya programu, lakini kuna lugha fulani ambazo ni za kiwango cha juu zaidi linapokuja suala la kufanya kazi na data. Wanasayansi wa data mara nyingi hupendelea mojawapo ya lugha zifuatazo:
Wakati hifadhidata zinatoa njia za ufanisi sana kuhifadhi data na kuziuliza kwa kutumia lugha za kuuliza, njia yenye kubadilika zaidi ya usindikaji data ni kuandika programu yako mwenyewe ya kudhibiti data. Katika kesi nyingi, kufanya kuuliza hifadhidata itakuwa njia bora zaidi. Hata hivyo, katika baadhi ya matukio ambapo usindikaji wa data wa kina unahitajika, haunawezi kufanyika kwa urahisi kwa kutumia SQL.
Usindikaji wa data unaweza kuprogramiwa kwa lugha yoyote ya programu, lakini kuna baadhi ya lugha ambazo ni za kiwango cha juu zaidi kwa lengo la kufanya kazi na data. Wanasayansi wa data kawaida hupendelea mojawapo ya lugha zifuatazo:
* **[Python](https://www.python.org/)**, lugha ya programu ya matumizi ya jumla, ambayo mara nyingi huchukuliwa kuwa mojawapo ya chaguo bora kwa wanaoanza kutokana na urahisi wake. Python ina maktaba nyingi za ziada ambazo zinaweza kukusaidia kutatua matatizo mengi ya vitendo, kama vile kutoa data yako kutoka kwenye jalada la ZIP, au kubadilisha picha kuwa rangi ya kijivu. Mbali na sayansi ya data, Python pia hutumika mara nyingi kwa maendeleo ya wavuti.
* **[R](https://www.r-project.org/)** ni zana ya kitamaduni iliyotengenezwa kwa lengo la uchakataji wa data za takwimu. Pia ina hifadhi kubwa ya maktaba (CRAN), na kuifanya kuwa chaguo nzuri kwa uchakataji wa data. Hata hivyo, R si lugha ya matumizi ya jumla, na mara chache hutumika nje ya uwanja wa sayansi ya data.
* **[Julia](https://julialang.org/)** ni lugha nyingine iliyotengenezwa mahsusi kwa sayansi ya data. Imeundwa kutoa utendaji bora zaidi kuliko Python, na kuifanya kuwa zana nzuri kwa majaribio ya kisayansi.
* **[Python](https://www.python.org/)**, lugha ya programu yenye matumizi tofauti, ambayo mara nyingi huchukuliwa kuwa mojawapo ya chaguo bora kwa wanaoanza kutokana na urahisi wake. Python ina maktaba nyingi za ziada zinazoweza kusaidia kutatua matatizo mengi ya vitendo, kama vile kutoa data zako kutoka katika arifa ya ZIP, au kubadilisha picha kuwa rangi za kijivu. Mbali na sayansi ya data, Python pia hutumika mara nyingi kwa maendeleo ya wavuti.
* **[R](https://www.r-project.org/)** ni chombo cha jadi kilichotengenezwa kwa lengo la usindikaji wa data za takwimu. Pia ina maktaba nyingi (CRAN), na hufanya kuwa chaguo zuri kwa usindikaji wa data. Hata hivyo, R si lugha ya programu ya matumizi mbalimbali, na hutumika kwa nadra nje ya nyanja ya sayansi ya data.
* **[Julia](https://julialang.org/)** ni lugha nyingine iliyotengenezwa mahsusi kwa sayansi ya data. Inalenga kutoa utendakazi bora zaidi kuliko Python, na hivyo kuwa chombo kizuri kwa majaribio ya kisayansi.
Katika somo hili, tutazingatia kutumia Python kwa uchakataji rahisi wa data. Tutadhania kuwa una ufahamu wa msingi wa lugha hii. Ikiwa unataka ziara ya kina ya Python, unaweza kurejelea mojawapo ya rasilimali zifuatazo:
Katika somo hili, tutazingatia matumizi ya Python kwa usindikaji rahisi wa data. Tutachukua kuwa una uelewa wa msingi wa lugha hii. Ikiwa unataka mafunzo ya kina zaidi ya Python, unaweza kurejelea mojawapo ya rasilimali zifuatazo:
* [Jifunze Python kwa Njia ya Kufurahisha na Michoro ya Turtle na Fractals](https://github.com/shwars/pycourse) - Kozi ya utangulizi ya haraka ya Python inayotegemea GitHub
* [Jifunze Python kwa Njia ya Kufurahisha kwa Turtle Graphics na Fractals](https://github.com/shwars/pycourse) - Kozi fupi ya utangulizi kwa Python kwenye GitHub
* [Chukua Hatua Zako za Kwanza na Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Njia ya Kujifunza kwenye [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Data inaweza kuja katika aina nyingi. Katika somo hili, tutazingatia aina tatu za data - **data ya tabular**, **maandishi**, na **picha**.
Data inaweza kuja katika aina mbalimbali. Katika somo hili, tutaangazia aina tatu za data - **data ya jedwali**, **maandishi** na **picha**.
Tutazingatia mifano michache ya uchakataji wa data, badala ya kukupa muhtasari kamili wa maktaba zote zinazohusiana. Hii itakuruhusu kupata wazo kuu la kile kinachowezekana, na kukupa uelewa wa wapi pa kupata suluhisho kwa matatizo yako unapoyahitaji.
Tutazingatia mifano michache ya usindikaji data, badala ya kutoa muhtasari kamili wa maktaba zote zinazohusiana. Hii itakuwezesha kupata wazo kuu la kile kinachowezekana, na pia kuelewa wapi pa kupata suluhisho la matatizo yako unayohitaji.
> **Ushauri muhimu zaidi**. Unapohitaji kufanya operesheni fulani kwenye data ambayo hujui jinsi ya kufanya, jaribu kuitafuta kwenye mtandao. [Stackoverflow](https://stackoverflow.com/) mara nyingi ina sampuli nyingi za msimbo wa Python kwa kazi nyingi za kawaida.
> **Ushauri Muhimu Sana**. Unapohitaji kufanya operesheni fulani kwa data ambayo hujui jinsi ya kufanya, jaribu kuitafuta mtandaoni. [Stackoverflow](https://stackoverflow.com/) kawaida huwa na mifano mingi ya msimbo wa Python kwa kazi nyingi za kawaida.
## [Jaribio la Kabla ya Somo](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Data ya Tabular na Dataframes
Tayari umekutana na data ya tabular tulipokuwa tukizungumza kuhusu hifadhidata za uhusiano. Unapokuwa na data nyingi, na imehifadhiwa katika meza nyingi zilizounganishwa, ina maana kutumia SQL kufanya kazi nayo. Hata hivyo, kuna hali nyingi ambapo tuna meza ya data, na tunahitaji kupata **ufahamu** au **mawazo** kuhusu data hii, kama vile usambazaji, uhusiano kati ya thamani, n.k. Katika sayansi ya data, kuna hali nyingi ambapo tunahitaji kufanya mabadiliko fulani ya data ya awali, ikifuatiwa na uwasilishaji wa picha. Hatua zote hizi zinaweza kufanywa kwa urahisi kwa kutumia Python.
## [Jaribio la kabla ya somo](https://ff-quizzes.netlify.app/en/ds/quiz/12)
Kuna maktaba mbili muhimu zaidi katika Python ambazo zinaweza kukusaidia kushughulikia data ya tabular:
* **[Pandas](https://pandas.pydata.org/)** inakuwezesha kubadilisha kinachoitwa **Dataframes**, ambacho ni sawa na meza za uhusiano. Unaweza kuwa na safu zilizotajwa, na kufanya operesheni tofauti kwenye safu, safu wima, na dataframes kwa ujumla.
* **[Numpy](https://numpy.org/)** ni maktaba ya kufanya kazi na **tensors**, yaani **arrays** za vipimo vingi. Array ina thamani za aina moja ya msingi, na ni rahisi kuliko dataframe, lakini inatoa operesheni zaidi za hisabati, na inaunda mzigo mdogo.
## Data ya Jedwali na Dataframes
Pia kuna maktaba nyingine chache unazopaswa kujua:
* **[Matplotlib](https://matplotlib.org/)** ni maktaba inayotumika kwa uwasilishaji wa data na kuchora grafu
* **[SciPy](https://www.scipy.org/)** ni maktaba yenye baadhi ya kazi za kisayansi za ziada. Tayari tumekutana na maktaba hii tulipokuwa tukizungumza kuhusu uwezekano na takwimu
Tayari umekutana na data za jedwali tulipokuwa tukizungumza kuhusu hifadhidata za uhusiano. Wakati una data nyingi, na ziko katika meza nyingi tofauti zenye uhusiano, ni wazi ina maana kutumia SQL kufanya kazi nazo. Hata hivyo, kuna matukio mengi ambapo tunapokuwa na jedwali la data, na tunahitaji kupata **uelewa** au **uelewa wa kina** juu ya data hii, kama vile mgawanyo, uhusiano kati ya thamani, n.k. Katika sayansi ya data, kuna matukio mengi ambapo tunahitaji kufanya mabadiliko fulani ya data ya awali, ikifuatiwa na uchoraji wa grafu. Hatua hizi mbili zinaweza kufanyika kwa urahisi kwa kutumia Python.
Hapa kuna kipande cha msimbo ambacho ungeweza kutumia kuingiza maktaba hizi mwanzoni mwa programu yako ya Python:
Kuna maktaba kuu mbili zinazosaidia sana Python kwa kazi na data za jedwali:
* **[Pandas](https://pandas.pydata.org/)** hakuwezesha kudhibiti kinachoitwa **Dataframes**, ambavyo vinafananishwa na meza za uhusiano. Unaweza kuwa na safu zenye majina, na kufanya operesheni tofauti juu ya safu, safu za kolamu na dataframes kwa ujumla.
* **[Numpy](https://numpy.org/)** ni maktaba ya kufanya kazi na **tensors**, yaani **matindi** yenye vipimo zaidi. Matindi yana thamani za aina ile ile ya msingi, na ni rahisi zaidi kuliko dataframe, lakini yanatoa operesheni zaidi za kihisabati, na huleta mzigo mdogo zaidi.
Pia kuna maktaba zingine chache unazopaswa kujua:
* **[Matplotlib](https://matplotlib.org/)** ni maktaba inayotumiwa kwa uchoraji wa data na kuchora michoro
* **[SciPy](https://www.scipy.org/)** ni maktaba yenye baadhi ya kazi za kisayansi za ziada. Tayari tumekutana na maktaba hii tulipokuwa tukizungumza kuhusu nafasi na takwimu
Hapa kuna kipande cha msimbo ambacho mara nyingi utatumia kuleta maktaba haya mwanzoni mwa programu yako ya Python:
```python
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
from scipy import ... # you need to specify exact sub-packages that you need
from scipy import ... # unahitaji kubainisha vifurushi vidogo hasa unavyovihitaji
```
Pandas inajikita kwenye dhana chache za msingi.
Pandas inalenga dhana chache za msingi.
### Series
### Msururu (Series)
**Series** ni mlolongo wa thamani, sawa na orodha au numpy array. Tofauti kuu ni kwamba series pia ina **index**, na tunapofanya operesheni kwenye series (mfano, kuziongeza), index inazingatiwa. Index inaweza kuwa rahisi kama namba ya safu ya integer (ni index inayotumika kwa chaguo-msingi wakati wa kuunda series kutoka orodha au array), au inaweza kuwa na muundo changamani, kama vile muda wa tarehe.
**Series** ni mkusanyo wa thamani, sawa na orodha au array ya numpy. Tofauti kuu ni kwamba series pia ina **index**, na tunapofanya operesheni kwenye series (mfano, kuongeza), index huzingatiwa. Index inaweza kuwa nambari rahisi ya mstari (hiyo ndiyo index inayotumika kwa kawaida wakati wa kuunda series kutoka orodha au array), au inaweza kuwa na muundo tata, kama kipindi cha tarehe.
> **Kumbuka**: Kuna msimbo wa utangulizi wa Pandas katika daftari linaloambatana [`notebook.ipynb`](notebook.ipynb). Tunatoa muhtasari wa baadhi ya mifano hapa, na unakaribishwa kuangalia daftari kamili.
> **Kumbuka**: Kuna msimbo wa utangulizi wa Pandas katika daftari linaloambatana [`notebook.ipynb`](notebook.ipynb). Hapa tunatoa baadhi ya mifano, na ukaribishwa kabisa kuangalia daftari kamili.
Fikiria mfano: tunataka kuchambua mauzo ya duka letu la ice-cream. Hebu tuunde series ya namba za mauzo (idadi ya bidhaa zilizouzwa kila siku) kwa kipindi fulani cha muda:
Chukulia mfano: tunataka kuchambua mauzo ya duka letu la barafu. Hebu tungoje msururu wa nambari za mauzo (idadi ya vitu vilivyouzwa kila siku) kwa kipindi fulani cha muda:
```python
start_date = "Jan 1, 2020"
@ -64,47 +66,47 @@ print(f"Length of index is {len(idx)}")
items_sold = pd.Series(np.random.randint(25,50,size=len(idx)),index=idx)
items_sold.plot()
```
![Mchoro wa Mfululizo wa Muda](../../../../translated_images/sw/timeseries-1.80de678ab1cf727e.webp)
![Mchoro wa Msururu wa Wakati](../../../../translated_images/sw/timeseries-1.80de678ab1cf727e.webp)
Sasa fikiria kwamba kila wiki tunaandaa sherehe kwa marafiki, na tunachukua pakiti 10 za ziada za ice-cream kwa ajili ya sherehe. Tunaweza kuunda series nyingine, iliyoorodheshwa kwa wiki, kuonyesha hilo:
Sasa tuseme kwamba kila wiki tunandaa sherehe kwa marafiki, na tunachukua vifurushi 10 vya ziada vya barafu kwa sherehe hiyo. Tunaweza kuunda msururu mwingine, wenye index ya wiki, kuonyesha hilo:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
Tunapoongeza series mbili pamoja, tunapata jumla ya idadi:
Tunapoongeza misururu miwili pamoja, tunapata jumla ya idadi:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Mchoro wa Mfululizo wa Muda](../../../../translated_images/sw/timeseries-2.aae51d575c55181c.webp)
![Mchoro wa Msururu wa Wakati](../../../../translated_images/sw/timeseries-2.aae51d575c55181c.webp)
> **Kumbuka** kwamba hatutumii sintaksia rahisi `total_items+additional_items`. Ikiwa tungefanya hivyo, tungepata thamani nyingi za `NaN` (*Not a Number*) katika series inayotokana. Hii ni kwa sababu kuna thamani zinazokosekana kwa baadhi ya pointi za index katika series ya `additional_items`, na kuongeza `NaN` kwa chochote husababisha `NaN`. Kwa hivyo tunahitaji kubainisha parameter ya `fill_value` wakati wa kuongeza.
> **Kumbuka** kwamba hatutumii sintaksi rahisi `total_items+additional_items`. Ikiwa tungeifanya, tungepata thamani nyingi za `NaN` (*Sio Nambari*) katika msururu uliopatikana. Hii ni kwa sababu kuna thamani zilizokosekana kwa baadhi ya pointi za index katika msururu wa `additional_items`, na kuongeza `Nan` kwa kitu kingine chochote husababisha `NaN`. Kwa hivyo tunahitaji kubainisha thamani ya `fill_value` wakati wa kuongeza.
Kwa mfululizo wa muda, tunaweza pia **kurekebisha upya** series kwa vipindi tofauti vya muda. Kwa mfano, fikiria tunataka kuhesabu wastani wa mauzo ya kila mwezi. Tunaweza kutumia msimbo huu:
Kwa misururu ya wakati, tunaweza pia **kufanya sampuli upya** msururu huo kwa vipindi tofauti vya wakati. Kwa mfano, tuseme tunataka kuhesabu wastani wa mauzo kila mwezi. Tunaweza kutumia msimbo ifuatayo:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Wastani wa Mfululizo wa Muda wa Kila Mwezi](../../../../translated_images/sw/timeseries-3.f3147cbc8c624881.webp)
![Wastani wa Msururu wa Wakati Kila Mwezi](../../../../translated_images/sw/timeseries-3.f3147cbc8c624881.webp)
### DataFrame
DataFrame kimsingi ni mkusanyiko wa series zilizo na index sawa. Tunaweza kuchanganya series kadhaa pamoja kuwa DataFrame:
DataFrame ni mkusanyo wa misururu yenye index ile ile. Tunaweza kuunganisha misururu kadhaa pamoja kuwa DataFrame:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
df = pd.DataFrame([a,b])
```
Hii itaunda meza ya mlalo kama hii:
Hii itaunda jedwali la wima kama hili:
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
| --- | --- | ---- | --- | --- | ------ | --- | ------ | ---- | ---- |
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
Tunaweza pia kutumia Series kama safu wima, na kubainisha majina ya safu wima kwa kutumia kamusi:
Tunaweza pia kutumia Series kama safu za kolamu, na kubainisha majina ya kolamu kwa kutumia kamusi:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
Hii itatupa meza kama hii:
Hii itatupa jedwali kama hili:
| | A | B |
| --- | --- | ------ |
@ -118,39 +120,39 @@ Hii itatupa meza kama hii:
| 7 | 8 | very |
| 8 | 9 | much |
**Kumbuka** kwamba tunaweza pia kupata mpangilio huu wa meza kwa kubadilisha meza ya awali, mfano kwa kuandika
**Kumbuka** kwamba tunaweza pia kupata mpangilio huu wa jedwali kwa kubadilisha jedwali la awali kwa kugeuza mistari na safu, mfano kwa kuandika
```python
df = pd.DataFrame([a,b]).T..rename(columns={ 0 : 'A', 1 : 'B' })
df = pd.DataFrame([a,b]).T.rename(columns={ 0 : 'A', 1 : 'B' })
```
Hapa `.T` inamaanisha operesheni ya kubadilisha DataFrame, yaani kubadilisha safu na safu wima, na operesheni ya `rename` inatuwezesha kubadilisha majina ya safu wima ili yaendane na mfano wa awali.
Hapa `.T` inamaanisha operesheni ya kugeuza DataFrame, yaani kubadilisha mistari na safu, na operesheni ya `rename` inatuwezesha kubadilisha majina ya safu ili yaendane na mfano uliopita.
Hapa kuna operesheni chache muhimu zaidi tunazoweza kufanya kwenye DataFrames:
Hapa kuna baadhi ya operesheni muhimu tunaweza kufanya kwa DataFrames:
**Uchaguzi wa safu wima**. Tunaweza kuchagua safu wima moja kwa kuandika `df['A']` - operesheni hii inarudisha Series. Tunaweza pia kuchagua subset ya safu wima kuwa DataFrame nyingine kwa kuandika `df[['B','A']]` - hii inarudisha DataFrame nyingine.
**Uchaguzi wa kolamu**. Tunaweza kuchagua kolamu moja moja kwa kuandika `df['A']` - operesheni hii inarudisha Series. Tunaweza pia kuchagua sehemu ya safu ndani ya DataFrame nyingine kwa kuandika `df[['B','A']]` - hii inarudisha DataFrame nyingine.
**Kuchuja** safu fulani kwa vigezo. Kwa mfano, kuacha tu safu zilizo na safu wima `A` kubwa kuliko 5, tunaweza kuandika `df[df['A']>5]`.
**Kuchuja** mistari fulani kwa kigezo. Kwa mfano, kuacha mistari tu yenye kolamu `A` kubwa kuliko 5, tunaweza kuandika `df[df['A']>5]`.
> **Kumbuka**: Njia ambayo kuchuja hufanya kazi ni kama ifuatavyo. Usemi `df['A']<5` unarudisha series ya boolean, ambayo inaonyesha ikiwa usemi ni `True` au `False` kwa kila kipengele cha series ya awali `df['A']`. Wakati series ya boolean inatumika kama index, inarudisha subset ya safu katika DataFrame. Kwa hivyo haiwezekani kutumia usemi wa boolean wa Python kiholela, kwa mfano, kuandika `df[df['A']>5 and df['A']<7]` itakuwa si sahihi. Badala yake, unapaswa kutumia operesheni maalum ya `&` kwenye series ya boolean, kwa kuandika `df[(df['A']>5) & (df['A']<7)]` (*mabano ni muhimu hapa*).
> **Kumbuka**: Njia ya kuchuja ni ifuatayo. Kauli `df['A']<5` inarudisha series ya boolean, ambayo inaonyesha kama kauli ni `True` au `False` kwa kila kipengele cha series ya awali `df['A']`. Wakati series ya boolean inapotumika kama index, inarudisha sehemu ya mistari katika DataFrame. Kwa hivyo si sahihi kutumia kauli za boolean za Python moja kwa moja, mfano kuandika `df[df['A']>5 and df['A']<7]` itakuwa kosa. Badala yake, unapaswa kutumia operesheni maalum ya `&` kwenye series za boolean, kwa kuandika `df[(df['A']>5) & (df['A']<7)]` (*mabano ni muhimu hapa*).
**Kuunda safu wima mpya zinazoweza kuhesabiwa**. Tunaweza kuunda kwa urahisi safu wima mpya zinazoweza kuhesabiwa kwa DataFrame yetu kwa kutumia usemi wa angavu kama huu:
**Kuunda safu mpya zinazohesabika**. Tunaweza kwa urahisi kuunda safu mpya za DataFrame yetu kwa kutumia kauli yenye mantiki kama hii:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Mfano huu unahesabu tofauti ya A kutoka thamani yake ya wastani. Kinachotokea hapa ni kwamba tunahesabu series, kisha tunaiweka kwenye upande wa kushoto, na kuunda safu wima nyingine. Kwa hivyo, hatuwezi kutumia operesheni zozote ambazo hazipatani na series, kwa mfano, msimbo hapa chini ni si sahihi:
Mfano huu huhesabu utofauti wa A kutoka wastani wake. Kinachotokea hapa ni kwamba tunahesabu series, kisha kuipa upande wa kushoto, na kuunda safu nyingine. Kwa hivyo, hatuwezi kutumia operesheni zozote ambazo hazilingani na series, mfano, msimbo ufuatao ni mbaya:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
# Msimbo mbaya -> df['ADescr'] = "Chini" ikiwa df['A'] < 5 vinginevyo "Juu"
df['LenB'] = len(df['B']) # <- Matokeo mabaya
```
Mfano wa mwisho, ingawa ni sahihi kisintaksia, unatupa matokeo yasiyo sahihi, kwa sababu inaweka urefu wa series `B` kwa thamani zote katika safu wima, na si urefu wa vipengele vya mtu binafsi kama tulivyokusudia.
Mfano huu wa mwisho, ingawa ni sahihi kihisabati, hututoa matokeo mabaya, kwa sababu unapeleka urefu wa series `B` kwa thamani zote kwenye safu, badala ya urefu wa vipengele binafsi kama tulivyokusudia.
Ikiwa tunahitaji kuhesabu usemi changamani kama huu, tunaweza kutumia kazi ya `apply`. Mfano wa mwisho unaweza kuandikwa kama ifuatavyo:
Ikiwa tunahitaji kufanya hesabu za kauli ngumu kama hizi, tunaweza kutumia kazi ya `apply`. Mfano wa mwisho unaweza kuandikwa kama ifuatavyo:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
# au
df['LenB'] = df['B'].apply(len)
```
Baada ya operesheni zilizo hapo juu, tutakuwa na DataFrame ifuatayo:
Baada ya operesheni zilizo juu, tutakuwa na DataFrame ifuatayo:
| | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- |
@ -164,22 +166,22 @@ Baada ya operesheni zilizo hapo juu, tutakuwa na DataFrame ifuatayo:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Kuchagua safu kulingana na namba** kunaweza kufanywa kwa kutumia muundo wa `iloc`. Kwa mfano, kuchagua safu 5 za kwanza kutoka DataFrame:
**Kuchagua mistari kulingana na nambari** inaweza kufanyika kwa kutumia `iloc`. Kwa mfano, kuchagua mistari 5 ya kwanza kutoka DataFrame:
```python
df.iloc[:5]
```
**Kugawanya** mara nyingi hutumika kupata matokeo yanayofanana na *pivot tables* katika Excel. Fikiria kwamba tunataka kuhesabu thamani ya wastani ya safu wima `A` kwa kila namba fulani ya `LenB`. Kisha tunaweza kugawanya DataFrame yetu kwa `LenB`, na kuita `mean`:
**Kukusanya pamoja (Grouping)** hutumika kupata matokeo yanayofanana na *jedwali la mzunguko* katika Excel. Tuseme tunataka kuhesabu wastani wa kolamu `A` kwa kila idadi ya `LenB`. Kisha tunaweza kupeleka DataFrame yetu kulingana na `LenB`, na kuitisha `mean`:
```python
df.groupby(by='LenB')[['A','DivA']].mean()
```
Ikiwa tunahitaji kuhesabu wastani na idadi ya vipengele katika kikundi, basi tunaweza kutumia kazi changamani ya `aggregate`:
Ikiwa tunahitaji kuhesabu wastani na idadi ya vipengele katika kundi, tunaweza kutumia kazi ya `aggregate` ngumu zaidi:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
Hii inatupa meza ifuatayo:
Hii inatupa jedwali ifuatayo:
| LenB | Count | Mean |
| ---- | ----- | -------- |
@ -190,92 +192,97 @@ Hii inatupa meza ifuatayo:
| 6 | 2 | 6.000000 |
### Kupata Data
Tumeona jinsi ilivyo rahisi kuunda Series na DataFrames kutoka kwa vitu vya Python. Hata hivyo, data mara nyingi huja katika mfumo wa faili ya maandishi, au jedwali la Excel. Kwa bahati nzuri, Pandas inatupatia njia rahisi ya kupakia data kutoka diski. Kwa mfano, kusoma faili ya CSV ni rahisi kama hivi:
Tumeona jinsi ilivyo rahisi kutengeneza Series na DataFrames kutoka kwa vitu vya Python. Hata hivyo, data kwa kawaida huja katika fomati ya faili ya maandishi, au jedwali la Excel. Kwa bahati nzuri, Pandas inatupatia njia rahisi ya kupakia data kutoka diski. Kwa mfano, kusoma faili la CSV ni rahisi kama hii:
```python
df = pd.read_csv('file.csv')
```
Tutaona mifano zaidi ya kupakia data, ikiwa ni pamoja na kuipata kutoka tovuti za nje, katika sehemu ya "Changamoto".
```
Tutaona mifano zaidi ya kupakia data, ikijumuisha kuipeleka kutoka tovuti za nje, katika sehemu ya "Changamoto"
### Kuchapisha na Kuchora
### Kuchapisha na Kuchora Mchoro
Mwanasayansi wa Data mara nyingi anahitaji kuchunguza data, hivyo ni muhimu kuwa na uwezo wa kuiona kwa picha. Wakati DataFrame ni kubwa, mara nyingi tunataka tu kuhakikisha tunafanya kila kitu kwa usahihi kwa kuchapisha mistari michache ya kwanza. Hii inaweza kufanyika kwa kupiga `df.head()`. Ikiwa unaiendesha kutoka Jupyter Notebook, itachapisha DataFrame katika mfumo mzuri wa tabular.
Mtaalamu wa Sayansi ya Data mara nyingi huhitaji kuchunguza data, hivyo ni muhimu kuweza kuionyesha kwa kuona. Wakati DataFrame ni kubwa, mara nyingi tunataka tu kuhakikisha tunafanya kila kitu kwa usahihi kwa kuchapisha mistari michache ya mwanzo. Hii inaweza kufanywa kwa kuitisha `df.head()`. Ikiwa unaendesha kutoka Jupyter Notebook, itachapisha DataFrame katika muundo mzuri wa jedwali.
Pia tumeona matumizi ya kazi ya `plot` kuonyesha baadhi ya safu. Ingawa `plot` ni muhimu sana kwa kazi nyingi, na inasaidia aina nyingi za grafu kupitia parameter ya `kind=`, unaweza daima kutumia maktaba ya msingi ya `matplotlib` kuchora kitu kigumu zaidi. Tutashughulikia uonyeshaji wa data kwa undani katika masomo tofauti ya kozi.
Pia tumeona matumizi ya kipengele `plot` kuonyesha baadhi ya safu. Wakati `plot` ni muhimu sana kwa kazi nyingi, na inaunga mkono aina nyingi tofauti za michoro kupitia vigezo `kind=`, unaweza kila mara kutumia maktaba safi ya `matplotlib` kuchora kitu ngumu zaidi. Tutagusia uoneshaji wa data kwa undani katika somo tofauti za kozi.
Muhtasari huu unashughulikia dhana muhimu zaidi za Pandas, hata hivyo, maktaba hii ni tajiri sana, na hakuna kikomo cha kile unachoweza kufanya nayo! Sasa hebu tutumie maarifa haya kutatua tatizo maalum.
Muhtasari huu unajumuisha dhana muhimu zaidi za Pandas, hata hivyo, maktaba ni tajiri sana, na hakuna kikomo cha kile unachoweza kufanya nayo! Sasa tuchukue maarifa haya kutatua tatizo fulani maalum.
## 🚀 Changamoto 1: Kuchambua Kuenea kwa COVID
## 🚀 Changamoto 1: Kuchambua Mgawanyo wa COVID
Tatizo la kwanza ambalo tutalenga ni uundaji wa kuenea kwa janga la COVID-19. Ili kufanya hivyo, tutatumia data ya idadi ya watu walioambukizwa katika nchi tofauti, iliyotolewa na [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) katika [Chuo Kikuu cha Johns Hopkins](https://jhu.edu/). Dataset inapatikana katika [Hifadhi hii ya GitHub](https://github.com/CSSEGISandData/COVID-19).
Tatizo la kwanza tutaloligusia ni mfano wa uenezaji wa janga la COVID-19. Ili kufanya hivyo, tutatumia data kuhusu idadi ya watu waliathirika katika nchi tofauti, inayotolewa na [Kituo cha Sayansi ya Mifumo na Uhandisi](https://systems.jhu.edu/) (CSSE) katika [Chuo Kikuu cha Johns Hopkins](https://jhu.edu/). Data ipo katika [Hifadhi hii ya GitHub](https://github.com/CSSEGISandData/COVID-19).
Kwa kuwa tunataka kuonyesha jinsi ya kushughulikia data, tunakualika kufungua [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) na kuisoma kutoka juu hadi chini. Unaweza pia kutekeleza seli, na kufanya changamoto ambazo tumeacha kwa ajili yako mwishoni.
Kwa sababu tunataka kuonyesha jinsi ya kushughulikia data, tunakuomba ufungue [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) na kuisoma kutoka juu hadi chini. Unaweza pia kuendesha seli, na kutekeleza changamoto tulizokuachia mwishoni.
![COVID Spread](../../../../translated_images/sw/covidspread.f3d131c4f1d260ab.webp)
![Mgawanyo wa COVID](../../../../translated_images/sw/covidspread.f3d131c4f1d260ab.webp)
> Ikiwa hujui jinsi ya kuendesha msimbo katika Jupyter Notebook, angalia [makala hii](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Kufanya Kazi na Data Isiyo na Muundo
## Kufanya kazi na Data Isiyo na Muundo
Ingawa data mara nyingi huja katika mfumo wa tabular, katika baadhi ya matukio tunahitaji kushughulikia data isiyo na muundo, kwa mfano, maandishi au picha. Katika hali hii, ili kutumia mbinu za usindikaji wa data tulizoona hapo juu, tunahitaji kwa namna fulani **kuchimba** data yenye muundo. Hapa kuna mifano michache:
Ingawa data mara nyingi huja katika muundo wa jedwali, katika baadhi ya matukio tunahitaji kushughulikia data zisizo na muundo mzuri, kwa mfano, maandishi au picha. Katika hali hii, ili kutumia mbinu za kusindika data tulizoziona hapo juu, tunahitaji kwa namna fulani **kutoa** data iliyojengwa vizuri. Hapa kuna mifano michache:
* Kuchimba maneno muhimu kutoka kwa maandishi, na kuona mara ngapi maneno hayo yanatokea
* Kutumia mitandao ya neva kuchimba taarifa kuhusu vitu vilivyopo kwenye picha
* Kupata taarifa kuhusu hisia za watu kwenye video ya kamera
* Kutoa maneno muhimu kutoka maandishi, na kuona mara ngapi maneno hayo yanatokea
* Kutumia mitandao ya neva kutoa taarifa kuhusu vitu kwenye picha
* Kupata taarifa juu ya hisia za watu katika picha za video
## 🚀 Changamoto 2: Kuchambua Makala za COVID
Katika changamoto hii, tutaendelea na mada ya janga la COVID, na kuzingatia usindikaji wa makala za kisayansi kuhusu mada hiyo. Kuna [Dataset ya CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) yenye zaidi ya makala 7000 (wakati wa kuandika) kuhusu COVID, inapatikana na metadata na muhtasari (na kwa karibu nusu ya makala kuna maandishi kamili pia).
Katika changamoto hii, tutaendelea na mada ya janga la COVID, na kuzingatia usindikaji wa makala za kisayansi kuhusu mada hii. Kuna Hifadhidata ya [CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) zenye makala zaidi ya 7000 (wakati wa kuandika) kuhusu COVID, zinapatikana pamoja na metadata na muhtasari (na kwa takriban nusu yao pia kuna maandishi kamili yanayotolewa).
Mfano kamili wa kuchambua dataset hii kwa kutumia huduma ya kiakili ya [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) umeelezwa [katika blogu hii](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Tutajadili toleo rahisi la uchambuzi huu.
Mfano kamili wa kuchambua hifadhidata hii kwa kutumia huduma ya [Text Analytics for Health](https://docs.microsoft.com/azure/cognitive-services/text-analytics/how-tos/text-analytics-for-health/?WT.mc_id=academic-77958-bethanycheum) umeelezwa [katika chapisho hili la blogu](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Tutajadili toleo lililorahisishwa la uchambuzi huu.
> **NOTE**: Hatutoi nakala ya dataset kama sehemu ya hifadhi hii. Huenda ukahitaji kwanza kupakua faili ya [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) kutoka [dataset hii kwenye Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Usajili na Kaggle unaweza kuhitajika. Unaweza pia kupakua dataset bila usajili [kutoka hapa](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), lakini itajumuisha maandishi kamili yote pamoja na faili ya metadata.
> **NOTE**: Hatutoa nakala ya hifadhidata kama sehemu ya hifadhi hii. Huwezi kuhitaji kupakua faili [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) kwanza kutoka [hifadhidata hii kwenye Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Inaweza kuhitajika kujiandikisha kwenye Kaggle. Pia unaweza kupakua hifadhidata bila usajili [hapa](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), lakini itajumuisha maandishi kamili yote pamoja na faili ya metadata.
Fungua [`notebook-papers.ipynb`](notebook-papers.ipynb) na isome kutoka juu hadi chini. Unaweza pia kutekeleza seli, na kufanya changamoto ambazo tumeacha kwa ajili yako mwishoni.
Fungua [`notebook-papers.ipynb`](notebook-papers.ipynb) na usome kutoka juu hadi chini. Unaweza pia kuendesha seli, na kutekeleza changamoto tulizokuachia mwishoni.
![Covid Medical Treatment](../../../../translated_images/sw/covidtreat.b2ba59f57ca45fbc.webp)
![Matibabu ya Covid Katika Matibabu](../../../../translated_images/sw/covidtreat.b2ba59f57ca45fbc.webp)
## Usindikaji wa Data ya Picha
## Kusindika Data za Picha
Hivi karibuni, mifano yenye nguvu sana ya AI imeendelezwa ambayo inaruhusu kuelewa picha. Kuna kazi nyingi ambazo zinaweza kutatuliwa kwa kutumia mitandao ya neva iliyofunzwa awali, au huduma za wingu. Mifano kadhaa ni pamoja na:
Hivi majuzi, mifano ya AI yenye nguvu imeundwa ambayo inaturuhusu kuelewa picha. Kuna kazi nyingi zinazoweza kutatuliwa kwa kutumia mitandao ya neva iliyofundishwa awali, au huduma za wingu. Mifano mingine ni:
* **Uainishaji wa Picha**, ambayo inaweza kukusaidia kuainisha picha katika mojawapo ya madarasa yaliyofafanuliwa awali. Unaweza kwa urahisi kufundisha waainishaji wa picha zako mwenyewe kwa kutumia huduma kama [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Utambuzi wa Vitu** ili kutambua vitu tofauti kwenye picha. Huduma kama [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) zinaweza kutambua idadi ya vitu vya kawaida, na unaweza kufundisha [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) kutambua vitu maalum vya maslahi.
* **Utambuzi wa Nyuso**, ikiwa ni pamoja na Umri, Jinsia na Utambuzi wa Hisia. Hii inaweza kufanyika kupitia [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Uainishaji wa Picha**, ambao unaweza kusaidia kukokotoa picha katika mojawapo ya darasa zilizowekwa kabla. Unaweza kwa urahisi kufundisha waainishaji wako wenyewe wa picha kwa kutumia huduma kama [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Utambuzi wa Vitu** kugundua vitu tofauti kwenye picha. Huduma kama [kompyuta mtazamo](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) zinaweza kugundua idadi ya vitu kawaida, na unaweza kufundisha mfano wa [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) kugundua baadhi ya vitu maalum vya umuhimu.
* **Utambuzi wa Uso**, ikiwa ni pamoja na Utambuzi wa Umri, Jinsia na Hisia. Hii inaweza kufanywa kupitia [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Huduma zote za wingu zinaweza kuitwa kwa kutumia [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), na hivyo zinaweza kuingizwa kwa urahisi katika mtiririko wako wa uchunguzi wa data.
Huduma zote hizi za wingu zinaweza kuitwa kwa kutumia [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), na hivyo zinaweza kuingizwa kwa urahisi katika mtiririko wako wa uchunguzi data.
Hapa kuna mifano ya kuchunguza data kutoka vyanzo vya data ya picha:
* Katika blogu ya [Jinsi ya Kujifunza Sayansi ya Data bila Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) tunachunguza picha za Instagram, tukijaribu kuelewa ni nini kinachofanya watu kutoa likes zaidi kwa picha. Kwanza tunachimba taarifa nyingi kutoka kwa picha kwa kutumia [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), kisha tunatumia [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) kujenga mfano unaoweza kufasiriwa.
* Katika [Warsha ya Utafiti wa Nyuso](https://github.com/CloudAdvocacy/FaceStudies) tunatumia [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) kuchimba hisia za watu kwenye picha kutoka matukio, ili kujaribu kuelewa ni nini kinachofanya watu kuwa na furaha.
Hapa kuna mifano ya kuchunguza data kutoka vyanzo vya data za Picha:
* Katika chapisho la blogu [Jinsi ya Kujifunza Sayansi ya Data bila Kodisha](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) tunachunguza picha za Instagram, tukijaribu kuelewa ni nini kinachosababisha watu kutoa “likes” zaidi kwa picha. Kwanza tunatoa taarifa nyingi iwezekanavyo kutoka picha kwa kutumia [kompyuta mtazamo](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), kisha tunatumia [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) kujenga mfano unaoweza kufasiriwa.
* Katika [Warsha za Masomo ya Uso](https://github.com/CloudAdvocacy/FaceStudies) tunatumia [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) kutoa hisia za watu katika picha kutoka matukio, ili kujaribu kuelewa ni nini kinawafanya watu wawe na furaha.
## Hitimisho
Ikiwa tayari una data yenye muundo au isiyo na muundo, kwa kutumia Python unaweza kufanya hatua zote zinazohusiana na usindikaji wa data na uelewa. Hii pengine ndiyo njia rahisi zaidi ya usindikaji wa data, na ndiyo sababu wataalamu wengi wa data hutumia Python kama chombo chao kikuu. Kujifunza Python kwa undani ni wazo zuri ikiwa unachukua safari yako ya sayansi ya data kwa uzito!
Iwe tayari una data yenye muundo au isiyo na muundo, kwa kutumia Python unaweza kufanya hatua zote zinazohusiana na usindikaji na uelewa wa data. Hii labda ndiyo njia yenye kubadilika zaidi ya kusindika data, na ndio sababu wataalamu wengi wa sayansi ya data hutumia Python kama chombo chao kikuu. Kujifunza Python kwa undani labda ni wazo zuri ikiwa una nia ya dhati ya safari yako ya sayansi ya data!
## [Jaribio la baada ya somo](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## [Mtihani baada ya mhadhara](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## Mapitio na Kujisomea
## Mapitio & Kujisomea
**Vitabu**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
* [Wes McKinney. Python kwa Uchambuzi wa Data: Kusafisha Data kwa Pandas, NumPy, na IPython](https://www.amazon.com/gp/product/1491957662)
**Rasilimali za Mtandaoni**
* Mafunzo rasmi ya [Dakika 10 za Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [Nyaraka za Uonyeshaji wa Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Rasilimali Mtandaoni**
* Mafunzo rasmi ya [Dakika 10 hadi Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [Nyaraka za Uoneshaji wa Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Kujifunza Python**
* [Jifunze Python kwa Njia ya Kufurahisha na Michoro ya Turtle na Fractals](https://github.com/shwars/pycourse)
* [Chukua Hatua Zako za Kwanza na Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Njia ya Kujifunza kwenye [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Jifunze Python kwa Njia ya Mchezo na Michoro ya Turtle na Fractals](https://github.com/shwars/pycourse)
* [Chukua Hatua Zako za Kwanza na Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Njia ya Kujifunza katika [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Kazi
## Kazi ya Nyumbani
[Fanya uchunguzi wa kina wa data kwa changamoto zilizo hapo juu](assignment.md)
[Fanya utafiti wa kina zaidi kwa changamoto zilizo hapo juu](assignment.md)
## Credits
## Sifa
Somo hili limeandikwa kwa ♥️ na [Dmitry Soshnikov](http://soshnikov.com)
Somo hili limeandikwa kwa upendo ♥️ na [Dmitry Soshnikov](http://soshnikov.com)
---
**Kanusho**:
Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kuhakikisha usahihi, tafadhali fahamu kuwa tafsiri za kiotomatiki zinaweza kuwa na makosa au kutokuwa sahihi. Hati ya asili katika lugha yake ya awali inapaswa kuzingatiwa kama chanzo cha mamlaka. Kwa taarifa muhimu, inashauriwa kutumia huduma ya tafsiri ya kitaalamu ya binadamu. Hatutawajibika kwa maelewano mabaya au tafsiri zisizo sahihi zinazotokana na matumizi ya tafsiri hii.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Kionyozo**:
Hati hii imetafsiriwa kwa kutumia huduma ya tafsiri ya AI [Co-op Translator](https://github.com/Azure/co-op-translator). Ingawa tunajitahidi kupata usahihi, tafadhali fahamu kwamba tafsiri za kiotomatiki zinaweza kuwa na makosa au upungufu wa usahihi. Hati ya asili katika lugha yake halisi inapaswa kuchukuliwa kama chanzo cha mamlaka. Kwa taarifa muhimu, tafsiri ya kitaalamu inayofanywa na binadamu inapendekezwa. Hatutojibu kwa kuelewa vibaya au tafsiri potofu zinazotokea kutokana na matumizi ya tafsiri hii.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
Loading…
Cancel
Save