[sk,ro,bg] chore(i18n): sync translations

Sync translations with latest source changes.
Languages: Slovak [sk], Romanian [ro], Bulgarian [bg]
pull/798/head
localizeflow[bot] 2 months ago
parent be003a7068
commit 122b33f3ab

@ -96,8 +96,8 @@
"language_code": "bg"
},
"2-Working-With-Data/07-python/README.md": {
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:59:51+00:00",
"original_hash": "fb29e3e0be486fe8f15d50bdade79eb1",
"translation_date": "2026-07-17T18:45:02+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "bg"
},

@ -1,62 +1,62 @@
# Работа с данни: Python и библиотеката Pandas
| ![ Скетч от [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| :---------------------------------------------------------------------------------------------------: |
| Работа с Python - _Скетч от [@nitya](https://twitter.com/nitya)_ |
| ![ Скетчноут от [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: |
| Работа с Python - _Скетчноут от [@nitya](https://twitter.com/nitya)_ |
[![Въвеждащо видео](../../../../translated_images/bg/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y)
[![Въведение Видео](../../../../translated_images/bg/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y)
Докато базите данни предлагат много ефективни начини за съхранение на данни и тяхното извличане чрез език за заявки, най-гъвкавият начин за обработка на данни е да напишете собствена програма за манипулиране на данните. В много случаи използването на заявка към база данни би било по-ефективно. Въпреки това, в някои случаи, когато е необходима по-сложна обработка на данни, това не може лесно да се направи с SQL.
Обработката на данни може да бъде програмирана на всеки език за програмиране, но има определени езици, които са по-високо ниво, когато става въпрос за работа с данни. Специалистите по данни обикновено предпочитат един от следните езици:
Докато базите данни предлагат много ефективни начини за съхранение на данни и заявки с езикове за заявки, най-гъвкавият начин за обработка на данни е написването на собствена програма за манипулиране на данните. В много случаи изпълнението на заявка към база данни би било по-ефективен начин. Но в някои ситуации, когато е нужна по-сложна обработка на данни, това не може да се направи лесно с SQL.
Обработката на данни може да се програмира на какъвто и да е език за програмиране, но има определени езици, които са по-високо ниво по отношение на работа с данни. Данни учени обикновено предпочитат един от следните езици:
* **[Python](https://www.python.org/)**, универсален език за програмиране, който често се счита за един от най-добрите варианти за начинаещи поради своята простота. Python има много допълнителни библиотеки, които могат да ви помогнат да решите много практически проблеми, като например извличане на данни от ZIP архив или конвертиране на изображение в сиво. Освен за обработка на данни, Python често се използва и за уеб разработка.
* **[R](https://www.r-project.org/)** е традиционен инструмент, разработен с цел статистическа обработка на данни. Той също така съдържа голямо хранилище от библиотеки (CRAN), което го прави добър избор за обработка на данни. Въпреки това, R не е универсален език за програмиране и рядко се използва извън домейна на обработката на данни.
* **[Julia](https://julialang.org/)** е друг език, разработен специално за обработка на данни. Той е предназначен да предостави по-добра производителност от Python, което го прави отличен инструмент за научни експерименти.
* **[Python](https://www.python.org/)**, език за общо предназначение, който често се счита за един от най-добрите варианти за начинаещи заради простотата си. Python има много допълнителни библиотеки, които могат да ви помогнат да решите много практически задачи, като например извличане на вашите данни от ZIP архив или конвертиране на изображение в сиви тонове. Освен в науката за данни, Python често се използва и за уеб разработка.
* **[R](https://www.r-project.org/)** е традиционен набор от инструменти, създаден с мисъл за статистическа обработка на данни. Той има огромно хранилище от библиотеки (CRAN), което го прави добър избор за работа с данни. Въпреки това, R не е език за общо предназначение и рядко се използва извън сферата на науката за данни.
* **[Julia](https://julialang.org/)** е друг език, разработен специално за науката за данни. Той е предназначен да осигури по-добра производителност от Python, което го прави отличен инструмент за научни експерименти.
В този урок ще се фокусираме върху използването на Python за проста обработка на данни. Ще предположим основно познаване на езика. Ако искате по-задълбочен курс по Python, можете да се обърнете към някой от следните ресурси:
В този урок ще се фокусираме върху използването на Python за проста обработка на данни. Ще предположим основни познания по езика. Ако искате по-задълбочено въведение в Python, можете да се обърнете към един от следните ресурси:
* [Научете Python по забавен начин с графики на костенурки и фрактали](https://github.com/shwars/pycourse) - Бърз въведение в програмирането с Python, базиран на GitHub
* [Направете първите си стъпки с Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Път за обучение на [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Научете Python по забавен начин с Turtle Graphics и фрактали](https://github.com/shwars/pycourse) - кратък курс за Python програмиране, базиран в GitHub
* [Вашите първи стъпки с Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Обучителен път в [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Данните могат да бъдат в много форми. В този урок ще разгледаме три форми на данни - **таблични данни**, **текст** и **изображения**.
Ще се фокусираме върху няколко примера за обработка на данни, вместо да ви предоставим пълен преглед на всички свързани библиотеки. Това ще ви позволи да получите основната идея за възможностите и да разберете къде да намерите решения на вашите проблеми, когато имате нужда.
Ще се фокусираме върху няколко примера за обработка на данни, вместо да даваме пълен преглед на всички свързани библиотеки. Това ще ви позволи да усвоите основната идея какво е възможно и да ви даде разбиране къде да търсите решения на вашите проблеми, когато ви потрябват.
> **Най-полезен съвет**. Когато трябва да извършите определена операция върху данни, която не знаете как да направите, опитайте да я потърсите в интернет. [Stackoverflow](https://stackoverflow.com/) обикновено съдържа много полезни примери за код на Python за много типични задачи.
> **Най-полезният съвет**. Когато трябва да извършите определена операция с данни, която не знаете как да направите, пробвайте да я потърсите в интернет. [Stackoverflow](https://stackoverflow.com/) обикновено съдържа много полезни примери с код на Python за много типични задачи.
## [Тест преди лекцията](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## [Предварителен тест](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Таблични данни и Dataframes
Вече сте се срещали с таблични данни, когато говорихме за релационни бази данни. Когато имате много данни, и те са съдържани в много различни свързани таблици, определено има смисъл да използвате SQL за работа с тях. Въпреки това, има много случаи, когато имаме таблица с данни и трябва да получим някакво **разбиране** или **информация** за тези данни, като например разпределение, корелация между стойности и т.н. В обработката на данни има много случаи, когато трябва да извършим някои трансформации на оригиналните данни, последвани от визуализация. И двете стъпки могат лесно да се направят с Python.
Вече сте се запознали с таблични данни, когато говорихме за релационни бази данни. Когато имате много данни, съдържащи се в множество свързани таблици, със сигурност има смисъл да използвате SQL за работа с тях. Въпреки това в много случаи имаме таблица с данни и трябва да придобием някакво **разбиране** или **прозрение** за тези данни, като разпределение, корелация между стойностите и др. В науката за данни често трябва да извършваме трансформации на оригиналните данни, последвани от визуализация. И двата етапа могат лесно да се изпълнят с Python.
Има две най-полезни библиотеки в Python, които могат да ви помогнат да работите с таблични данни:
* **[Pandas](https://pandas.pydata.org/)** ви позволява да манипулирате така наречените **Dataframes**, които са аналогични на релационни таблици. Можете да имате именувани колони и да извършвате различни операции върху редове, колони и Dataframes като цяло.
* **[Numpy](https://numpy.org/)** е библиотека за работа с **тензори**, т.е. многомерни **масиви**. Масивът има стойности от един и същ основен тип и е по-прост от Dataframe, но предлага повече математически операции и създава по-малко натоварване.
* **[Pandas](https://pandas.pydata.org/)** ви позволява да манипулирате така наречените **Dataframes**, които са аналогични на релационни таблици. Можете да имате именовани колони и да извършвате различни операции върху редове, колони и Dataframes като цяло.
* **[Numpy](https://numpy.org/)** е библиотека за работа с **тензори**, т.е. многомерни **масиви**. Масивите имат стойности от един и същ подлежащ тип и са по-прости от Dataframe, но предлагат повече математически операции и създават по-малко допълнителна натовареност.
Има и няколко други библиотеки, които трябва да знаете:
Има и няколко други библиотеки, които е добре да знаете:
* **[Matplotlib](https://matplotlib.org/)** е библиотека, използвана за визуализация на данни и чертане на графики
* **[SciPy](https://www.scipy.org/)** е библиотека с някои допълнителни научни функции. Вече сме се срещали с тази библиотека, когато говорихме за вероятности и статистика
* **[SciPy](https://www.scipy.org/)** е библиотека с допълнителни научни функции. Вече се запознахме с нея при обсъждането на вероятности и статистика
Ето парче код, което обикновено бихте използвали, за да импортирате тези библиотеки в началото на вашата Python програма:
Ето част от кода, който обикновено се използва за импорт на тези библиотеки в началото на 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 ... # трябва да посочите конкретните подсъздания, от които се нуждаете
```
Pandas се основава на няколко основни концепции.
### Series
### Series
**Series** е последователност от стойности, подобна на списък или numpy масив. Основната разлика е, че Series също има **индекс**, и когато работим със Series (например, ги събираме), индексът се взема предвид. Индексът може да бъде толкова прост, колкото цяло число за номер на ред (това е индексът, използван по подразбиране при създаване на Series от списък или масив), или може да има сложна структура, като например интервал от дати.
**Series** е последователност от стойности, подобна на списък или numpy масив. Основната разлика е, че серията има и **индекс**, и когато извършваме операции върху серии (например събиране), индексът се взема под внимание. Индексът може да бъде толкова прост, колкото цяло число ред (това е индексът, който се използва по подразбиране при създаване на серия от списък или масив), или може да има сложна структура, като интервал от дати.
> **Забележка**: В придружаващия notebook [`notebook.ipynb`](notebook.ipynb) има въведение в кода на Pandas. Тук само очертаваме някои примери, но определено можете да разгледате пълния notebook.
> **Бележка**: Има малко въведение с Pandas код в придружаващия бележник [`notebook.ipynb`](notebook.ipynb). Тук само очертаваме някои примери, като сте добре дошли да разгледате пълния бележник.
Да разгледаме пример: искаме да анализираме продажбите на нашия магазин за сладолед. Нека генерираме серия от числа за продажби (брой продадени артикули всеки ден) за определен период от време:
Помислете за пример: искаме да анализираме продажбите в нашия сладоледен магазин. Нека генерираме серия продажби (брой продадени артикули всеки ден) за определен период от време:
```python
start_date = "Jan 1, 2020"
@ -68,29 +68,29 @@ items_sold.plot()
```
![Графика на времеви серии](../../../../translated_images/bg/timeseries-1.80de678ab1cf727e.webp)
Сега да предположим, че всяка седмица организираме парти за приятели и вземаме допълнителни 10 опаковки сладолед за партито. Можем да създадем друга серия, индексирана по седмици, за да демонстрираме това:
Сега предположим, че всяка седмица организираме парти за приятели и вземаме допълнително 10 пакета сладолед за партито. Можем да създадем друга серия, индексирана по седмици, за да го илюстрираме:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
Когато съберем двете серии, получаваме общия брой:
Когато съберем двете серии, получаваме общ сбор:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Графика на времеви серии](../../../../translated_images/bg/timeseries-2.aae51d575c55181c.webp)
> **Забележка**: Не използваме простия синтаксис `total_items+additional_items`. Ако го направим, ще получим много стойности `NaN` (*Not a Number*) в резултатната серия. Това е така, защото липсват стойности за някои точки от индекса в серията `additional_items`, и добавянето на `NaN` към нещо води до `NaN`. Затова трябва да зададем параметъра `fill_value` по време на събирането.
> **Бележка**: Не използваме прост синтаксис `total_items+additional_items`. Ако го направим, ще получим много `NaN` (*Not a Number*) стойности в получената серия. Това е защото някои индексни точки в серията `additional_items` нямат стойности, и добавянето на `NaN` към нещо дава `NaN`. Затова трябва да посочим параметъра `fill_value` при събирането.
С времеви серии можем също да **преизчислим** серията с различни времеви интервали. Например, ако искаме да изчислим средния обем на продажбите месечно, можем да използваме следния код:
С времеви серии можем също да направим **ресемплиране** на серията с различни времеви интервали. Например, ако искаме да изчислим средната продажба месечно. Можем да използваме следния код:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Месечни средни стойности на времеви серии](../../../../translated_images/bg/timeseries-3.f3147cbc8c624881.webp)
![Средни месечни стойности на времевата серия](../../../../translated_images/bg/timeseries-3.f3147cbc8c624881.webp)
### DataFrame
DataFrame е по същество колекция от серии със същия индекс. Можем да комбинираме няколко серии в DataFrame:
DataFrame е съществено колекция от серии с един и същ индекс. Можем да комбинираме няколко серии в един DataFrame:
```python
a = pd.Series(range(1,10))
b = pd.Series(["I","like","to","play","games","and","will","not","change"],index=range(0,9))
@ -102,7 +102,7 @@ df = pd.DataFrame([a,b])
| 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
| 1 | I | like | to | use | Python | and | Pandas | very | much |
Можем също да използваме Series като колони и да зададем имена на колони чрез речник:
Можем също да използваме Series като колони и да зададем имена на колоните чрез речник:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
@ -120,35 +120,35 @@ df = pd.DataFrame({ 'A' : a, 'B' : b })
| 7 | 8 | very |
| 8 | 9 | much |
**Забележка**: Можем също да получим този изглед на таблицата, като транспонираме предишната таблица, например, като напишем
**Бележка**: Можем също да получим това оформление на таблицата, като транспонираме предишната таблица, например с
```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' })
```
Тук `.T` означава операцията на транспониране на DataFrame, т.е. размяна на редове и колони, а операцията `rename` ни позволява да преименуваме колоните, за да съответстват на предишния пример.
Тук `.T` означава операцията транспониране на DataFrame, т.е. смяна на редовете с колоните, а операцията `rename` ни позволява да преименуваме колоните, за да съвпаднат с предишния пример.
Ето някои от най-важните операции, които можем да извършим върху DataFrames:
Ето няколко най-важни операции, които можем да извършим с DataFrames:
**Избор на колони**. Можем да изберем отделни колони, като напишем `df['A']` - тази операция връща Series. Можем също да изберем подмножество от колони в друг DataFrame, като напишем `df[['B','A']]` - това връща друг DataFrame.
**Избор на колони**. Можем да избираме отделни колони с `df['A']` - операцията връща Series. Можем също да изберем подмножество от колони в друг DataFrame с `df[['B','A']]` - връща друг DataFrame.
**Филтриране** само на определени редове по критерии. Например, за да оставим само редовете, където колоната `A` е по-голяма от 5, можем да напишем `df[df['A']>5]`.
**Филтриране** на редове по критерии. Например, за да оставим само редове със стойност на колона `A` по-голяма от 5, пишем `df[df['A']>5]`.
> **Забележка**: Начинът, по който работи филтрирането, е следният. Изразът `df['A']<5` връща булева серия, която показва дали изразът е `True` или `False` за всеки елемент от оригиналната серия `df['A']`. Когато булевата серия се използва като индекс, тя връща подмножество от редове в DataFrame. Следователно не е възможно да се използва произволен булев израз на Python, например, написването на `df[df['A']>5 and df['A']<7]` би било грешно. Вместо това трябва да използвате специалната операция `&` върху булеви серии, като напишете `df[(df['A']>5) & (df['A']<7)]` (*скобите са важни тук*).
> **Бележка**: Филтрирането става по следния начин. Изразът `df['A']<5` връща булева серия, която указва дали изразът е `True` или `False` за всеки елемент на оригиналната серия `df['A']`. Когато булева серия се използва като индекс, връща подмножество от редове в DataFrame. Затова не може да се използва произволен булев израз на Python, например `df[df['A']>5 and df['A']<7]` е грешен. Вместо това трябва да се използва специалната операция `&` за булеви серии, като се пише `df[(df['A']>5) & (df['A']<7)]` (*квадратните скоби са важни*).
**Създаване на нови изчисляеми колони**. Можем лесно да създадем нови изчисляеми колони за нашия DataFrame, като използваме интуитивен израз като този:
**Създаване на нови изчисляеми колони**. Можем лесно да създаваме нови изчисляеми колони в DataFrame, като използваме интуитивни изрази като този:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Този пример изчислява отклонението на A от неговата средна стойност. Това, което всъщност се случва тук, е, че изчисляваме серия и след това я присвояваме на лявата страна, създавайки друга колона. Следователно, не можем да използваме никакви операции, които не са съвместими със серии, например, следният код е грешен:
Този пример изчислява отклонението на A от средната му стойност. Всъщност тук изчисляваме серия и след това присвояваме тази серия от лявата страна, създавайки нова колона. Затова не можем да използваме операции, които не са съвместими със series. Например кодът по-долу е грешен:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
# Грешен код -> df['ADescr'] = "Low" ако df['A'] < 5 иначе "Hi"
df['LenB'] = len(df['B']) # <- Грешен резултат
```
Последният пример, макар и синтактично правилен, ни дава грешен резултат, защото присвоява дължината на серията `B` на всички стойности в колоната, а не дължината на отделните елементи, както сме възнамерявали.
Последният пример, макар и синтактично правилен, дава грешен резултат, защото назначава дължината на серия B на всички стойности в колоната, а не дължината на отделните елементи, както очаквахме.
Ако трябва да изчислим сложни изрази като този, можем да използваме функцията `apply`. Последният пример може да бъде написан по следния начин:
Ако трябва да изчислим сложни изрази като този, можем да използваме функцията `apply`. Последният пример може да се напише по следния начин:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
# или
df['LenB'] = df['B'].apply(len)
```
@ -166,16 +166,16 @@ df['LenB'] = df['B'].apply(len)
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Избор на редове по номера** може да се направи с конструкцията `iloc`. Например, за да изберем първите 5 реда от DataFrame:
**Избор на редове по номер** може да стане чрез конструкта `iloc`. Например, за избор на първите 5 реда от DataFrame:
```python
df.iloc[:5]
```
**Групиране** често се използва за получаване на резултат, подобен на *сводни таблици* в Excel. Да предположим, че искаме да изчислим средната стойност на колоната `A` за всяка дадена стойност на `LenB`. Тогава можем да групираме нашия DataFrame по `LenB` и да извикаме `mean`:
**Групиране** често се използва за получаване на резултат, подобен на *pivot таблици* в Excel. Да предположим, че искаме да изчислим средната стойност на колона `A` за всяко число `LenB`. Тогава можем да групираме DataFrame по `LenB` и да извикаме `mean`:
```python
df.groupby(by='LenB')[['A','DivA']].mean()
```
Ако трябва да изчислим средната стойност и броя на елементите в групата, тогава можем да използваме по-сложната функция `aggregate`:
Ако трябва да изчислим и средна стойност, и брой елементи в групата, можем да използваме по-сложната функция `aggregate`:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
@ -183,7 +183,7 @@ df.groupby(by='LenB') \
```
Това ни дава следната таблица:
| LenB | Count | Mean |
| LenB | Count | Средно |
| ---- | ----- | -------- |
| 1 | 1 | 1.000000 |
| 2 | 1 | 3.000000 |
@ -192,92 +192,97 @@ df.groupby(by='LenB') \
| 6 | 2 | 6.000000 |
### Получаване на данни
Вече видяхме колко лесно е да създаваме Series и DataFrames от Python обекти. Въпреки това, данните обикновено идват под формата на текстов файл или Excel таблица. За щастие, Pandas ни предлага лесен начин за зареждане на данни от диска. Например, четенето на CSV файл е толкова просто, колкото това:
Видяхме колко е лесно да се създадат Series и DataFrames от Python обекти. Въпреки това, данните обикновено идват под формата на текстов файл или Excel таблица. За щастие, Pandas ни предлага прост начин да зареждаме данни от диска. Например, четенето на CSV файл е толкова просто:
```python
df = pd.read_csv('file.csv')
```
Ще видим още примери за зареждане на данни, включително извличането им от външни уебсайтове, в секцията "Предизвикателство".
Ще видим още примери за зареждане на данни, включително изтеглянето им от външни уебсайтове, в секцията "Challenge"
### Печатане и визуализация
### Принтиране и графики
Един Data Scientist често трябва да изследва данните, затова е важно да може да ги визуализира. Когато DataFrame е голям, често искаме просто да се уверим, че правим всичко правилно, като отпечатаме първите няколко реда. Това може да се направи чрез извикване на `df.head()`. Ако го изпълнявате от Jupyter Notebook, той ще отпечата DataFrame в хубава таблична форма.
Един Data Scientist често трябва да изследва данните, затова е важно да може да ги визуализира. Когато DataFrame е голям, много пъти искаме просто да сме сигурни, че всичко е наред, като отпечатаме първите няколко реда. Това може да се направи чрез извикване на `df.head()`. Ако го стартирате от Jupyter Notebook, ще отпечата DataFrame във красив табличен вид.
Вече видяхме използването на функцията `plot` за визуализация на някои колони. Докато `plot` е много полезен за много задачи и поддържа различни типове графики чрез параметъра `kind=`, винаги можете да използвате библиотеката `matplotlib`, за да създадете нещо по-сложно. Ще разгледаме визуализацията на данни подробно в отделни уроци от курса.
Видяхме и използването на функцията `plot` за визуализиране на някои колони. Докато `plot` е много полезен за много задачи и поддържа различни типове графики чрез параметъра `kind=`, винаги можете да използвате директно библиотеката `matplotlib` за по-сложни визуализации. Ще разгледаме визуализацията на данни подробно в отделни уроци от курса.
Този преглед обхваща най-важните концепции на Pandas, но библиотеката е много богата и няма ограничения за това, което можете да направите с нея! Нека сега приложим тези знания за решаване на конкретен проблем.
Този преглед покрива най-важните концепции на Pandas, но библиотеката е много богата и няма ограничения за това, което можете да направите с нея! Нека сега приложим тези знания за решаване на конкретен проблем.
## 🚀 Предизвикателство 1: Анализ на разпространението на COVID
Първият проблем, върху който ще се фокусираме, е моделирането на епидемичното разпространение на COVID-19. За да направим това, ще използваме данни за броя на заразените лица в различни страни, предоставени от [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) към [Johns Hopkins University](https://jhu.edu/). Данните са достъпни в [този GitHub репозиторий](https://github.com/CSSEGISandData/COVID-19).
Първият проблем, на който ще се съсредоточим, е моделирането на епидемичното разпространение на COVID-19. За тази цел ще използваме данните за броя на инфектираните лица в различни страни, предоставени от [Центъра за системни науки и инженеринг](https://systems.jhu.edu/) (CSSE) в [Университета Джонс Хопкинс](https://jhu.edu/). Наборът от данни е достъпен в [този GitHub репозиториум](https://github.com/CSSEGISandData/COVID-19).
Тъй като искаме да демонстрираме как да работим с данни, ви каним да отворите [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) и да го прочетете от началото до края. Можете също така да изпълните клетките и да решите някои предизвикателства, които сме оставили за вас в края.
Тъй като искаме да демонстрираме как да работим с данни, ви каним да отворите [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) и да го прочетете отгоре до долу. Можете също да изпълнявате клетки и да решите някои предизвикателства, които сме оставили за вас в края.
![COVID Spread](../../../../translated_images/bg/covidspread.f3d131c4f1d260ab.webp)
> Ако не знаете как да изпълнявате код в Jupyter Notebook, разгледайте [тази статия](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
> Ако не знаете как да изпълните код в Jupyter Notebook, разгледайте [тази статия](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Работа с неструктурирани данни
Докато данните много често идват в таблична форма, в някои случаи трябва да работим с по-малко структурирани данни, например текст или изображения. В този случай, за да приложим техниките за обработка на данни, които видяхме по-горе, трябва по някакъв начин да **извлечем** структурирани данни. Ето няколко примера:
Макар че данните много често идват в таблична форма, в някои случаи трябва да се справим с по-малко структурирани данни, например текст или изображения. В този случай, за да приложим техники за обработка на данни, които споменахме по-горе, трябва по някакъв начин да **извлечем** структурирани данни. Ето няколко примера:
* Извличане на ключови думи от текст и анализ на честотата на появата им
* Използване на невронни мрежи за извличане на информация за обекти на изображението
* Получаване на информация за емоциите на хората от видео поток
* Извличане на ключови думи от текст и анализиране на честотата на появяване на тези ключови думи
* Използване на невронни мрежи за извличане на информация за обекти на изображение
* Получаване на информация за емоциите на хора на видео
## 🚀 Предизвикателство 2: Анализ на COVID научни статии
## 🚀 Предизвикателство 2: Анализ на научни статии за COVID
В това предизвикателство ще продължим с темата за пандемията COVID и ще се фокусираме върху обработката на научни статии по темата. Съществува [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) с повече от 7000 (към момента на писане) статии за COVID, достъпни с метаданни и резюмета (а за около половината от тях има и пълни текстове).
В това предизвикателство ще продължим с темата за пандемията COVID и ще се съсредоточим върху обработката на научни статии по темата. Съществува [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) с повече от 7000 (към момента на писане) статии за COVID, достъпни с метаданни и резюмета (а за около половината от тях е наличен и пълен текст).
Пълен пример за анализ на този набор от данни с помощта на [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) когнитивна услуга е описан [в този блог пост](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Ще обсъдим опростена версия на този анализ.
Пълен пример за анализ на този набор от данни с помощта на когнитивната услуга [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) е описан [в тази блог публикация](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Ще разгледаме опростена версия на този анализ.
> **NOTE**: Не предоставяме копие на набора от данни като част от този репозиторий. Може първо да се наложи да изтеглите файла [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) от [този набор от данни в Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Може да се изисква регистрация в Kaggle. Можете също така да изтеглите набора от данни без регистрация [оттук](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), но той ще включва всички пълни текстове в допълнение към файла с метаданни.
> **ЗАБЕЛЕЖКА**: Не предоставяме копие на набора от данни като част от този репозиториум. Може първо да се наложи да изтеглите файла [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) от [този набор от данни в Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Може да е необходима регистрация в Kaggle. Можете също да изтеглите набора от данни без регистрация [оттук](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), но той ще включва всички пълни текстове в допълнение към метаданните.
Отворете [`notebook-papers.ipynb`](notebook-papers.ipynb) и го прочетете от началото до края. Можете също така да изпълните клетките и да решите някои предизвикателства, които сме оставили за вас в края.
Отворете [`notebook-papers.ipynb`](notebook-papers.ipynb) и го прочетете цялостно. Можете също да изпълнявате клетки и да решите някои от предизвикателствата, които сме оставили за вас в края.
![Covid Medical Treatment](../../../../translated_images/bg/covidtreat.b2ba59f57ca45fbc.webp)
## Обработка на данни от изображения
## Обработка на изображения
Напоследък са разработени много мощни AI модели, които ни позволяват да разбираме изображения. Съществуват много задачи, които могат да бъдат решени с помощта на предварително обучени невронни мрежи или облачни услуги. Някои примери включват:
Наскоро бяха разработени много мощни AI модели, които ни позволяват да разбираме изображения. Съществуват много задачи, които могат да се решат чрез предварително обучени невронни мрежи или облачни услуги. Някои примери включват:
* **Класификация на изображения**, която може да ви помогне да категоризирате изображението в една от предварително дефинираните категории. Можете лесно да обучите свои собствени класификатори на изображения, използвайки услуги като [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Откриване на обекти**, за да откриете различни обекти на изображението. Услуги като [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) могат да откриват редица често срещани обекти, а можете да обучите модел [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum), за да откривате специфични обекти от интерес.
* **Откриване на лица**, включително възраст, пол и емоции. Това може да се направи чрез [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Класификация на изображения**, която може да ви помогне да категоризирате изображението в една от предварително определените класове. Можете лесно да обучите свои собствени класификатори на изображения с помощта на услуги като [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Откриване на обекти** за разпознаване на различни обекти на изображението. Услуги като [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) могат да откриват редица често срещани обекти, а вие можете да обучите модел [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) да разпознава специфични обекти от интерес.
* **Откриване на лица**, включително определяне на възраст, пол и емоции. Това може да стане чрез [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Всички тези облачни услуги могат да бъдат извикани с помощта на [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) и следователно могат лесно да бъдат включени във вашия работен процес за изследване на данни.
Всички тези облачни услуги могат да се извикват чрез [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) и така лесно да бъдат включени във вашия работен процес за изследване на данни.
Ето някои примери за изследване на данни от източници на изображения:
* В блог поста [Как да учим Data Science без програмиране](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) изследваме снимки от Instagram, опитвайки се да разберем какво кара хората да харесват повече дадена снимка. Първо извличаме колкото се може повече информация от снимките, използвайки [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), а след това използваме [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum), за да изградим интерпретируем модел.
* В [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) използваме [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum), за да извлечем емоции на хората от снимки на събития, с цел да разберем какво прави хората щастливи.
Ето няколко примера за изследване на данни от източници на изображения:
* В блог публикацията [Как да научим Data Science без кодиране](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) изследваме снимки от Instagram, опитвайки се да разберем какво кара хората да дават повече харесвания на снимка. Първо извличаме колкото може повече информация от снимките с помощта на [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), а след това използваме [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum), за да построим интерпретируем модел.
* В [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) използваме [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum), за да извлечем емоциите на хората на фотографии от събития, с цел да разберем какво прави хората щастливи.
## Заключение
Независимо дали вече имате структурирани или неструктурирани данни, с помощта на Python можете да изпълните всички стъпки, свързани с обработката и разбирането на данни. Това вероятно е най-гъвкавият начин за обработка на данни и затова мнозинството от специалистите по данни използват Python като основен инструмент. Да изучите Python в дълбочина вероятно е добра идея, ако сте сериозни за вашето пътуване в света на Data Science!
Независимо дали вече имате структурирани или неструктурирани данни, с помощта на Python можете да извършите всички стъпки, свързани с обработката и разбирането на данните. Вероятно това е най-гъвкавият начин за обработка на данни, и това е причината повечето Data Scientists да използват Python като основен инструмент. Дълбокото изучаване на Python вероятно е добра идея, ако сте сериозни относно пътя си в науката за данните!
## [Тест след лекцията](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## Преглед и самостоятелно обучение
## Преглед и самостоятелно изучаване
**Книги**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**Онлайн ресурси**
* Официален [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) урок
* [Документация за визуализация с Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
* Официален туториал [10 минути до Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [Документация за визуализации в Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Изучаване на Python**
**Учете Python**
* [Научете Python по забавен начин с Turtle Graphics и фрактали](https://github.com/shwars/pycourse)
* [Направете първите си стъпки с Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) учебен път на [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Направете първите си стъпки с Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) учебен път в [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Задание
## Задача
[Извършете по-подробно изследване на данните за горните предизвикателства](assignment.md)
[Извършете по-задълбочено изучаване на данни за горните предизвикателства](assignment.md)
## Кредити
## Авторски права
Този урок е създаден с ♥️ от [Dmitry Soshnikov](http://soshnikov.com)
---
**Отказ от отговорност**:
Този документ е преведен с помощта на AI услуга за превод [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля, имайте предвид, че автоматичните преводи може да съдържат грешки или неточности. Оригиналният документ на неговия изходен език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален превод от човек. Ние не носим отговорност за каквито и да е недоразумения или погрешни интерпретации, произтичащи от използването на този превод.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Отказ от отговорност**:
Този документ е преведен с помощта на AI преводачески услуга [Co-op Translator](https://github.com/Azure/co-op-translator). Въпреки че се стремим към точност, моля имайте предвид, че автоматизираните преводи могат да съдържат грешки или неточности. Оригиналният документ на неговия роден език трябва да се счита за авторитетен източник. За критична информация се препоръчва професионален човешки превод. Ние не носим отговорност за каквито и да е недоразумения или неправилни тълкувания, произтичащи от използването на този превод.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

@ -96,8 +96,8 @@
"language_code": "ro"
},
"2-Working-With-Data/07-python/README.md": {
"original_hash": "7bfec050f4717dcc2dfd028aca9d21f3",
"translation_date": "2025-09-06T15:58:53+00:00",
"original_hash": "fb29e3e0be486fe8f15d50bdade79eb1",
"translation_date": "2026-07-17T18:43:42+00:00",
"source_file": "2-Working-With-Data/07-python/README.md",
"language_code": "ro"
},

@ -1,62 +1,62 @@
# Lucrul cu Date: Python și Biblioteca Pandas
# Lucrul cu date: Python și biblioteca Pandas
| ![ Sketchnote de [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: |
| Lucrul cu Python - _Sketchnote de [@nitya](https://twitter.com/nitya)_ |
| Lucrul cu Python - _Sketchnote de [@nitya](https://twitter.com/nitya)_ |
[![Video Introductiv](../../../../translated_images/ro/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y)
[![Video introductiv](../../../../translated_images/ro/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y)
Deși bazele de date oferă modalități foarte eficiente de stocare a datelor și de interogare a acestora folosind limbaje de interogare, cea mai flexibilă metodă de procesare a datelor este scrierea propriului program pentru manipularea datelor. În multe cazuri, o interogare SQL ar fi o metodă mai eficientă. Totuși, în unele situații, când este necesară o procesare mai complexă a datelor, aceasta nu poate fi realizată ușor folosind SQL.
Procesarea datelor poate fi programată în orice limbaj de programare, dar există anumite limbaje care sunt mai potrivite pentru lucrul cu date. De obicei, oamenii de știință în domeniul datelor preferă unul dintre următoarele limbaje:
În timp ce bazele de date oferă modalități foarte eficiente pentru stocarea datelor și interogarea acestora folosind limbaje de interogare, cea mai flexibilă metodă de procesare a datelor este scrierea propriului program pentru manipularea datelor. În multe cazuri, efectuarea unei interogări în baza de date ar fi o metodă mai eficientă. Totuși, în unele cazuri când este necesară o procesare mai complexă a datelor, aceasta nu poate fi făcută ușor cu SQL.
Procesarea datelor poate fi programată în orice limbaj de programare, însă există anumite limbaje care sunt la un nivel mai înalt în ceea ce privește lucrul cu datele. Oamenii de știință în date preferă de obicei unul dintre următoarele limbaje:
* **[Python](https://www.python.org/)**, un limbaj de programare general, considerat adesea una dintre cele mai bune opțiuni pentru începători datorită simplității sale. Python are multe biblioteci suplimentare care te pot ajuta să rezolvi diverse probleme practice, cum ar fi extragerea datelor dintr-un fișier ZIP sau conversia unei imagini în tonuri de gri. Pe lângă știința datelor, Python este utilizat frecvent și în dezvoltarea web.
* **[R](https://www.r-project.org/)** este un instrument tradițional dezvoltat pentru procesarea datelor statistice. Acesta conține un depozit vast de biblioteci (CRAN), ceea ce îl face o alegere bună pentru procesarea datelor. Totuși, R nu este un limbaj de programare general și este rar utilizat în afara domeniului științei datelor.
* **[Julia](https://julialang.org/)** este un alt limbaj dezvoltat special pentru știința datelor. Acesta este conceput pentru a oferi performanțe mai bune decât Python, fiind un instrument excelent pentru experimente științifice.
* **[Python](https://www.python.org/)**, un limbaj de programare general, considerat adesea una dintre cele mai bune opțiuni pentru începători datorită simplității sale. Python dispune de multe biblioteci suplimentare care te pot ajuta să rezolvi multe probleme practice, cum ar fi extragerea datelor dintr-un arhiv ZIP sau conversia unei imagini în tonuri de gri. Pe lângă știința datelor, Python este folosit și frecvent pentru dezvoltarea web.
* **[R](https://www.r-project.org/)** este un set de instrumente tradițional dezvoltat cu prelucrarea statistică a datelor în minte. De asemenea, conține un depozit mare de biblioteci (CRAN), făcându-l o alegere bună pentru procesarea datelor. Totuși, R nu este un limbaj de programare general, și este rar folosit în afara domeniului științei datelor.
* **[Julia](https://julialang.org/)** este un alt limbaj dezvoltat special pentru știința datelor. Este destinat să ofere performanțe mai bune decât Python, fiind astfel un instrument excelent pentru experimentarea științifică.
În această lecție, ne vom concentra pe utilizarea Python pentru procesarea simplă a datelor. Vom presupune că ai o familiaritate de bază cu limbajul. Dacă dorești o introducere mai detaliată în Python, poți consulta unul dintre următoarele resurse:
În această lecție, ne vom concentra pe utilizarea Python pentru procesarea simplă a datelor. Vom presupune o familiaritate de bază cu limbajul. Dacă dorești un tur mai aprofundat al Python, poți consulta una dintre următoarele resurse:
* [Învață Python într-un mod distractiv cu Turtle Graphics și Fractali](https://github.com/shwars/pycourse) - un curs rapid de introducere în programarea Python, disponibil pe GitHub
* [ primii pași cu Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) - Parcurs de învățare pe [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Învață Python într-un mod distractiv cu grafică Turtle și fractali](https://github.com/shwars/pycourse) - curs introductiv rapid pe GitHub pentru Programarea în Python
* [-ți primii pași cu Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Parcurs de învățare pe [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Datele pot avea multe forme. În această lecție, vom analiza trei forme de date - **date tabelare**, **text** și **imagini**.
Datele pot veni în multe forme. În această lecție, vom lua în considerare trei forme de date - **date tabulare**, **text** și **imagini**.
Ne vom concentra pe câteva exemple de procesare a datelor, în loc să oferim o prezentare completă a tuturor bibliotecilor relevante. Acest lucru îți va permite să înțelegi principalele posibilități și să știi unde să găsești soluții pentru problemele tale atunci când ai nevoie.
Ne vom concentra pe câteva exemple de prelucrare a datelor, în loc să oferim o prezentare completă a tuturor bibliotecilor conexe. Acest lucru îți va permite să înțelegi ideea principală despre ce este posibil și te va lăsa cu o înțelegere a unde să găsești soluții la problemele tale când ai nevoie.
> **Cel mai util sfat**. Când trebuie să efectuezi o anumită operațiune pe date și nu știi cum să o faci, încearcă să cauți pe internet. [Stackoverflow](https://stackoverflow.com/) conține de obicei multe exemple utile de cod în Python pentru diverse sarcini tipice.
> **Cel mai util sfat**. Când ai nevoie să faci o anumită operațiune pe date și nu știi cum, încearcă să cauți pe internet. [Stackoverflow](https://stackoverflow.com/) conține de obicei multe exemple utile de cod Python pentru multe sarcini tipice.
## [Chestionar înainte de lecție](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## [Test pre-lecture](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Date Tabelare și Dataframes
## Date tabulare și Dataframes
Ai întâlnit deja date tabelare când am discutat despre bazele de date relaționale. Când ai multe date, iar acestea sunt conținute în mai multe tabele interconectate, utilizarea SQL pentru a lucra cu ele este cu siguranță o alegere logică. Totuși, există multe situații în care avem un tabel de date și trebuie să obținem o **înțelegere** sau **perspectivă** asupra acestor date, cum ar fi distribuția, corelația între valori etc. În știința datelor, există multe cazuri în care trebuie să efectuăm transformări ale datelor originale, urmate de vizualizare. Ambele etape pot fi realizate ușor folosind Python.
Ai întâlnit deja date tabulare când am vorbit despre bazele de date relaționale. Când ai multe date conținute în mai multe tabele diferite legate între ele, cu siguranță are sens să folosești SQL pentru a lucra cu ele. Totuși, există multe cazuri în care avem un tabel de date și avem nevoie să obținem anumite **înțelegeri** sau **informații** despre aceste date, cum ar fi distribuția, corelația între valori, etc. În știința datelor, sunt multe cazuri când trebuie să facem diverse transformări ale datelor originale, urmate de vizualizare. Ambele etape pot fi făcute ușor folosind Python.
Există două biblioteci foarte utile în Python care te pot ajuta să lucrezi cu date tabelare:
* **[Pandas](https://pandas.pydata.org/)** îți permite să manipulezi așa-numitele **Dataframes**, care sunt analoge tabelelor relaționale. Poți avea coloane denumite și poți efectua diferite operațiuni pe rânduri, coloane și dataframes în general.
* **[Numpy](https://numpy.org/)** este o bibliotecă pentru lucrul cu **tensori**, adică **matrici** multidimensionale. Matricile au valori de același tip de bază și sunt mai simple decât dataframes, dar oferă mai multe operațiuni matematice și creează mai puțin overhead.
Există două biblioteci foarte utile în Python care te pot ajuta să lucrezi cu date tabulare:
* **[Pandas](https://pandas.pydata.org/)** îți permite să manipulezi așa-numitele **Dataframes**, care sunt analogice tabelelor relaționale. Poți avea coloane denumite și poți efectua diferite operațiuni pe rânduri, coloane și Dataframes în general.
* **[Numpy](https://numpy.org/)** este o bibliotecă pentru lucrul cu **tensorii**, adică **matrice multidimensionale**. Matricea are valori de același tip de bază și este mai simplă decât un Dataframe, dar oferă mai multe operațiuni matematice și creează mai puțin overhead.
Există și câteva alte biblioteci pe care ar trebui să le cunoști:
* **[Matplotlib](https://matplotlib.org/)** este o bibliotecă utilizată pentru vizualizarea datelor și crearea de grafice
* **[SciPy](https://www.scipy.org/)** este o bibliotecă cu funcții științifice suplimentare. Am întâlnit deja această bibliotecă când am discutat despre probabilitate și statistici
Există și câteva alte biblioteci despre care ar trebui să știi:
* **[Matplotlib](https://matplotlib.org/)** este o bibliotecă folosită pentru vizualizarea datelor și trasarea graficelor
* **[SciPy](https://www.scipy.org/)** este o bibliotecă cu câteva funcții științifice suplimentare. Am întâlnit deja această bibliotecă vorbind despre probabilitate și statistică
Iată un exemplu de cod pe care l-ai folosi de obicei pentru a importa aceste biblioteci la începutul programului tău Python:
Iată un fragment de cod pe care l-ai folosi de obicei pentru a importa acele biblioteci la începutul programului tău 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 ... # trebuie să specificați exact sub-pachetele de care aveți nevoie
```
Pandas se concentrează pe câteva concepte de bază.
Pandas se bazează pe câteva concepte de bază.
### Series
### Serie (Series)
**Series** este o secvență de valori, similară unei liste sau unui array numpy. Diferența principală este că series are și un **index**, iar când operăm pe series (de exemplu, le adunăm), indexul este luat în considerare. Indexul poate fi la fel de simplu ca numărul de rând (este indexul utilizat implicit când creăm un series dintr-o listă sau un array), sau poate avea o structură complexă, cum ar fi un interval de date.
**Serie** este o secvență de valori, similară unei liste sau unui array numpy. Diferența principală este că seria are și un **index** și când operăm pe serii (de exemplu, le adunăm), indexul este luat în considerare. Indexul poate fi un număr întreg simplu (este indexul utilizat implicit când creăm o serie din listă sau array), sau poate avea o structură complexă, cum ar fi interval de date.
> **Notă**: Există cod introductiv Pandas în notebook-ul asociat [`notebook.ipynb`](notebook.ipynb). Vom prezenta doar câteva exemple aici, dar ești binevenit să explorezi notebook-ul complet.
> **Notă**: Există niște cod introductiv Pandas în caietul atașat [`notebook.ipynb`](notebook.ipynb). Aici prezentăm doar câteva exemple, dar ești binevenit să verifici întregul caiet.
Să luăm un exemplu: dorim să analizăm vânzările de la magazinul nostru de înghețată. Să generăm un series de numere de vânzări (numărul de produse vândute în fiecare zi) pentru o anumită perioadă de timp:
Consideră un exemplu: vrem să analizăm vânzările locației noastre de înghețată. Să generăm o serie de numere ale vânzărilor (numărul de articole vândute în fiecare zi) pentru o anumită perioadă:
```python
start_date = "Jan 1, 2020"
@ -66,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()
```
![Grafic Serii Temporale](../../../../translated_images/ro/timeseries-1.80de678ab1cf727e.webp)
![Reprezentare a seriei temporale](../../../../translated_images/ro/timeseries-1.80de678ab1cf727e.webp)
Acum să presupunem că în fiecare săptămână organizăm o petrecere pentru prieteni și luăm 10 pachete suplimentare de înghețată pentru petrecere. Putem crea un alt series, indexat pe săptămână, pentru a demonstra acest lucru:
Acum, să presupunem că în fiecare săptămână organizăm o petrecere pentru prieteni și aducem suplimentar 10 pachete de înghețată pentru petrecere. Putem crea o altă serie, indexată după săptămâni, pentru a demonstra acest lucru:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
Când adunăm cele două series, obținem numărul total:
Când adunăm două serii, obținem numărul total:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Grafic Serii Temporale](../../../../translated_images/ro/timeseries-2.aae51d575c55181c.webp)
![Reprezentare a seriei temporale](../../../../translated_images/ro/timeseries-2.aae51d575c55181c.webp)
> **Notă** că nu folosim sintaxa simplă `total_items+additional_items`. Dacă am fi făcut acest lucru, am fi obținut multe valori `NaN` (*Not a Number*) în series-ul rezultat. Acest lucru se întâmplă deoarece lipsesc valori pentru unele puncte de index în series-ul `additional_items`, iar adunarea `NaN` cu orice altceva rezultă în `NaN`. Astfel, trebuie să specificăm parametrul `fill_value` în timpul adunării.
> **Notă** că nu folosim sintaxa simplă `total_items+additional_items`. Dacă am face asta, am obține multe valori `NaN` (*Not a Number*) în seria rezultată. Acest lucru se datorează faptului că există valori lipsă pentru unele puncte de index în seria `additional_items`, iar adăugarea NaN la orice duce la NaN. Prin urmare, trebuie să specificăm parametrul `fill_value` la adunare.
Cu serii temporale, putem **resampla** series-ul cu intervale de timp diferite. De exemplu, să presupunem că dorim să calculăm volumul mediu de vânzări lunar. Putem folosi următorul cod:
Cu seriile temporale, putem și **reasambla (resample)** seria cu intervale de timp diferite. De exemplu, să presupunem că vrem să calculăm media vânzărilor lunar. Putem folosi următorul cod:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Medii Lunare Serii Temporale](../../../../translated_images/ro/timeseries-3.f3147cbc8c624881.webp)
![Media lunară a seriei temporale](../../../../translated_images/ro/timeseries-3.f3147cbc8c624881.webp)
### DataFrame
Un DataFrame este, în esență, o colecție de series cu același index. Putem combina mai multe series într-un DataFrame:
Un DataFrame este în esență o colecție de serii cu același index. Putem combina mai multe serii într-un 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])
```
Acest lucru va crea un tabel orizontal ca acesta:
Aceasta va crea un tabel orizontal ca acesta:
| | 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 |
Putem folosi și Series ca coloane și să specificăm numele coloanelor folosind un dicționar:
Putem folosi și Serii ca și coloane, și specifica numele coloanelor printr-un dicționar:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
Acest lucru ne va oferi un tabel ca acesta:
Aceasta ne va da un tabel de acest fel:
| | A | B |
| --- | --- | ------ |
@ -120,39 +120,39 @@ Acest lucru ne va oferi un tabel ca acesta:
| 7 | 8 | very |
| 8 | 9 | much |
**Notă** că putem obține acest layout al tabelului și prin transpunerea tabelului anterior, de exemplu, scriind
**Notă** că putem obține acest layout al tabelului și prin transpusa tabelului anterior, de exemplu scriind
```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' })
```
Aici `.T` înseamnă operația de transpunere a DataFrame-ului, adică schimbarea rândurilor și coloanelor, iar operația `rename` ne permite să redenumim coloanele pentru a se potrivi cu exemplul anterior.
Aici `.T` înseamnă operația de transpunere a DataFrame-ului, adică schimbarea rândurilor în coloane și invers, iar `rename` ne permite să redenumim coloanele pentru a corespunde exemplului anterior.
Iată câteva dintre cele mai importante operațiuni pe care le putem efectua pe DataFrames:
Iată câteva dintre cele mai importante operațiuni pe care le putem face cu DataFrame-urile:
**Selecția coloanelor**. Putem selecta coloane individuale scriind `df['A']` - această operațiune returnează un Series. Putem selecta și un subset de coloane într-un alt DataFrame scriind `df[['B','A']]` - aceasta returnează un alt DataFrame.
**Selecția coloanelor**. Putem selecta coloane individuale scriind `df['A']` - această operațiune returnează o Serie. Putem de asemenea să selectăm un subset de coloane într-un alt DataFrame scriind `df[['B','A']]` - aceasta returnează un alt DataFrame.
**Filtrarea** doar a anumitor rânduri pe baza unor criterii. De exemplu, pentru a păstra doar rândurile în care coloana `A` este mai mare decât 5, putem scrie `df[df['A']>5]`.
**Filtrarea** doar a anumitor rânduri după criterii. De exemplu, pentru a păstra doar rândurile cu coloana `A` mai mare decât 5, scriem `df[df['A']>5]`.
> **Notă**: Modul în care funcționează filtrarea este următorul. Expresia `df['A']<5` returnează un series boolean, care indică dacă expresia este `True` sau `False` pentru fiecare element al series-ului original `df['A']`. Când series-ul boolean este utilizat ca index, acesta returnează subsetul de rânduri din DataFrame. Astfel, nu este posibil să utilizăm expresii boolean arbitrare din Python, de exemplu, scrierea `df[df['A']>5 and df['A']<7]` ar fi greșită. În schimb, ar trebui să utilizăm operația specială `&` pe series boolean, scriind `df[(df['A']>5) & (df['A']<7)]` (*parantezele sunt importante aici*).
> **Notă**: Modul în care funcționează filtrarea este următorul. Expresia `df['A']<5` returnează o serie booleană, care indică dacă expresia este `True` sau `False` pentru fiecare element al seriei originale `df['A']`. Când o serie booleană este folosită ca index, returnează un subset de rânduri din DataFrame. Prin urmare, nu este posibil să folosești o expresie booleană arbitrară în Python, de exemplu, scriind `df[df['A']>5 and df['A']<7]` ar fi greșit. În schimb, trebuie să folosești operatorul special `&` pentru seriile booleene, scriind `df[(df['A']>5) & (df['A']<7)]` (*parantezele sunt importante aici*).
**Crearea de coloane calculabile noi**. Putem crea ușor coloane calculabile noi pentru DataFrame-ul nostru folosind expresii intuitive ca aceasta:
**Crearea unor coloane noi calculabile**. Putem crea cu ușurință coloane noi calculabile pentru DataFrame-ul nostru folosind expresii intuitive de acest fel:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Acest exemplu calculează abaterea lui A față de valoarea sa medie. Ce se întâmplă de fapt aici este că calculăm un series și apoi atribuim acest series părții din stânga, creând o altă coloană. Astfel, nu putem utiliza operațiuni care nu sunt compatibile cu series, de exemplu, codul de mai jos este greșit:
Acest exemplu calculează deviația lui A față de valoarea sa medie. Ceea ce se întâmplă aici este că calculăm o serie și apoi îi atribuim rezultatul pe partea stângă, creând o coloană nouă. Prin urmare, nu putem folosi operații care nu sunt compatibile cu serii, de exemplu codul de mai jos este greșit:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
# Cod greșit -> df['ADescr'] = "Low" dacă df['A'] < 5 altfel "Hi"
df['LenB'] = len(df['B']) # <- Rezultat greșit
```
Ultimul exemplu, deși este sintactic corect, ne oferă un rezultat greșit, deoarece atribuie lungimea series-ului `B` tuturor valorilor din coloană, și nu lungimea elementelor individuale, așa cum intenționam.
Ultimul exemplu, deși este corect din punct de vedere sintactic, produce un rezultat greșit deoarece asignează lungimea întregii serii `B` tuturor valorilor din coloană, nu lungimea elementelor individuale, cum intenționam.
Dacă trebuie să calculăm expresii complexe ca aceasta, putem folosi funcția `apply`. Ultimul exemplu poate fi scris astfel:
Dacă avem nevoie să calculăm expresii complexe ca aceasta, putem folosi funcția `apply`. Ultimul exemplu poate fi scris astfel:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
# sau
df['LenB'] = df['B'].apply(len)
```
După operațiunile de mai sus, vom obține următorul DataFrame:
După operațiile de mai sus, vom ajunge la următorul DataFrame:
| | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- |
@ -166,16 +166,16 @@ După operațiunile de mai sus, vom obține următorul DataFrame:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Selecția rândurilor pe baza numerelor** poate fi realizată folosind constructul `iloc`. De exemplu, pentru a selecta primele 5 rânduri din DataFrame:
**Selectarea rândurilor pe baza numerelor** poate fi făcută folosind constructul `iloc`. De exemplu, pentru a selecta primele 5 rânduri din DataFrame:
```python
df.iloc[:5]
```
**Gruparea** este adesea utilizată pentru a obține un rezultat similar cu *tabelele pivot* din Excel. Să presupunem că dorim să calculăm valoarea medie a coloanei `A` pentru fiecare număr dat de `LenB`. Atunci putem grupa DataFrame-ul nostru după `LenB` și să apelăm `mean`:
**Gruparea** este folosită adesea pentru a obține un rezultat similar cu *tabelele pivot* din Excel. Să presupunem că vrem să calculăm media valorii coloanei `A` pentru fiecare număr dat de `LenB`. Atunci putem grupa DataFrame-ul după `LenB` și apela `mean`:
```python
df.groupby(by='LenB')[['A','DivA']].mean()
```
Dacă trebuie să calculăm media și numărul de elemente din grup, atunci putem folosi funcția mai complexă `aggregate`:
Dacă vrem să calculăm media și numărul de elemente din grup, putem folosi funcția mai complexă `aggregate`:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
@ -191,93 +191,98 @@ Aceasta ne oferă următorul tabel:
| 4 | 3 | 6.333333 |
| 6 | 2 | 6.000000 |
### Obținerea Datelor
Am văzut cât de ușor este să construim Series și DataFrames din obiecte Python. Totuși, datele vin de obicei sub formă de fișier text sau tabel Excel. Din fericire, Pandas ne oferă o modalitate simplă de a încărca datele de pe disc. De exemplu, citirea unui fișier CSV este la fel de simplă ca aceasta:
### Obținerea datelor
Am văzut cât de ușor este să construim Series și DataFrames din obiecte Python. Totuși, datele vin de obicei sub forma unui fișier text sau a unui tabel Excel. Din fericire, Pandas ne oferă o modalitate simplă de a încărca date de pe disc. De exemplu, citirea unui fișier CSV este la fel de simplă ca asta:
```python
df = pd.read_csv('file.csv')
```
Vom vedea mai multe exemple de încărcare a datelor, inclusiv obținerea acestora de pe site-uri web externe, în secțiunea „Provocare”.
Vom vedea mai multe exemple de încărcare a datelor, inclusiv preluarea acestora de pe site-uri web externe, în secțiunea „Provocare”
### Printarea și Vizualizarea
### Tipărire și Plotare
Un Data Scientist trebuie adesea să exploreze datele, așa că este important să le poată vizualiza. Când DataFrame-ul este mare, de multe ori vrem doar să ne asigurăm că facem totul corect prin printarea primelor câteva rânduri. Acest lucru poate fi realizat prin apelarea `df.head()`. Dacă îl rulați din Jupyter Notebook, acesta va afișa DataFrame-ul într-o formă tabelară frumoasă.
Un Data Scientist trebuie adesea să exploreze datele, astfel că este important să putem vizualiza acestea. Când DataFrame-ul este mare, de multe ori vrem doar să ne asigurăm că facem totul corect prin afișarea primelor câteva rânduri. Acest lucru se poate face apelând `df.head()`. Dacă îl rulați din Jupyter Notebook, va afișa DataFrame-ul într-o formă tabelară frumoasă.
Am văzut, de asemenea, utilizarea funcției `plot` pentru a vizualiza unele coloane. Deși `plot` este foarte util pentru multe sarcini și acceptă multe tipuri diferite de grafice prin parametrul `kind=`, puteți întotdeauna să utilizați biblioteca `matplotlib` pentru a crea ceva mai complex. Vom acoperi vizualizarea datelor în detaliu în lecțiile separate ale cursului.
Am văzut și utilizarea funcției `plot` pentru a vizualiza anumite coloane. În timp ce `plot` este foarte util pentru multe sarcini și suportă multe tipuri diferite de grafice prin parametrul `kind=`, puteți oricând să folosiți biblioteca brută `matplotlib` pentru a crea ceva mai complex. Vom aborda vizualizarea datelor în detaliu în lecții separate ale cursului.
Această prezentare generală acoperă cele mai importante concepte ale Pandas, totuși, biblioteca este foarte bogată și nu există limite pentru ceea ce puteți face cu ea! Să aplicăm acum aceste cunoștințe pentru rezolvarea unei probleme specifice.
Această privire de ansamblu acoperă cele mai importante concepte din Pandas, însă biblioteca este foarte bogată și nu există limită la ceea ce puteți face cu ea! Să aplicăm acum aceste cunoștințe pentru a rezolva o problemă specifică.
## 🚀 Provocarea 1: Analiza Răspândirii COVID
Prima problemă pe care ne vom concentra este modelarea răspândirii epidemiei de COVID-19. Pentru a face acest lucru, vom folosi datele despre numărul de persoane infectate în diferite țări, furnizate de [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) de la [Johns Hopkins University](https://jhu.edu/). Setul de date este disponibil în [acest depozit GitHub](https://github.com/CSSEGISandData/COVID-19).
Prima problemă pe care ne vom concentra este modelarea răspândirii epidemice a COVID-19. Pentru a face acest lucru, vom folosi datele despre numărul de persoane infectate în diferite țări, furnizate de către [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) de la [Johns Hopkins University](https://jhu.edu/). Setul de date este disponibil în [acest depozit GitHub](https://github.com/CSSEGISandData/COVID-19).
Deoarece dorim să demonstrăm cum să lucrăm cu datele, vă invităm să deschideți [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) și să îl citiți de la început până la sfârșit. Puteți, de asemenea, să executați celulele și să rezolvați unele provocări pe care le-am lăsat pentru voi la final.
Deoarece vrem să demonstrăm cum să lucrăm cu date, vă invităm să deschideți [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) și să îl citiți de la început până la sfârșit. Puteți de asemenea să executați celulele și să rezolvați provocările pe care le-am lăsat pentru voi la final.
![COVID Spread](../../../../translated_images/ro/covidspread.f3d131c4f1d260ab.webp)
> Dacă nu știți cum să rulați codul în Jupyter Notebook, consultați [acest articol](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
> Dacă nu știți cum să rulați cod într-un Jupyter Notebook, consultați [acest articol](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Lucrul cu Date Nestructurate
Deși datele vin foarte des sub formă tabelară, în unele cazuri trebuie să lucrăm cu date mai puțin structurate, de exemplu, text sau imagini. În acest caz, pentru a aplica tehnicile de procesare a datelor pe care le-am văzut mai sus, trebuie să **extragem** cumva date structurate. Iată câteva exemple:
Deși datele vin foarte des sub formă tabelară, în unele cazuri trebuie să lucrăm cu date mai puțin structurate, de exemplu texte sau imagini. În acest caz, pentru a aplica tehnicile de procesare a datelor pe care le-am văzut mai sus, trebuie cumva **extragem** date structurate. Iată câteva exemple:
* Extracția cuvintelor cheie din text și analiza frecvenței acestora
* Utilizarea rețelelor neuronale pentru a extrage informații despre obiectele dintr-o imagine
* Obținerea informațiilor despre emoțiile oamenilor din fluxul video al unei camere
* Extragem cuvinte cheie din text și vedem cât de des apar acestea
* Folosim rețele neurale pentru a extrage informații despre obiectele din imagine
* Obținem informații despre emoțiile persoanelor din fluxul video al camerei
## 🚀 Provocarea 2: Analiza Lucrărilor despre COVID
## 🚀 Provocarea 2: Analiza Articolelor despre COVID
În această provocare, vom continua cu tema pandemiei COVID și ne vom concentra pe procesarea lucrărilor științifice pe acest subiect. Există [Setul de Date CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) cu peste 7000 (la momentul redactării) lucrări despre COVID, disponibile cu metadate și rezumate (și pentru aproximativ jumătate dintre ele este furnizat și textul complet).
În această provocare vom continua cu subiectul pandemiei COVID și ne vom concentra pe procesarea articolelor științifice pe această temă. Există [setul de date CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) cu peste 7000 (la momentul scrierii) de articole despre COVID, disponibile împreună cu metadate și rezumate (și pentru aproximativ jumătate dintre ele este disponibil și textul integral).
Un exemplu complet de analiză a acestui set de date folosind serviciul cognitiv [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) este descris [în acest articol de blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Vom discuta o versiune simplificată a acestei analize.
Un exemplu complet de analiză a acestui set de date folosind serviciul cognitiv [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) este descris [în această postare pe blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Vom discuta o versiune simplificată a acestei analize.
> **NOTE**: Nu oferim o copie a setului de date ca parte a acestui depozit. Este posibil să fie nevoie să descărcați mai întâi fișierul [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) din [acest set de date de pe Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Este posibil să fie necesară înregistrarea pe Kaggle. De asemenea, puteți descărca setul de date fără înregistrare [de aici](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), dar acesta va include toate textele complete în plus față de fișierul de metadate.
> **ATENȚIE**: Nu oferim o copie a setului de date ca parte a acestui depozit. Întâi poate fi necesar să descărcați fișierul [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) din [acest set de date de pe Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Poate fi necesară înregistrarea la Kaggle. De asemenea, puteți descărca setul de date fără înregistrare [de aici](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), însă acesta va include toate textele integrale în plus față de fișierul cu metadatele.
Deschideți [`notebook-papers.ipynb`](notebook-papers.ipynb) și citiți-l de la început până la sfârșit. Puteți, de asemenea, să executați celulele și să rezolvați unele provocări pe care le-am lăsat pentru voi la final.
Deschideți [`notebook-papers.ipynb`](notebook-papers.ipynb) și citiți-l de la început până la sfârșit. Puteți de asemenea să executați celulele și să rezolvați provocările pe care le-am lăsat pentru voi la final.
![Covid Medical Treatment](../../../../translated_images/ro/covidtreat.b2ba59f57ca45fbc.webp)
## Procesarea Datelor din Imagini
## Procesarea Datelor de Imagine
Recent, au fost dezvoltate modele AI foarte puternice care ne permit să înțelegem imaginile. Există multe sarcini care pot fi rezolvate folosind rețele neuronale pre-antrenate sau servicii cloud. Câteva exemple includ:
Recent, au fost dezvoltate modele AI foarte puternice care ne permit să înțelegem imaginile. Există multe sarcini care pot fi rezolvate folosind rețele neurale preantrenate sau servicii cloud. Câteva exemple includ:
* **Clasificarea Imaginilor**, care vă poate ajuta să categorizați imaginea într-una dintre clasele predefinite. Puteți antrena cu ușurință propriile clasificatoare de imagini folosind servicii precum [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Detectarea Obiectelor** pentru a identifica diferite obiecte din imagine. Servicii precum [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) pot detecta un număr de obiecte comune, iar modelul [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) poate fi antrenat pentru a detecta obiecte specifice de interes.
* **Detectarea Fețelor**, inclusiv vârsta, genul și emoțiile. Acest lucru poate fi realizat prin [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Clasificarea Imaginilor**, care te poate ajuta să categorizezi imaginea într-una dintre clasele predefinite. Poți antrena cu ușurință propriile clasificatoare de imagini folosind servicii precum [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Detecția Obiectelor** pentru a detecta diferite obiecte în imagine. Servicii precum [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) pot detecta o serie de obiecte comune, iar tu poți antrena un model [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) pentru a detecta anumite obiecte specifice de interes.
* **Detecția Feței**, inclusiv detectarea vârstei, genului și emoției. Acest lucru se poate realiza prin [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Toate aceste servicii cloud pot fi apelate folosind [SDK-uri Python](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) și, astfel, pot fi ușor integrate în fluxul de explorare a datelor.
Toate aceste servicii cloud pot fi apelate folosind [SDK-uri Python](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), astfel că pot fi ușor integrate în fluxul tău de explorare a datelor.
Iată câteva exemple de explorare a datelor din surse de imagini:
* În articolul de blog [Cum să înveți Data Science fără programare](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) explorăm fotografiile de pe Instagram, încercând să înțelegem ce determină oamenii să aprecieze mai mult o fotografie. Mai întâi extragem cât mai multe informații din imagini folosind [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), apoi folosim [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) pentru a construi un model interpretabil.
* În [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) folosim [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) pentru a extrage emoțiile oamenilor din fotografii de la evenimente, încercând să înțelegem ce îi face fericiți.
Iată câteva exemple de explorare a datelor din surse de tip imagine:
* În postarea de blog [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) explorăm fotografii de pe Instagram, încercând să înțelegem ce face oamenii să dea mai multe like-uri unei fotografii. Mai întâi extragem cât mai multe informații din imagini folosind [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), apoi folosim [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) pentru a construi un model interpretabil.
* În [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) folosim [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) pentru a extrage emoțiile persoanelor din fotografiile de la evenimente, în încercarea de a înțelege ce îi face fericiți pe oameni.
## Concluzie
Indiferent dacă aveți deja date structurate sau nestructurate, folosind Python puteți realiza toate etapele legate de procesarea și înțelegerea datelor. Este probabil cea mai flexibilă modalitate de procesare a datelor, și acesta este motivul pentru care majoritatea data scientist-ilor folosesc Python ca instrument principal. Studierea Python în profunzime este probabil o idee bună dacă sunteți serios în privința călătoriei voastre în data science!
Indiferent dacă aveți deja date structurate sau nestructurate, folosind Python puteți realiza toate etapele legate de procesarea și înțelegerea datelor. Este probabil cea mai flexibilă modalitate de procesare a datelor, iar acesta este motivul pentru care majoritatea oamenilor de știință în date folosesc Python ca principală unealtă. Învățarea profundă a Python-ului este cu siguranță o idee bună dacă sunteți serioși în călătoria voastră în domeniul științei datelor!
## [Quiz post-lectură](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## [Test de evaluare post-lectură](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## Recapitulare & Studiu Individual
## Recapitulare & Auto-studiu
**Cărți**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**Resurse Online**
* Tutorialul oficial [10 minute pentru Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [Documentația despre Vizualizarea Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
* Tutorialul oficial [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [Documentația despre Vizualizarea în Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Învățarea Python**
* [Învață Python într-un mod distractiv cu Turtle Graphics și Fractals](https://github.com/shwars/pycourse)
* [ primii pași cu Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Learning Path pe [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Învață Python într-un mod distractiv cu Turtle Graphics și fractali](https://github.com/shwars/pycourse)
* [-ți primii pași în Python](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Parcurs de învățare pe [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Temă
[Realizați un studiu mai detaliat al datelor pentru provocările de mai sus](assignment.md)
[Realizează un studiu mai detaliat al datelor pentru provocările de mai sus](assignment.md)
## Credite
## Mulțumiri
Această lecție a fost scrisă cu ♥️ de [Dmitry Soshnikov](http://soshnikov.com)
Această lecție a fost creată cu ♥️ de [Dmitry Soshnikov](http://soshnikov.com)
---
**Declinarea responsabilității**:
Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). Deși depunem eforturi pentru a asigura acuratețea, vă rugăm să aveți în vedere că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa nativă ar trebui considerat sursa autoritară. Pentru informații critice, se recomandă traducerea profesională realizată de un specialist uman. Nu ne asumăm răspunderea pentru eventualele neînțelegeri sau interpretări greșite care pot apărea din utilizarea acestei traduceri.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Declinare a responsabilității**:
Acest document a fost tradus folosind serviciul de traducere AI [Co-op Translator](https://github.com/Azure/co-op-translator). În timp ce ne străduim pentru acuratețe, vă rugăm să rețineți că traducerile automate pot conține erori sau inexactități. Documentul original în limba sa nativă trebuie considerat sursa autorizată. Pentru informații critice, se recomandă traducerea profesională realizată de un om. Nu ne asumăm responsabilitatea pentru eventualele neînțelegeri sau interpretări greșite care decurg din utilizarea acestei traduceri.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->

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

@ -2,59 +2,61 @@
| ![ Sketchnote od [(@sketchthedocs)](https://sketchthedocs.dev) ](../../sketchnotes/07-WorkWithPython.png) |
| :-------------------------------------------------------------------------------------------------------: |
| Práca s Pythonom - _Sketchnote od [@nitya](https://twitter.com/nitya)_ |
| Práca s Python - _Sketchnote od [@nitya](https://twitter.com/nitya)_ |
[![Úvodné video](../../../../translated_images/sk/video-ds-python.245247dc811db8e4.webp)](https://youtu.be/dZjWOGbsN4Y)
Databázy ponúkajú veľmi efektívne spôsoby ukladania dát a ich dotazovania pomocou dotazovacích jazykov, no najflexibilnejším spôsobom spracovania dát je napísanie vlastného programu na manipuláciu s dátami. V mnohých prípadoch by bolo efektívnejšie použiť dotaz do databázy. Avšak v prípadoch, keď je potrebné zložitejšie spracovanie dát, to nie je možné jednoducho vykonať pomocou SQL.
Spracovanie dát je možné programovať v akomkoľvek programovacom jazyku, ale existujú určité jazyky, ktoré sú na prácu s dátami na vyššej úrovni. Dátoví vedci zvyčajne preferujú jeden z nasledujúcich jazykov:
Kým databázy ponúkajú veľmi efektívne spôsoby ukladania dát a ich dotazovania pomocou dotazovacích jazykov, najflexibilnejším spôsobom spracovania dát je napísanie vlastného programu na manipuláciu s dátami. V mnohých prípadoch by však bolo efektívnejšie použiť dotaz do databázy. Avšak v niektorých prípadoch, keď je potrebné zložitejšie spracovanie dát, to nie je jednoduché vykonať pomocou SQL.
Spracovanie dát možno naprogramovať v akomkoľvek programovacom jazyku, no existujú určité jazyky, ktoré sú z hľadiska práce s dátami na vyššej úrovni. Vedci pracujúci s dátami zvyčajne uprednostňujú jeden z nasledujúcich jazykov:
* **[Python](https://www.python.org/)**, univerzálny programovací jazyk, ktorý je často považovaný za jednu z najlepších možností pre začiatočníkov vďaka svojej jednoduchosti. Python má množstvo doplnkových knižníc, ktoré vám môžu pomôcť vyriešiť mnohé praktické problémy, ako napríklad extrakciu dát zo ZIP archívu alebo konverziu obrázku na odtiene šedej. Okrem dátovej vedy sa Python často používa aj na vývoj webových aplikácií.
* **[R](https://www.r-project.org/)** je tradičný nástroj vyvinutý s ohľadom na štatistické spracovanie dát. Obsahuje tiež veľké úložisko knižníc (CRAN), čo z neho robí dobrú voľbu na spracovanie dát. R však nie je univerzálny programovací jazyk a mimo oblasti dátovej vedy sa používa len zriedka.
* **[Julia](https://julialang.org/)** je ďalší jazyk vyvinutý špeciálne pre dátovú vedu. Je navrhnutý tak, aby poskytoval lepší výkon ako Python, čo z neho robí skvelý nástroj na vedecké experimentovanie.
* **[Python](https://www.python.org/)**, univerzálny programovací jazyk, ktorý je často považovaný za jednu z najlepších volieb pre začiatočníkov kvôli svojej jednoduchosti. Python má veľa ďalších knižníc, ktoré vám môžu pomôcť vyriešiť mnoho praktických problémov, ako napríklad extrahovanie dát zo ZIP archívu alebo konverziu obrázku na odtiene šedej. Okrem dátovej vedy sa Python často používa aj pre webový vývoj.
* **[R](https://www.r-project.org/)** je tradičný nástroj vyvinutý s ohľadom na štatistické spracovanie dát. Obsahuje aj veľké úložisko knižníc (CRAN), čo z neho robí dobrú voľbu pre spracovanie dát. R však nie je univerzálny programovací jazyk a mimo oblasti dátovej vedy sa zriedka používa.
* **[Julia](https://julialang.org/)** je ďalší jazyk vyvinutý špeciálne pre dátovú vedu. Je určený na dosiahnutie lepšieho výkonu ako Python, čo z neho robí skvelý nástroj pre vedecké experimentovanie.
V tejto lekcii sa zameriame na používanie Pythonu na jednoduché spracovanie dát. Predpokladáme základnú znalosť jazyka. Ak chcete hlbší úvod do Pythonu, môžete sa pozrieť na jeden z nasledujúcich zdrojov:
V tejto lekcii sa zameriame na použitie Pythonu pre jednoduché spracovanie dát. Predpokladáme základnú znalosť jazyka. Ak chcete detailnejšie štúdium Pythonu, môžete sa obrátiť na niektorý z nasledujúcich zdrojov:
* [Naučte sa Python zábavným spôsobom pomocou Turtle Graphics a fraktálov](https://github.com/shwars/pycourse) - rýchly úvodný kurz do programovania v Pythone na GitHube
* [Urobte svoje prvé kroky s Pythonom](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) - vzdelávacia cesta na [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Naučte sa Python hravou formou s Turtle grafikou a fraktálmi](https://github.com/shwars/pycourse) - Rýchly úvodný kurz do programovania v Pythone na GitHub-e
* [Urobte svoje prvé kroky s Pythonom](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)
Dáta môžu mať rôzne formy. V tejto lekcii sa budeme zaoberať tromi formami dát - **tabuľkovými dátami**, **textom** a **obrázkami**.
Dáta môžu mať rôzne formy. V tejto lekcii zvážime tri formy dát - **tabuľkové dáta**, **text** a **obrázky**.
Zameriame sa na niekoľko príkladov spracovania dát, namiesto toho, aby sme vám poskytli úplný prehľad všetkých súvisiacich knižníc. To vám umožní získať základnú predstavu o tom, čo je možné, a zanechá vám pochopenie, kde nájsť riešenia vašich problémov, keď ich budete potrebovať.
Zameriame sa na niekoľko príkladov spracovania dát namiesto poskytovania kompletného prehľadu všetkých súvisiacich knižníc. Toto vám umožní získať základnú predstavu o tom, čo je možné, a zároveň pochopiť, kde nájsť riešenia vašich problémov, keď ich budete potrebovať.
> **Najužitočnejšia rada**. Keď potrebujete vykonať určitú operáciu na dátach, o ktorej neviete, ako ju vykonať, skúste ju vyhľadať na internete. [Stackoverflow](https://stackoverflow.com/) zvyčajne obsahuje množstvo užitočných ukážok kódu v Pythone pre mnohé typické úlohy.
> **Najdôležitejšia rada**. Ak potrebujete vykonať nejakú operáciu s dátami, ktorú neviete, ako spraviť, skúste ju vyhľadať na internete. [Stackoverflow](https://stackoverflow.com/) zvyčajne obsahuje veľa užitočných príkladov kódu v Pythone pre mnohé typické úlohy.
## [Kvíz pred lekciou](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## [Prednáškový kvíz](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Tabuľkové dáta a Dataframes
S tabuľkovými dátami ste sa už stretli, keď sme hovorili o relačných databázach. Keď máte veľa dát, ktoré sú obsiahnuté v mnohých rôznych prepojených tabuľkách, určite má zmysel používať SQL na prácu s nimi. Existuje však mnoho prípadov, keď máme tabuľku dát a potrebujeme získať nejaké **pochopenie** alebo **poznatky** o týchto dátach, ako napríklad rozdelenie, korelácia medzi hodnotami atď. V dátovej vede existuje veľa prípadov, keď potrebujeme vykonať nejaké transformácie pôvodných dát, nasledované vizualizáciou. Obe tieto kroky je možné ľahko vykonať pomocou Pythonu.
Už ste sa stretli s tabuľkovými dátami, keď sme hovorili o relačných databázach. Ak máte veľa dát a tieto sú uložené v mnohých rôznych prepojených tabuľkách, určite dáva zmysel použiť SQL na ich spracovanie. Existuje však veľa prípadov, keď máme tabuľku s dátami a potrebujeme získať nejaké **pochopenie** alebo **prehľad** o týchto dátach, napríklad o rozložení, korelácii medzi hodnotami a pod. V dátovej vede je mnoho prípadov, keď potrebujeme vykonať nejaké transformácie pôvodných dát, nasledované vizualizáciou. Obe tieto kroky je možné ľahko vykonať pomocou Pythonu.
Existujú dve najužitočnejšie knižnice v Pythone, ktoré vám môžu pomôcť pracovať s tabuľkovými dátami:
* **[Pandas](https://pandas.pydata.org/)** umožňuje manipulovať s tzv. **Dataframes**, ktoré sú analogické relačným tabuľkám. Môžete mať pomenované stĺpce a vykonávať rôzne operácie na riadkoch, stĺpcoch a Dataframes všeobecne.
* **[Numpy](https://numpy.org/)** je knižnica na prácu s **tensormi**, t.j. viacrozmernými **poľami**. Pole má hodnoty rovnakého základného typu a je jednoduchšie ako Dataframe, ale ponúka viac matematických operácií a vytvára menšiu režijnú záťaž.
V Pythone existujú dve najpoužívanejšie knižnice, ktoré vám pomôžu pracovať s tabuľkovými dátami:
* **[Pandas](https://pandas.pydata.org/)** umožňuje manipulovať takzvanými **Dataframes**, ktoré sú analogické relačným tabuľkám. Môžete mať pomenované stĺpce a vykonávať rôzne operácie nad riadkami, stĺpcami a dataframe-ami všeobecne.
* **[Numpy](https://numpy.org/)** je knižnica na prácu s **tenzormi**, teda viacrozmernými **polami**. Pole obsahuje hodnoty rovnakého podkladového typu a je jednoduchšie ako dataframe, no ponúka viac matematických operácií a vytvára menší režijný náklad.
Existuje tiež niekoľko ďalších knižníc, o ktorých by ste mali vedieť:
Existuje tiež niekoľko ďalších knižníc, ktoré by ste mali poznať:
* **[Matplotlib](https://matplotlib.org/)** je knižnica používaná na vizualizáciu dát a kreslenie grafov
* **[SciPy](https://www.scipy.org/)** je knižnica s niektorými ďalšími vedeckými funkciami. Už sme sa s touto knižnicou stretli, keď sme hovorili o pravdepodobnosti a štatistike
* **[SciPy](https://www.scipy.org/)** je knižnica s niektorými ďalšími vedeckými funkciami. Už sme sa s ňou stretli pri rozprave o pravdepodobnosti a štatistike
Tu je kúsok kódu, ktorý by ste zvyčajne použili na import týchto knižníc na začiatku vášho programu v Pythone:
Tu je kúsok kódu, ktorý by ste typicky na začiatku svojho Python programu použili na import týchto knižníc:
```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 špecifikovať presné podbalíky, ktoré potrebujete
```
Pandas je založený na niekoľkých základných konceptoch.
### Series
### Series
**Series** je sekvencia hodnôt, podobná zoznamu alebo numpy poľu. Hlavný rozdiel je v tom, že Series má tiež **index**, a keď pracujeme so Series (napr. ich sčítavame), index sa berie do úvahy. Index môže byť taký jednoduchý ako číslo riadku (je to predvolený index pri vytváraní Series zo zoznamu alebo poľa), alebo môže mať zložitú štruktúru, ako napríklad časový interval.
**Series** je postupnosť hodnôt, podobná zoznamu alebo numpy poľu. Hlavný rozdiel je v tom, že séria má tiež **index** a pri operáciách na sériách (napríklad sčítanie) sa berie do úvahy index. Index môže byť jednoduchý ako celé číslo riadku (čo je štandardný index pri vytváraní série zo zoznamu alebo poľa), alebo môže mať zložitejšiu štruktúru, napríklad dátumový interval.
> **Poznámka**: V sprievodnom notebooku [`notebook.ipynb`](notebook.ipynb) je niekoľko úvodných ukážok kódu Pandas. Tu uvádzame len niektoré príklady, a určite si môžete pozrieť celý notebook.
> **Poznámka**: Úvodný kód pre Pandas je dostupný v priloženom notebooku [`notebook.ipynb`](notebook.ipynb). Tu iba načrtneme niektoré príklady, no určite si môžete pozrieť celý notebook.
Zvážte príklad: chceme analyzovať predaj nášho stánku so zmrzlinou. Vygenerujme sériu čísel predaja (počet predaných položiek každý deň) za určité časové obdobie:
Vezmime si príklad: chceme analyzovať predaje nášho stánku s nanukmi. Vygenerujme sériu predajných čísel (počet predaných kusov za každý deň) za isté časové obdobie:
```python
start_date = "Jan 1, 2020"
@ -66,45 +68,45 @@ items_sold.plot()
```
![Graf časovej série](../../../../translated_images/sk/timeseries-1.80de678ab1cf727e.webp)
Teraz predpokladajme, že každý týždeň organizujeme párty pre priateľov a berieme na párty ďalších 10 balení zmrzliny. Môžeme vytvoriť ďalšiu sériu, indexovanú podľa týždňov, aby sme to ukázali:
Predstavme si, že každý týždeň organizujeme párty pre priateľov a k tomu vezmeme ďalších 10 balíčkov nanukov. Môžeme vytvoriť inú sériu s indexom podľa týždňov, ktorá to ukáže:
```python
additional_items = pd.Series(10,index=pd.date_range(start_date,end_date,freq="W"))
```
Keď sčítame dve série, dostaneme celkový počet:
Keď sčítame dve série dokopy, dostaneme celkový počet:
```python
total_items = items_sold.add(additional_items,fill_value=0)
total_items.plot()
```
![Graf časovej série](../../../../translated_images/sk/timeseries-2.aae51d575c55181c.webp)
> **Poznámka**: Nepoužívame jednoduchú syntax `total_items+additional_items`. Ak by sme to urobili, dostali by sme veľa hodnôt `NaN` (*Not a Number*) v výslednej sérii. Je to preto, že pre niektoré indexové body v sérii `additional_items` chýbajú hodnoty, a sčítanie `NaN` s čímkoľvek vedie k `NaN`. Preto musíme počas sčítania špecifikovať parameter `fill_value`.
> **Poznámka**: Nevykonávame jednoduchú syntax `total_items+additional_items`. Ak by sme to spravili, výsledná séria by obsahovala veľa hodnôt `NaN` (*Nie číslo*). To je preto, že v sérii `additional_items` chýbajú hodnoty pre niektoré indexové body, a sčítanie s `NaN` vždy vedie k `NaN`. Preto je potrebné špecifikovať parameter `fill_value` počas sčítavania.
Pri časových sériách môžeme tiež **preukladať** sériu s rôznymi časovými intervalmi. Napríklad, ak chceme vypočítať priemerný objem predaja mesačne, môžeme použiť nasledujúci kód:
Pri časových radoch môžeme tiež **resamplovať** sériu s inými časovými intervalmi. Napríklad, keď chceme vypočítať priemerný objem predaja mesačne, môžeme použiť nasledujúci kód:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```
![Mesačné priemery časovej série](../../../../translated_images/sk/timeseries-3.f3147cbc8c624881.webp)
![Mesačné priemery časových radov](../../../../translated_images/sk/timeseries-3.f3147cbc8c624881.webp)
### DataFrame
DataFrame je v podstate kolekcia sérií s rovnakým indexom. Môžeme spojiť niekoľko sérií do jedného DataFrame:
DataFrame je v podstate kolekcia sérií so spoločným indexom. Môžeme spojiť niekoľko sérií 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])
```
Týmto vytvoríme horizontálnu tabuľku ako túto:
Toto vytvorí horizontálnu tabuľku takúto:
| | 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 tiež použiť Series ako stĺpce a špecifikovať názvy stĺpcov pomocou slovníka:
Môžeme tiež použiť séria ako stĺpce a pomenovať ich pomocou slovníka:
```python
df = pd.DataFrame({ 'A' : a, 'B' : b })
```
Týmto získame tabuľku ako túto:
Toto nám dá tabuľku takúto:
| | A | B |
| --- | --- | ------ |
@ -118,39 +120,39 @@ Týmto získame tabuľku ako túto:
| 7 | 8 | very |
| 8 | 9 | much |
**Poznámka**: Túto tabuľku môžeme získať aj transponovaním predchádzajúcej tabuľky, napr. napísaním
**Poznámka**: túto rozloženie tabuľky môžeme získať aj transpozíciou predchádzajúcej tabuľky, napríklad 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' })
```
Tu `.T` znamená operáciu transponovania DataFrame, t.j. zmenu riadkov a stĺpcov, a operácia `rename` nám umožňuje premenovať stĺpce tak, aby zodpovedali predchádzajúcemu príkladu.
Tu `.T` znamená operáciu transpozície DataFrame, teda výmenu riadkov a stĺpcov, a operácia `rename` nám umožňuje premenovať stĺpce, aby zodpovedali predchádzajúcemu príkladu.
Tu sú niektoré z najdôležitejších operácií, ktoré môžeme vykonávať na DataFrames:
Tu je niekoľko najdôležitejších operácií, ktoré môžeme na DataFrame vykonať:
**Výber stĺpcov**. Môžeme vybrať jednotlivé stĺpce napísaním `df['A']` - táto operácia vráti Series. Môžeme tiež vybrať podmnožinu stĺpcov do iného DataFrame napísaním `df[['B','A']]` - to vráti ďalší DataFrame.
**Výber stĺpcov**. Môžeme vybrať jednotlivé stĺpce zapísaním `df['A']` - táto operácia vráti Series. Tiež môžeme vybrať podmnožinu stĺpcov do iného DataFrame zapísaním `df[['B','A']]` - to vráti ďalší DataFrame.
**Filtrovanie** len určitých riadkov podľa kritérií. Napríklad, ak chceme ponechať len riadky so stĺpcom `A` väčším ako 5, môžeme napísať `df[df['A']>5]`.
**Filtrovanie** iba určitých riadkov podľa kritérií. Napríklad, aby sme vybrali len riadky so stĺpcom `A` väčším ako 5, môžeme zapísať `df[df['A']>5]`.
> **Poznámka**: Spôsob, akým filtrovanie funguje, je nasledujúci. Výraz `df['A']<5` vráti boolean sériu, ktorá indikuje, či je výraz `True` alebo `False` pre každý prvok pôvodnej série `df['A']`. Keď sa boolean séria použije ako index, vráti podmnožinu riadkov v DataFrame. Preto nie je možné použiť ľubovoľný Python boolean výraz, napríklad napísanie `df[df['A']>5 and df['A']<7]` by bolo nesprávne. Namiesto toho by ste mali použiť špeciálnu operáciu `&` na boolean sériu, napísaním `df[(df['A']>5) & (df['A']<7)]` (*zátvorky sú tu dôležité*).
> **Poznámka**: Filtrovanie prebieha takto. Výraz `df['A']<5` vracia boolovskú sériu, ktorá ukazuje, či je výraz pre každý prvok pôvodnej série `df['A']` pravdivý alebo nepravdivý. Keď sa boolovská séria použije ako index, vráti podmnožinu riadkov v DataFrame. Preto nie je možné použiť ľubovoľný boolovský výraz v Pythone, napríklad `df[df['A']>5 and df['A']<7]` by bolo nesprávne. Namiesto toho treba použiť špeciálnu operáciu `&` na boolovské série, teda `df[(df['A']>5) & (df['A']<7)]` (*zátvorky sú tu dôležité*).
**Vytváranie nových vypočítateľných stĺpcov**. Môžeme ľahko vytvoriť nové vypočítateľné stĺpce pre náš DataFrame použitím intuitívneho výrazu ako tento:
**Vytváranie nových vypočítateľných stĺpcov**. Jednoducho môžeme vytvárať nové stĺpce počítané pre náš DataFrame pomocou intuitívnych výrazov ako tento:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Tento príklad vypočíta odchýlku A od jeho priemernej hodnoty. Čo sa tu vlastne deje, je to, že počítame sériu a potom priraďujeme túto sériu na ľavú stranu, čím vytvárame ďalší stĺpec. Preto nemôžeme použiť žiadne operácie, ktoré nie sú kompatibilné so sériami, napríklad nasledujúci kód je nesprávny:
Tento príklad vypočíta odchýlku A od jej priemernej hodnoty. V skutočnosti tu počítame sériu a potom ju priradíme na ľavú stranu, čím vytvoríme ďalší stĺpec. Preto nemôžeme použiť žiadne operácie, ktoré nie sú kompatibilné so sériami, napríklad tento kód nižšie je nesprávny:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] < 5 else "Hi"
df['LenB'] = len(df['B']) # <- Wrong result
# Nesprávny kód -> df['ADescr'] = "Low" ak df['A'] < 5 inak "Hi"
df['LenB'] = len(df['B']) # <- Nesprávny výsledok
```
Posledný príklad, hoci je syntakticky správny, nám dáva nesprávny výsledok, pretože priraďuje dĺžku série `B` všetkým hodnotám v stĺpci, a nie dĺžku jednotlivých prvkov, ako sme zamýšľali.
Posledný príklad, hoci je syntakticky správny, dáva nesprávny výsledok, pretože priraďuje dĺžku série `B` ku všetkým hodnotám v stĺpci, a nie dĺžku jednotlivých prvkov, ako sme zamýšľali.
Ak potrebujeme vypočítať zložité výrazy ako tento, môžeme použiť funkciu `apply`. Posledný príklad môžeme napísať nasledovne:
Ak potrebujeme počítať zložité výrazy, môžeme použiť funkciu `apply`. Posledný príklad môžeme zapísať takto:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
# alebo
df['LenB'] = df['B'].apply(len)
```
Po vyššie uvedených operáciách skončíme s nasledujúcim DataFrame:
Po vykonaní týchto operácií skončíme s nasledujúcim DataFrame:
| | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- |
@ -164,22 +166,22 @@ Po vyššie uvedených operáciách skončíme s nasledujúcim DataFrame:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Výber riadkov podľa čísel** je možné vykonať pomocou konštruktu `iloc`. Napríklad, ak chceme vybrať prvých 5 riadkov z DataFrame:
**Výber riadkov podľa pozície** môžeme vykonať pomocou konštruktu `iloc`. Napríklad na výber prvých 5 riadkov z DataFrame:
```python
df.iloc[:5]
```
**Skupinovanie** sa často používa na získanie výsledku podobného *pivot tabuľkám* v Exceli. Predpokladajme, že chceme vypočítať priemernú hodnotu stĺpca `A` pre každé dané číslo `LenB`. Potom môžeme zoskupiť náš DataFrame podľa `LenB` a zavolať `mean`:
**Zoskupovanie** sa často používa na získanie výsledku podobného *kontingenčným tabuľkám* v Exceli. Predpokladajme, že chceme vypočítať priemernú hodnotu stĺpca `A` pre každú danú hodnotu `LenB`. V takom prípade môžeme DataFrame zoskupiť podľa `LenB` a zavolať `mean`:
```python
df.groupby(by='LenB')[['A','DivA']].mean()
```
Ak potrebujeme vypočítať priemer a počet prvkov v skupine, môžeme použiť zložitejšiu funkciu `aggregate`:
Ak potrebujeme vypočítať priemer aj počet prvkov v skupine, môžeme použiť zložitejšiu funkciu `aggregate`:
```python
df.groupby(by='LenB') \
.aggregate({ 'DivA' : len, 'A' : lambda x: x.mean() }) \
.rename(columns={ 'DivA' : 'Count', 'A' : 'Mean'})
```
Týmto získame nasledujúcu tabuľku:
Toto nám dá nasledujúcu tabuľku:
| LenB | Count | Mean |
| ---- | ----- | -------- |
@ -190,67 +192,70 @@ Týmto získame nasledujúcu tabuľku:
| 6 | 2 | 6.000000 |
### Získavanie dát
Videli sme, aké jednoduché je vytvoriť Series a DataFrames z objektov v Pythone. Dáta však zvyčajne prichádzajú vo forme textového súboru alebo Excel tabuľky. Našťastie, Pandas nám ponúka jednoduchý spôsob, ako načítať dáta z disku. Napríklad, čítanie CSV súboru je také jednoduché ako toto:
Videli sme, aké jednoduché je vytvoriť Series a DataFrames z Python objektov. Dáta však zvyčajne prichádzajú vo forme textového súboru alebo Excel tabuľky. Našťastie nám Pandas ponúka jednoduchý spôsob, ako načítať dáta z disku. Napríklad čítanie CSV súboru je také jednoduché ako toto:
```python
df = pd.read_csv('file.csv')
```
V sekcii "Výzva" uvidíme viac príkladov načítania dát, vrátane ich získavania z externých webových stránok.
Uvidíme viac príkladov načítania dát, vrátane ich získavania z externých web stránok, v sekcii "Výzva"
### Tlačenie a Vizualizácia
### Tlač a grafy
Dátový vedec často potrebuje preskúmať dáta, preto je dôležité vedieť ich vizualizovať. Keď je DataFrame veľký, často chceme len overiť, či robíme všetko správne, tým, že si vytlačíme prvých pár riadkov. To sa dá urobiť volaním `df.head()`. Ak to spustíte v Jupyter Notebooku, vytlačí sa DataFrame v peknej tabuľkovej forme.
Data Scientist často musí skúmať dáta, preto je dôležité ich vedieť vizualizovať. Keď je DataFrame veľký, často chceme len overiť, že všetko robíme správne, vytlačením prvých niekoľkých riadkov. To sa dá urobiť zavolaním `df.head()`. Ak to spúšťate v Jupyter Notebooku, vytlačí DataFrame v peknej tabuľkovej forme.
Videli sme tiež použitie funkcie `plot` na vizualizáciu niektorých stĺpcov. Zatiaľ čo `plot` je veľmi užitočný pre mnoho úloh a podporuje rôzne typy grafov cez parameter `kind=`, vždy môžete použiť knižnicu `matplotlib` na vytvorenie niečoho zložitejšieho. Vizualizáciu dát budeme podrobne pokrývať v samostatných lekciách kurzu.
Videli sme tiež použitie funkcie `plot` na vizualizáciu niektorých stĺpcov. Zatiaľ čo `plot` je veľmi užitočný pre mnoho úloh a podporuje mnoho rôznych typov grafov pomocou parametra `kind=`, vždy môžete použiť priamo knižnicu `matplotlib` na vykreslenie niečoho zložitejšieho. Podrobne budeme vizualizáciu dát pokrývať v samostatných lekciách kurzu.
Tento prehľad pokrýva najdôležitejšie koncepty Pandas, avšak knižnica je veľmi bohatá a neexistujú žiadne limity, čo s ňou môžete robiť! Teraz aplikujme tieto znalosti na riešenie konkrétneho problému.
Tento prehľad zahŕňa najdôležitejšie koncepty Pandas, avšak knižnica je veľmi bohatá a neexistuje žiadny limit tomu, čo s ňou môžete robiť! Teraz aplikujme tieto poznatky na riešenie konkrétneho problému.
## 🚀 Výzva 1: Analýza šírenia COVID
Prvým problémom, na ktorý sa zameriame, je modelovanie epidémie šírenia COVID-19. Na tento účel použijeme údaje o počte nakazených jednotlivcov v rôznych krajinách, ktoré 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ári](https://github.com/CSSEGISandData/COVID-19).
Prvým problémom, na ktorý sa zameriame, je modelovanie šírenia epidémie COVID-19. Na to použijeme dáta o počte nakazených v rôznych krajinách, ktoré 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ári](https://github.com/CSSEGISandData/COVID-19).
Keďže chceme demonštrovať, ako pracovať s dátami, pozývame vás otvoriť [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) a prečítať si ho od začiatku do konca. Môžete tiež spustiť bunky a splniť niektoré výzvy, ktoré sme pre vás nechali na konci.
Keďže chceme ukázať, ako pracovať s dátami, pozývame vás otvoriť [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) a prečítať ho od začiatku po koniec. Môžete tiež vykonávať bunky a riešiť niektoré výzvy, ktoré sme vám nechali na konci.
![COVID Spread](../../../../translated_images/sk/covidspread.f3d131c4f1d260ab.webp)
> Ak neviete, ako spustiť kód v Jupyter Notebooku, pozrite si [tento článok](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Práca s neštruktúrovanými dátami
## Práca s nestruktúrovanými dátami
Aj keď dáta často prichádzajú v tabuľkovej forme, v niektorých prípadoch musíme pracovať s menej štruktúrovanými dátami, napríklad textom alebo obrázkami. V takom prípade, aby sme mohli aplikovať techniky spracovania dát, ktoré sme videli vyššie, musíme nejako **extrahovať** štruktúrované dáta. Tu je niekoľko príkladov:
Hoci dáta veľmi často prichádzajú v tabuľkovej forme, v niektorých prípadoch musíme pracovať s menej štruktúrovanými dátami, napríklad textom alebo obrázkami. V takom prípade, aby sme mohli použiť techniky spracovania dát, ktoré sme videli vyššie, musíme nejako **extrahovať** štruktúrované dáta. Tu je niekoľko príkladov:
* Extrahovanie kľúčových slov z textu a sledovanie, ako často sa tieto kľúčové slová objavujú
* Použitie neurónových sietí na extrakciu informácií o objektoch na obrázku
* Získavanie informácií o emóciách ľudí na videozázname
* Extrahovanie kľúčových slov z textu a zisťovanie, ako často sa tieto kľúčové slová vyskytujú
* Použitie neurónových sietí na extrahovanie informácií o objektoch na obrázku
* Získavanie informácií o emóciách ľudí na videu z kamery
## 🚀 Výzva 2: Analýza COVID publikácií
## 🚀 Výzva 2: Analýza COVID článkov
V tejto výzve budeme pokračovať v téme pandémie COVID a zameriame sa na spracovanie vedeckých publikácií na túto tému. Existuje [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) s viac ako 7000 (v čase písania) publikáciami o COVID, dostupný s metadátami a abstraktmi (a pre približne polovicu z nich je k dispozícii aj celý text).
V tejto výzve budeme pokračovať v téme pandémie COVID a zameriame sa na spracovanie vedeckých článkov o tomto predmete. Existuje [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) s viac ako 7000 (v čase písania) článkami o COVID, dostupnými s metadátami a abstraktmi (a pre približne polovicu z nich je k dispozícii aj celý text).
Kompletný príklad analýzy tohto datasetu pomocou [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ívnej služby je popísaný [v tomto blogovom príspevku](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Diskutujeme zjednodušenú verziu tejto analýzy.
Kompletný príklad analýzy tohto datasetu pomocou kognitívnej 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 opísaný [v tomto blogovom príspevku](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Prediskutujeme zjednodušenú verziu tejto analýzy.
> **NOTE**: Nekopírujeme dataset ako súčasť tohto repozitára. Možno budete musieť najskôr stiahnuť súbor [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) z [tohto datasetu na Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Registrácia na Kaggle môže byť potrebná. Dataset môžete tiež stiahnuť bez registrácie [odtiaľto](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), ale bude obsahovať všetky plné texty okrem súboru metadát.
> **NOTE**: Nekopírujeme dataset ako súčasť tohto repozitára. Najprv možno budete musieť stiahnuť súbor [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) z [tohto datasetu na Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Môže byť potrebná registrácia na Kaggle. Dataset si môžete stiahnuť aj bez registrácie [tu](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), ale bude obsahovať všetky plné texty okrem metadát.
Otvorte [`notebook-papers.ipynb`](notebook-papers.ipynb) a prečítajte si ho od začiatku do konca. Môžete tiež spustiť bunky a splniť niektoré výzvy, ktoré sme pre vás nechali na konci.
Otvorte [`notebook-papers.ipynb`](notebook-papers.ipynb) a prečítajte ho od začiatku po koniec. Môžete tiež spúšťať bunky a riešiť výzvy, ktoré sme vám nechali na konci.
![Covid Medical Treatment](../../../../translated_images/sk/covidtreat.b2ba59f57ca45fbc.webp)
## Spracovanie obrazových dát
V poslednej dobe boli vyvinuté veľmi silné AI modely, ktoré nám umožňujú porozumieť obrázkom. Existuje mnoho úloh, ktoré je možné vyriešiť pomocou predtrénovaných neurónových sietí alebo cloudových služieb. Niektoré príklady zahŕňajú:
Nedávno boli vyvinuté veľmi výkonné AI modely, ktoré nám umožňujú rozumieť obrázkom. Existuje mnoho úloh, ktoré je možné vyriešiť pomocou predtrénovaných neurónových sietí alebo cloudových služieb. Niekoľko príkladov:
* **Klasifikácia obrázkov**, ktorá vám môže pomôcť kategorizovať obrázok do jednej z preddefinovaných tried. Služby ako [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) vám umožňujú ľahko trénovať vlastné klasifikátory obrázkov.
* **Detekcia objektov** na identifikáciu rôznych objektov na obrázku. Služby ako [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) dokážu detekovať množstvo bežných objektov, a môžete trénovať model [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) na detekciu špecifických objektov.
* **Detekcia tvárí**, vrátane veku, pohlavia a emócií. To je možné pomocou [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Klasifikácia obrázkov**, ktorá vám pomôže kategorizovať obrázok do jednej z preddefinovaných tried. Môžete si ľahko vytrénovať vlastné klasifikátory obrázkov pomocou služieb ako [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Detekcia objektov** na rozpoznanie rôznych objektov na obrázku. Služby ako [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) dokážu detegovať množstvo bežných objektov a môžete vytrénovať model [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) na detekciu niektorých konkrétnych objektov.
* **Detekcia tváre**, vrátane rozpoznávania veku, pohlavia a emócií. Toto sa dá zrealizovať cez [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Všetky tieto cloudové služby je možné volať pomocou [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 teda ich ľahko začleniť do vášho pracovného toku pri skúmaní dát.
Všetky tieto cloudové služby je možné volať pomocou [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 teda ich ľahko integrovať do vášho workflow prieskumu dát.
Tu sú niektoré príklady skúmania dát z obrazových zdrojov:
* V blogovom príspevku [Ako sa naučiť dátovú vedu bez programovania](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) skúmame fotografie z Instagramu, snažiac sa pochopiť, čo spôsobuje, že ľudia dávajú viac "lajkov" na fotografiu. Najskôr extrahujeme čo najviac informácií z obrázkov pomocou [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), a potom použijeme [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) na vytvorenie interpretovateľného modelu.
* V [Workshopu o štúdiu tvárí](https://github.com/CloudAdvocacy/FaceStudies) používame [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) na extrakciu emócií ľudí na fotografiách z udalostí, aby sme sa pokúsili pochopiť, čo robí ľudí šťastnými.
Tu je niekoľko príkladov skúmania dát z obrazových zdrojov:
* V blogovom príspevku [How to Learn Data Science without Coding](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) skúmame fotografie z Instagramu, snažiac sa pochopiť, čo spôsobuje, že ľudia dávajú fotografie viac lajkov. Najskôr extrahujeme čo najviac informácií z obrázkov pomocou [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), a potom použijeme [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) na vybudovanie interpretovateľného modelu.
* V [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) používame [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) na extrahovanie emócií ľudí na fotografiách z rôznych podujatí, aby sme sa pokúsili pochopiť, čo robí ľudí šťastnými.
## Záver
Či už máte štruktúrované alebo neštruktúrované dáta, pomocou Pythonu môžete vykonávať všetky kroky súvisiace so spracovaním a porozumením dát. Je to pravdepodobne najflexibilnejší spôsob spracovania dát, a to je dôvod, prečo väčšina dátových vedcov používa Python ako svoj primárny nástroj. Naučiť sa Python do hĺbky je pravdepodobne dobrý nápad, ak to myslíte vážne s vašou cestou v dátovej vede!
Či už máte štruktúrované alebo nestruktúrované dáta, pomocou Pythonu môžete vykonávať všetky kroky súvisiace so spracovaním a pochopením dát. Je to pravdepodobne najflexibilnejší spôsob spracovania dát, a preto väčšina dátových vedcov používa Python ako svoj primárny nástroj. Hlbšie učenie Pythonu je určite dobrý nápad, ak to so svojou dátovou vedeckou cestou myslíte vážne!
## [Kvíz po prednáške](https://ff-quizzes.netlify.app/en/ds/quiz/13)
@ -260,22 +265,24 @@ Tu sú niektoré príklady skúmania dát z obrazových zdrojov:
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**Online zdroje**
* Oficiálny [10 minútový Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) tutoriál
* [Dokumentácia o Pandas vizualizácii](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
* Oficiálny [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html) tutoriál
* [Dokumentácia ku vizualizácii v Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Učenie Pythonu**
* [Naučte sa Python zábavným spôsobom s Turtle Graphics a Fraktálmi](https://github.com/shwars/pycourse)
* [Urobte svoje prvé kroky s Pythonom](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)
**Učenie sa Pythonu**
* [Naučte sa Python zábavnou formou cez Turtle Graphics a Fraktály](https://github.com/shwars/pycourse)
* [Urobte prvé kroky s Python](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)
## Zadanie
[Urobte podrobnejšiu štúdiu dát pre vyššie uvedené výzvy](assignment.md)
[Vykonajte detailnejšiu štúdiu dát pre vyššie uvedené výzvy](assignment.md)
## Kredity
## Zdroje
Táto lekcia bola vytvorená s ♥️ od [Dmitry Soshnikov](http://soshnikov.com)
Túto lekciu pripravil s ♥️ [Dmitry Soshnikov](http://soshnikov.com)
---
**Upozornenie**:
Tento dokument bol preložený pomocou služby na automatický preklad [Co-op Translator](https://github.com/Azure/co-op-translator). Aj keď sa snažíme o presnosť, upozorňujeme, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho pôvodnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre dôležité informácie sa odporúča profesionálny ľudský preklad. Nezodpovedáme za akékoľvek nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Vyhlásenie o zodpovednosti**:
Tento dokument bol preložený pomocou AI prekladateľskej služby [Co-op Translator](https://github.com/Azure/co-op-translator). Hoci sa snažíme o presnosť, vezmite prosím na vedomie, že automatické preklady môžu obsahovať chyby alebo nepresnosti. Pôvodný dokument v jeho natívnom jazyku by mal byť považovaný za autoritatívny zdroj. Pre kritické informácie sa odporúča profesionálny ľudský preklad. Nie sme zodpovední za žiadne nedorozumenia alebo nesprávne interpretácie vyplývajúce z použitia tohto prekladu.
<!-- CO-OP TRANSLATOR DISCLAIMER END -->
Loading…
Cancel
Save