Sebbene i database offrano modi molto efficienti per memorizzare i dati e interrogarli utilizzando linguaggi di query, il modo più flessibile per elaborare i dati è scrivere un proprio programma per manipolarli. In molti casi, eseguire una query su un database sarebbe un metodo più efficace. Tuttavia, in alcuni casi in cui è necessaria un'elaborazione dei dati più complessa, non è facilmente realizzabile utilizzando SQL.
L'elaborazione dei dati può essere programmata in qualsiasi linguaggio di programmazione, ma ci sono alcuni linguaggi che sono più adatti per lavorare con i dati. Gli scienziati dei dati di solito preferiscono uno dei seguenti linguaggi:
Mentre i database offrono modi molto efficienti per memorizzare i dati e interrogarli usando linguaggi di query, il modo più flessibile di elaborare i dati è scrivere il proprio programma per manipolare i dati. In molti casi, effettuare una query su un database sarebbe un modo più efficace. Tuttavia, in alcuni casi, quando è necessaria un’elaborazione dei dati più complessa, non può essere fatta facilmente con SQL.
L’elaborazione dei dati può essere programmata in qualsiasi linguaggio di programmazione, ma ci sono alcuni linguaggi che sono di livello più alto rispetto al lavoro con i dati. Gli scienziati dei dati tipicamente preferiscono uno dei seguenti linguaggi:
* **[Python](https://www.python.org/)**, un linguaggio di programmazione generico, spesso considerato una delle migliori opzioni per i principianti grazie alla sua semplicità. Python dispone di molte librerie aggiuntive che possono aiutarti a risolvere numerosi problemi pratici, come estrarre dati da un archivio ZIP o convertire un'immagine in scala di grigi. Oltre alla scienza dei dati, Python è spesso utilizzato anche per lo sviluppo web.
* **[R](https://www.r-project.org/)** è uno strumento tradizionale sviluppato con l'elaborazione statistica dei dati in mente. Contiene anche un ampio repository di librerie (CRAN), rendendolo una buona scelta per l'elaborazione dei dati. Tuttavia, R non è un linguaggio di programmazione generico ed è raramente utilizzato al di fuori del dominio della scienza dei dati.
* **[Julia](https://julialang.org/)** è un altro linguaggio sviluppato specificamente per la scienza dei dati. È progettato per offrire prestazioni migliori rispetto a Python, rendendolo uno strumento eccellente per esperimenti scientifici.
* **[Python](https://www.python.org/)**, un linguaggio di programmazione general-purpose, spesso considerato una delle migliori opzioni per i principianti grazie alla sua semplicità. Python ha molte librerie aggiuntive che possono aiutarti a risolvere molti problemi pratici, come estrarre i tuoi dati da archivi ZIP o convertire immagini in scala di grigi. Oltre alla data science, Python è spesso usato anche per lo sviluppo web.
* **[R](https://www.r-project.org/)** è uno strumento tradizionale sviluppato con il pensiero all’elaborazione statistica dei dati. Contiene anche un grande repository di librerie (CRAN), rendendolo una buona scelta per l’elaborazione dei dati. Tuttavia, R non è un linguaggio di programmazione general-purpose, ed è raramente usato al di fuori del dominio della data science.
* **[Julia](https://julialang.org/)** è un altro linguaggio sviluppato specificamente per la data science. È pensato per offrire prestazioni migliori rispetto a Python, rendendolo uno strumento eccellente per esperimenti scientifici.
In questa lezione, ci concentreremo sull'utilizzo di Python per semplici elaborazioni dei dati. Daremo per scontata una conoscenza di base del linguaggio. Se desideri un'introduzione più approfondita a Python, puoi fare riferimento a una delle seguenti risorse:
In questa lezione, ci concentreremo sull’uso di Python per semplici elaborazioni di dati. Presumiamo una conoscenza di base del linguaggio. Se vuoi un tour più approfondito di Python, puoi fare riferimento a una delle seguenti risorse:
* [Impara Python in modo divertente con Turtle Graphics e Frattali](https://github.com/shwars/pycourse) - Corso introduttivo rapido su GitHub per la programmazione in Python
* [Muovi i tuoi primi passi con Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) - Percorso di apprendimento su [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Impara Python in modo divertente con Turtle Graphics e Frattali](https://github.com/shwars/pycourse) - Corso rapido introduttivo su GitHub alla programmazione Python
* [Fai i tuoi primi passi con Python](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Percorso di apprendimento su [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
I dati possono presentarsi in molte forme. In questa lezione, considereremo tre forme di dati: **dati tabellari**, **testo** e **immagini**.
I dati possono presentarsi in molte forme. In questa lezione considereremo tre forme di dati - **dati tabellari**, **testo** e **immagini**.
Ci concentreremo su alcuni esempi di elaborazione dati, invece di fornire una panoramica completa di tutte le librerie correlate. Questo ti permetterà di capire l’idea principale di ciò che è possibile, e ti lascerà con la comprensione di dove trovare soluzioni ai tuoi problemi quando ne avrai bisogno.
> **Consiglio più utile**. Quando devi eseguire una certa operazione sui dati che non sai come fare, prova a cercarla su internet. [Stackoverflow](https://stackoverflow.com/) solitamente contiene molti esempi di codice utile in Python per molti compiti tipici.
Ci concentreremo su alcuni esempi di elaborazione dei dati, invece di fornire una panoramica completa di tutte le librerie correlate. Questo ti permetterà di comprendere le possibilità principali e di sapere dove trovare soluzioni ai tuoi problemi quando ne avrai bisogno.
> **Il consiglio più utile**. Quando hai bisogno di eseguire un'operazione sui dati che non sai come fare, prova a cercarla su internet. [Stackoverflow](https://stackoverflow.com/) contiene spesso molti esempi di codice utili in Python per numerosi compiti tipici.
Hai già incontrato i dati tabellari quando abbiamo parlato di database relazionali. Quando hai molti dati contenuti in diverse tabelle collegate, ha sicuramente senso utilizzare SQL per lavorarci. Tuttavia, ci sono molti casi in cui abbiamo una tabella di dati e dobbiamo ottenere una **comprensione** o **intuizioni** su questi dati, come la distribuzione, la correlazione tra i valori, ecc. Nella scienza dei dati, ci sono molti casi in cui dobbiamo eseguire alcune trasformazioni sui dati originali, seguite da una visualizzazione. Entrambi questi passaggi possono essere facilmente eseguiti utilizzando Python.
Hai già incontrato dati tabellari quando abbiamo parlato di database relazionali. Quando hai molti dati, contenuti in molte tabelle diverse collegate, ha sicuramente senso usare SQL per lavorarci. Tuttavia, ci sono molti casi in cui abbiamo una tabella di dati e abbiamo bisogno di ottenere qualche **comprensione** o **intuizione** su questi dati, come la distribuzione, la correlazione tra valori, ecc. In data science, ci sono molti casi in cui dobbiamo effettuare alcune trasformazioni dei dati originali, seguiti da visualizzazioni. Entrambi questi passaggi possono essere facilmente fatti usando Python.
Ci sono due librerie più utili in Python che possono aiutarti a gestire i dati tabellari:
* **[Pandas](https://pandas.pydata.org/)** ti consente di manipolare i cosiddetti **Dataframe**, che sono analoghi alle tabelle relazionali. Puoi avere colonne con nomi e eseguire diverse operazioni su righe, colonne e dataframe in generale.
* **[Numpy](https://numpy.org/)** è una libreria per lavorare con **tensori**, ovvero **array** multidimensionali. Gli array contengono valori dello stesso tipo sottostante, sono più semplici dei dataframe, ma offrono più operazioni matematiche e creano meno sovraccarico.
Ci sono due librerie molto utili in Python che possono aiutarti a gestire i dati tabellari:
* **[Pandas](https://pandas.pydata.org/)** ti permette di manipolare i cosiddetti **DataFrame**, che sono analoghi alle tabelle relazionali. Puoi avere colonne nominate e eseguire diverse operazioni su righe, colonne e dataframe in generale.
* **[Numpy](https://numpy.org/)** è una libreria per lavorare con **tensori**, cioè **array** multidimensionali. L’array contiene valori dello stesso tipo sottostante, ed è più semplice del dataframe, ma offre più operazioni matematiche e crea meno overhead.
Ci sono anche un paio di altre librerie che dovresti conoscere:
* **[Matplotlib](https://matplotlib.org/)** è una libreria utilizzata per la visualizzazione dei dati e la creazione di grafici
* **[SciPy](https://www.scipy.org/)** è una libreria con alcune funzioni scientifiche aggiuntive. Abbiamo già incontrato questa libreria parlando di probabilità e statistiche.
Ci sono anche un paio di altre librerie di cui dovresti sapere:
* **[Matplotlib](https://matplotlib.org/)** è una libreria usata per la visualizzazione dei dati e la creazione di grafici
* **[SciPy](https://www.scipy.org/)** è una libreria con alcune funzioni scientifiche aggiuntive. Ci siamo già imbattuti in questa libreria parlando di probabilità e statistica
Ecco un pezzo di codice che useresti tipicamente per importare queste librerie all'inizio del tuo programma Python:
Ecco un pezzo di codice che tipicamente useresti per importare queste librerie all’inizio del tuo programma 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 ... # è necessario specificare i sottopacchetti esatti di cui hai bisogno
```
Pandas si basa su alcuni concetti fondamentali.
Pandas è incentrato su pochi concetti base.
### Serie
**Serie** è una sequenza di valori, simile a una lista o un array numpy. La differenza principale è che le serie hanno anche un **indice**, e quando operiamo sulle serie (ad esempio, sommandole), l'indice viene preso in considerazione. L'indice può essere semplice come un numero intero che rappresenta il numero di riga (è l'indice utilizzato per impostazione predefinita quando si crea una serie da una lista o un array), oppure può avere una struttura complessa, come un intervallo di date.
**Series** è una sequenza di valori, simile a una lista o a un array numpy. La differenza principale è che le series hanno anche un **indice** e quando operiamo sulle series (ad esempio, aggiungendole), l’indice viene preso in considerazione. L’indice può essere semplice come il numero intero di riga (è l’indice usato di default quando si crea una serie da una lista o array), oppure può avere una struttura complessa, come un intervallo di date.
> **Nota**: Nel notebook allegato [`notebook.ipynb`](notebook.ipynb) è presente del codice introduttivo su Pandas. Qui riportiamo solo alcuni esempi, ma sei sicuramente invitato a consultare il notebook completo.
> **Nota**: C’è un codice introduttivo di Pandas nel notebook allegato [`notebook.ipynb`](notebook.ipynb). Qui accenniamo solo alcuni esempi e sei sicuramente invitato a consultare il notebook completo.
Considera un esempio: vogliamo analizzare le vendite del nostro chiosco di gelati. Generiamo una serie di numeri di vendita (numero di articoli venduti ogni giorno) per un certo periodo di tempo:
Considera un esempio: vogliamo analizzare le vendite del nostro negozio di gelati. Generiamo una serie di numeri di vendite (numero di articoli venduti ogni giorno) per un certo periodo di tempo:
```python
start_date = "Jan 1, 2020"
@ -64,46 +66,46 @@ print(f"Length of index is {len(idx)}")


Ora supponiamo che ogni settimana organizziamo una festa per gli amici e prendiamo 10 confezioni di gelato in più per la festa. Possiamo creare un'altra serie, indicizzata per settimana, per dimostrarlo:
Ora supponiamo che ogni settimana organizziamo una festa per amici, e portiamo 10 confezioni extra di gelati per la festa. Possiamo creare un’altra serie, indicizzata per settimana, per dimostrarlo:

```

> **Nota** che non stiamo usando la sintassi semplice `total_items+additional_items`. Se lo facessimo, otterremmo molti valori `NaN` (*Not a Number*) nella serie risultante. Questo perché ci sono valori mancanti per alcuni punti dell'indice nella serie `additional_items`, e sommare `NaN` a qualsiasi cosa risulta in `NaN`. Pertanto, dobbiamo specificare il parametro `fill_value` durante l'addizione.
> **Nota** che non stiamo usando la sintassi semplice `total_items+additional_items`. Se lo facessimo, otterremmo molti valori `NaN` (*Not a Number*) nella serie risultante. Questo accade perché mancano valori per alcuni punti di indice nella serie `additional_items`, e aggiungere `NaN` a qualsiasi cosa dà come risultato `NaN`. Perciò dobbiamo specificare il parametro `fill_value` durante l’addizione.
Con le serie temporali, possiamo anche **ricampionare** la serie con intervalli di tempo diversi. Ad esempio, supponiamo di voler calcolare il volume medio di vendite mensile. Possiamo usare il seguente codice:
Con le serie temporali possiamo anche **riesaminare** la serie con intervalli di tempo diversi. Per esempio, supponiamo di voler calcolare il volume medio di vendite mensilmente. Possiamo usare il seguente codice:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
```

```

### DataFrame
Un DataFrame è essenzialmente una raccolta di serie con lo stesso indice. Possiamo combinare diverse serie insieme in un DataFrame:
Un DataFrame è essenzialmente una collezione di series con lo stesso indice. Possiamo combinare varie series in un unico 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])
```
Questo creerà una tabella orizzontale come questa:
```
Questo creerà una tabella orizzontale come questa:
Qui `.T`indica l'operazione di trasposizione del DataFrame, ovvero il cambio di righe e colonne, e l'operazione `rename` ci consente di rinominare le colonne per corrispondere all'esempio precedente.
Qui `.T`significa l’operazione di trasposizione del DataFrame, cioè scambiare righe e colonne, e l’operazione `rename` ci permette di rinominare le colonne per corrispondere all’esempio precedente.
Ecco alcune delle operazioni più importanti che possiamo eseguire sui DataFrame:
Ecco alcune tra le operazioni più importanti che possiamo eseguire sui DataFrame:
**Selezione delle colonne**. Possiamo selezionare colonne individuali scrivendo `df['A']` - questa operazione restituisce una Serie. Possiamo anche selezionare un sottoinsieme di colonne in un altro DataFrame scrivendo `df[['B','A']]` - questo restituisce un altro DataFrame.
**Selezione di colonne**. Possiamo selezionare singole colonne scrivendo `df['A']` - questa operazione restituisce una Series. Possiamo anche selezionare un sottoinsieme di colonne in un altro DataFrame scrivendo `df[['B','A']]` - questo restituisce un altro DataFrame.
**Filtraggio** di determinate righe in base a criteri. Ad esempio, per mantenere solo le righe con la colonna `A` maggiore di 5, possiamo scrivere `df[df['A']>5]`.
**Filtrare** solo certe righe in base a criteri. Per esempio, per lasciare solo le righe con colonna `A` maggiore di 5, possiamo scrivere `df[df['A']>5]`.
> **Nota**: Il modo in cui funziona il filtraggio è il seguente. L'espressione `df['A']<5` restituisce una serie booleana, che indica se l'espressione è `True` o `False` per ciascun elemento della serie originale `df['A']`. Quando una serie booleana viene utilizzata come indice, restituisce un sottoinsieme di righe nel DataFrame. Pertanto, non è possibile utilizzare un'espressione booleana Python arbitraria, ad esempio, scrivere `df[df['A']>5 and df['A']<7]` sarebbe sbagliato. Invece, dovresti usare l'operatore speciale `&` sulle serie booleane, scrivendo `df[(df['A']>5) & (df['A']<7)]` (*le parentesi sono importanti qui*).
> **Nota**: Il modo in cui funziona il filtraggio è il seguente. L’espressione `df['A']<5` restituisce una series booleana, che indica se l’espressione è `True` o `False` per ogni elemento della series originale `df['A']`. Quando la series booleana è usata come indice, restituisce un sottoinsieme di righe nel DataFrame. Perciò non è possibile usare arbitrarie espressioni booleane Python, ad esempio scrivere `df[df['A']>5 and df['A']<7]` sarebbe sbagliato. Invece, dovresti usare l’operazione speciale `&` sulle series booleane, scrivendo `df[(df['A']>5) & (df['A']<7)]` (*le parentesi sono importanti qui*).
**Creazione di nuove colonne calcolabili**. Possiamo facilmente creare nuove colonne calcolabili per il nostro DataFrame utilizzando un'espressione intuitiva come questa:
**Creare nuove colonne calcolabili**. Possiamo facilmente creare nuove colonne calcolabili per il nostro DataFrame usando espressioni intuitive come questa:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Questo esempio calcola la divergenza di A dal suo valore medio. Quello che succede realmente qui è che stiamo calcolando una serie e poi assegnando questa serie al lato sinistro, creando un'altra colonna. Pertanto, non possiamo usare operazioni non compatibili con le serie, ad esempio, il codice seguente è sbagliato:
```
Questo esempio calcola la divergenza di A dal suo valore medio. Ciò che succede effettivamente è che stiamo calcolando una series, e poi assegnando questa series a sinistra, creando un’altra colonna. Perciò non possiamo usare operazioni incompatibili con le series, per esempio, il codice qui sotto è sbagliato:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] <5else"Hi"
df['LenB'] = len(df['B']) # <-Wrong result
```
L'ultimo esempio, pur essendo sintatticamente corretto, ci dà un risultato sbagliato, perché assegna la lunghezza della serie `B` a tutti i valori nella colonna, e non la lunghezza degli elementi individuali come intendevamo.
# Codice errato -> df['ADescr'] = "Low" se df['A'] <5altrimenti"Hi"
df['LenB'] = len(df['B']) # <-Risultato errato
```
Questo ultimo esempio, pur essendo sintatticamente corretto, dà un risultato sbagliato, perché assegna la lunghezza della series`B` a tutti i valori nella colonna, e non la lunghezza degli elementi individuali come volevamo.
Se dobbiamo calcolare espressioni complesse come questa, possiamo usare la funzione `apply`. L'ultimo esempio può essere scritto come segue:
Se dobbiamo calcolare espressioni complesse come questa, possiamo usare la funzione `apply`. L’ultimo esempio può essere scritto come segue:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
# o
df['LenB'] = df['B'].apply(len)
```
@ -164,24 +166,24 @@ Dopo le operazioni sopra, otterremo il seguente DataFrame:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Selezione delle righe in base ai numeri** può essere fatta usando la struttura `iloc`. Ad esempio, per selezionare le prime 5 righe del DataFrame:
**Selezionare righe in base ai numeri** può essere fatto usando la struttura `iloc`. Per esempio, per selezionare le prime 5 righe del DataFrame:
```python
df.iloc[:5]
```
**Raggruppamento** è spesso utilizzato per ottenere un risultato simile alle *tabelle pivot* in Excel. Supponiamo di voler calcolare il valore medio della colonna `A` per ciascun numero dato di `LenB`. Possiamo quindi raggruppare il nostro DataFrame per `LenB` e chiamare `mean`:
**Raggruppare** è spesso usato per ottenere un risultato simile alle *pivot table* in Excel. Supponiamo di voler calcolare il valore medio della colonna `A` per ogni valore dato di `LenB`. Allora possiamo raggruppare il nostro DataFrame per `LenB` e chiamare `mean`:
```python
df.groupby(by='LenB')[['A','DivA']].mean()
```
Se dobbiamo calcolare la media e il numero di elementi nel gruppo, possiamo usare la funzione `aggregate` più complessa:
```
Se abbiamo bisogno di calcolare la media e il numero di elementi nel gruppo, possiamo usare una funzione più complessa `aggregate`:
@ -190,78 +192,81 @@ Questo ci dà la seguente tabella:
| 6 | 2 | 6.000000 |
### Ottenere Dati
Abbiamo visto quanto sia facile costruire Series e DataFrames a partire da oggetti Python. Tuttavia, i dati solitamente si presentano sotto forma di file di testo o di tabella Excel. Fortunatamente, Pandas ci offre un modo semplice per caricare i dati dal disco. Ad esempio, leggere un file CSV è semplice come questo:
Abbiamo visto quanto sia facile costruire Series e DataFrame a partire da oggetti Python. Tuttavia, i dati di solito arrivano sotto forma di file di testo o tabelle Excel. Fortunatamente, Pandas ci offre un modo semplice per caricare i dati dal disco. Per esempio, leggere un file CSV è semplice come questo:
```python
df = pd.read_csv('file.csv')
```
Vedremo più esempi di caricamento dei dati, inclusa la possibilità di recuperarli da siti web esterni, nella sezione "Sfida".
Vedremo altri esempi di caricamento di dati, inclusi quelli presi da siti web esterni, nella sezione "Challenge"
### Stampa e Visualizzazione
### Stampa e Grafici
Un Data Scientist spesso deve esplorare i dati, quindi è importante essere in grado di visualizzarli. Quando un DataFrame è grande, molte volte vogliamo solo assicurarci di fare tutto correttamente stampando le prime righe. Questo può essere fatto chiamando `df.head()`. Se lo esegui da Jupyter Notebook, stamperà il DataFrame in una forma tabellare ben organizzata.
Un Data Scientist deve spesso esplorare i dati, quindi è importante poterli visualizzare. Quando il DataFrame è grande, molte volte vogliamo solo assicurarci di fare tutto correttamente stampando le prime righe. Questo si può fare chiamando `df.head()`. Se lo esegui da Jupyter Notebook, il DataFrame verrà stampato in una bella forma tabellare.
Abbiamo anche visto l'uso della funzione `plot` per visualizzare alcune colonne. Sebbene `plot` sia molto utile per molti compiti e supporti diversi tipi di grafici tramite il parametro `kind=`, puoi sempre utilizzare la libreria `matplotlib` per creare qualcosa di più complesso. Tratteremo la visualizzazione dei dati in dettaglio in lezioni separate del corso.
Abbiamo anche visto l’uso della funzione `plot` per visualizzare alcune colonne. Mentre `plot` è molto utile per molti compiti e supporta diversi tipi di grafici tramite il parametro `kind=`, puoi sempre usare la libreria `matplotlib` grezza per tracciare qualcosa di più complesso. Tratteremo la visualizzazione dei dati in dettaglio in lezioni di corso separate.
Questa panoramica copre i concetti più importanti di Pandas, tuttavia, la libreria è molto ricca e non ci sono limiti a ciò che puoi fare con essa! Applichiamo ora questa conoscenza per risolvere un problema specifico.
Questa panoramica copre i concetti più importanti di Pandas, tuttavia la libreria è molto ricca e non c’è limite a ciò che puoi fare con essa! Applichiamo ora queste conoscenze per risolvere un problema specifico.
## 🚀 Sfida 1: Analizzare la Diffusione del COVID
## 🚀 Challenge 1: Analisi della diffusione del COVID
Il primo problema su cui ci concentreremo è la modellazione della diffusione epidemica del COVID-19. Per farlo, utilizzeremo i dati sul numero di individui infetti in diversi paesi, forniti dal [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) presso la [Johns Hopkins University](https://jhu.edu/). Il dataset è disponibile in [questo repository GitHub](https://github.com/CSSEGISandData/COVID-19).
Il primo problema su cui ci concentreremo è la modellazione della diffusione epidemica del COVID-19. Per farlo, useremo i dati sul numero di individui infetti in diversi paesi, forniti dal [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) della [Johns Hopkins University](https://jhu.edu/). Il dataset è disponibile in [questo repository GitHub](https://github.com/CSSEGISandData/COVID-19).
Poiché vogliamo dimostrare come gestire i dati, ti invitiamo ad aprire [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) e leggerlo dall'inizio alla fine. Puoi anche eseguire le celle e affrontare alcune sfide che abbiamo lasciato per te alla fine.
Poiché vogliamo mostrare come gestire i dati, ti invitiamo ad aprire [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) e leggerlo dall'inizio alla fine. Puoi anche eseguire le celle e provare le sfide che abbiamo lasciato alla fine.

> Se non sai come eseguire il codice in Jupyter Notebook, dai un'occhiata a [questo articolo](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
> Se non sai come eseguire codice in Jupyter Notebook, dai un'occhiata a [questo articolo](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Lavorare con Dati Non Strutturati
## Lavorare con dati non strutturati
Sebbene i dati spesso si presentino in forma tabellare, in alcuni casi dobbiamo gestire dati meno strutturati, ad esempio testo o immagini. In questo caso, per applicare le tecniche di elaborazione dei dati che abbiamo visto sopra, dobbiamo in qualche modo **estrarre** dati strutturati. Ecco alcuni esempi:
Sebbene i dati molto spesso arrivino in forma tabellare, in alcuni casi dobbiamo gestire dati meno strutturati, per esempio testo o immagini. In questo caso, per applicare le tecniche di elaborazione dati viste sopra, dobbiamo in qualche modo **estrarre** dati strutturati. Ecco alcuni esempi:
* Estrarre parole chiave da un testo e vedere con quale frequenza compaiono
* Utilizzare reti neurali per estrarre informazioni sugli oggetti presenti in un'immagine
* Ottenere informazioni sulle emozioni delle persone da un feed video di una telecamera
* Estrarre parole chiave dal testo e vedere quanto spesso compaiono
* Usare reti neurali per estrarre informazioni su oggetti presenti nella foto
* Ottenere informazioni sulle emozioni delle persone dai video
## 🚀 Sfida 2: Analizzare Articoli sul COVID
## 🚀 Challenge 2: Analisi dei documenti COVID
In questa sfida, continueremo con il tema della pandemia di COVID, concentrandoci sull'elaborazione di articoli scientifici sull'argomento. Esiste il [Dataset CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) con più di 7000 (al momento della scrittura) articoli sul COVID, disponibile con metadati e abstract (e per circa metà di essi è fornito anche il testo completo).
In questa sfida continueremo con il tema della pandemia COVID, e ci concentreremo sull'elaborazione di articoli scientifici sull’argomento. Esiste il [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) con più di 7000 (al momento della scrittura) articoli su COVID, disponibile con metadati e abstract (e per circa metà è fornito anche il testo completo).
Un esempio completo di analisi di questo dataset utilizzando il servizio cognitivo [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) è descritto [in questo post sul blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Discuteremo una versione semplificata di questa analisi.
Un esempio completo di analisi di questo dataset usando il servizio cognitivo [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) è descritto [in questo post del blog](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Discuteremo una versione semplificata di questa analisi.
> **NOTE**: Non forniamo una copia del dataset come parte di questo repository. Potresti prima dover scaricare il file [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) da [questo dataset su Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Potrebbe essere necessaria la registrazione su Kaggle. Puoi anche scaricare il dataset senza registrazione [da qui](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), ma includerà tutti i testi completi oltre al file dei metadati.
> **NOTA**: Non forniamo una copia del dataset come parte di questo repository. Potresti dover prima scaricare il file [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) da [questo dataset su Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Potrebbe essere necessaria la registrazione a Kaggle. Puoi anche scaricare il dataset senza registrazione [da qui](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), ma includerà tutti i testi completi oltre al file dei metadati.
Apri [`notebook-papers.ipynb`](notebook-papers.ipynb) e leggilo dall'inizio alla fine. Puoi anche eseguire le celle e affrontare alcune sfide che abbiamo lasciato per te alla fine.
Apri [`notebook-papers.ipynb`](notebook-papers.ipynb) e leggilo dall'inizio alla fine. Puoi anche eseguire le celle e provare le sfide che abbiamo lasciato alla fine.
Recentemente, sono stati sviluppati modelli di intelligenza artificiale molto potenti che ci permettono di comprendere le immagini. Ci sono molti compiti che possono essere risolti utilizzando reti neurali pre-addestrate o servizi cloud. Alcuni esempi includono:
Recentemente sono stati sviluppati modelli AI molto potenti che ci permettono di comprendere le immagini. Ci sono molti compiti che possono essere risolti usando reti neurali pre-addestrate o servizi cloud. Alcuni esempi includono:
* **Classificazione delle Immagini**, che può aiutarti a categorizzare un'immagine in una delle classi predefinite. Puoi facilmente addestrare i tuoi classificatori di immagini utilizzando servizi come [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Rilevamento degli Oggetti** per rilevare diversi oggetti nell'immagine. Servizi come [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) possono rilevare un numero di oggetti comuni, e puoi addestrare un modello [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) per rilevare alcuni oggetti specifici di interesse.
* **Rilevamento del Volto**, inclusa l'età, il genere e la rilevazione delle emozioni. Questo può essere fatto tramite [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Classificazione delle immagini**, che può aiutarti a categorizzare un’immagine in una delle classi predefinite. Puoi facilmente addestrare i tuoi classificatori di immagini usando servizi come [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Rilevamento oggetti** per individuare diversi oggetti nell’immagine. Servizi come [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) possono rilevare un certo numero di oggetti comuni, e puoi addestrare un modello [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) per rilevare alcuni specifici oggetti di interesse.
* **Rilevamento volti**, incluso rilevamento di età, sesso ed emozioni. Questo può essere fatto tramite [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Tutti questi servizi cloud possono essere chiamati utilizzando [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), e quindi possono essere facilmente incorporati nel tuo flusso di lavoro di esplorazione dei dati.
Tutti questi servizi cloud possono essere chiamati usando gli [SDK Python](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), e quindi possono essere facilmente integrati nel tuo flusso di lavoro di esplorazione dati.
Ecco alcuni esempi di esplorazione dei dati da fonti di dati immagine:
* Nel post sul blog [Come Imparare Data Science senza Codice](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) esploriamo le foto di Instagram, cercando di capire cosa spinge le persone a mettere più "mi piace" a una foto. Prima estraiamo quante più informazioni possibili dalle immagini utilizzando [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), e poi utilizziamo [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) per costruire un modello interpretabile.
* Nel [Workshop Studi Facciali](https://github.com/CloudAdvocacy/FaceStudies) utilizziamo [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) per estrarre emozioni dalle persone presenti nelle fotografie di eventi, al fine di cercare di capire cosa rende felici le persone.
Ecco alcuni esempi di esplorazione dati da fonti di dati immagine:
* Nel post del blog [Come imparare Data Science senza programmare](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) esploriamo foto di Instagram, cercando di capire cosa fa sì che le persone diano più “mi piace” a una foto. Prima estraiamo quante più informazioni possibile dalle immagini usando [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), e poi usiamo [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) per costruire un modello interpretabile.
* Nel [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) usiamo [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) per estrarre le emozioni delle persone nelle fotografie di eventi, per cercare di capire cosa rende felici le persone.
## Conclusione
Che tu abbia già dati strutturati o non strutturati, utilizzando Python puoi eseguire tutti i passaggi relativi all'elaborazione e alla comprensione dei dati. È probabilmente il modo più flessibile per elaborare i dati, ed è per questo che la maggior parte dei data scientist utilizza Python come strumento principale. Imparare Python in profondità è probabilmente una buona idea se sei serio riguardo al tuo percorso nella data science!
Che tu abbia dati strutturati o non strutturati, usando Python puoi eseguire tutti i passaggi relativi all'elaborazione e alla comprensione dei dati. Probabilmente è il modo più flessibile di processare dati, ed è per questo che la maggior parte dei data scientist usa Python come strumento primario. Imparare Python a fondo è probabilmente una buona idea se sei serio nel tuo percorso in data science!
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**Risorse Online**
* Tutorial ufficiale [10 minuti con Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [Documentazione sulla Visualizzazione con Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Risorse online**
* Tutorial ufficiale [10 minuti per Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [Documentazione su Pandas Visualization](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Imparare Python**
* [Impara Python in modo divertente con Turtle Graphics e Frattali](https://github.com/shwars/pycourse)
@ -269,7 +274,7 @@ Che tu abbia già dati strutturati o non strutturati, utilizzando Python puoi es
## Compito
[Effettua uno studio più dettagliato sui dati per le sfide sopra](assignment.md)
[Esegui uno studio dati più dettagliato per le sfide sopra](assignment.md)
## Crediti
@ -277,5 +282,7 @@ Questa lezione è stata scritta con ♥️ da [Dmitry Soshnikov](http://soshniko
---
**Disclaimer**:
Questo documento è stato tradotto utilizzando il servizio di traduzione automatica [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire l'accuratezza, si prega di notare che le traduzioni automatiche potrebbero contenere errori o imprecisioni. Il documento originale nella sua lingua nativa dovrebbe essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale eseguita da un traduttore umano. Non siamo responsabili per eventuali fraintendimenti o interpretazioni errate derivanti dall'uso di questa traduzione.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Disclaimer**:
Questo documento è stato tradotto utilizzando il servizio di traduzione AI [Co-op Translator](https://github.com/Azure/co-op-translator). Sebbene ci impegniamo per garantire la precisione, si prega di notare che le traduzioni automatizzate possono contenere errori o imprecisioni. Il documento originale nella sua lingua nativa deve essere considerato la fonte autorevole. Per informazioni critiche, si raccomanda una traduzione professionale effettuata da un essere umano. Non siamo responsabili per eventuali malintesi o interpretazioni errate derivanti dall’uso di questa traduzione.
Bazy danych oferują bardzo efektywne sposoby przechowywania danych i ich przeszukiwania za pomocą języków zapytań, ale najbardziej elastycznym sposobem przetwarzania danych jest napisanie własnego programu do ich manipulacji. W wielu przypadkach zapytanie do bazy danych byłoby bardziej efektywne. Jednak w sytuacjach, gdy potrzebne jest bardziej złożone przetwarzanie danych, nie zawsze można to łatwo zrobić za pomocą SQL.
Przetwarzanie danych można zaprogramować w dowolnym języku programowania, ale istnieją języki, które są bardziej zaawansowane w pracy z danymi. Naukowcy zajmujący się danymi zazwyczaj preferują jeden z następujących języków:
Podczas gdy bazy danych oferują bardzo efektywne sposoby przechowywania danych i ich zapytań za pomocą języków zapytań, najbardziej elastycznym sposobem przetwarzania danych jest napisanie własnego programu do manipulacji danymi. W wielu przypadkach wykonanie zapytania do bazy danych jest bardziej efektywne. Jednak w pewnych sytuacjach, gdy potrzebne jest bardziej złożone przetwarzanie danych, nie można tego łatwo zrobić za pomocą SQL.
Przetwarzanie danych można programować w dowolnym języku programowania, ale istnieją pewne języki, które są wyższego poziomu pod względem pracy z danymi. Naukowcy zajmujący się danymi zazwyczaj preferują jeden z następujących języków:
* **[Python](https://www.python.org/)**, uniwersalny język programowania, który często jest uważany za jeden z najlepszych wyborów dla początkujących ze względu na swoją prostotę. Python posiada wiele dodatkowych bibliotek, które mogą pomóc w rozwiązywaniu praktycznych problemów, takich jak wyodrębnianie danych z archiwum ZIP czy konwersja obrazu na odcienie szarości. Oprócz nauki o danych, Python jest również często używany do tworzenia aplikacji webowych.
* **[R](https://www.r-project.org/)** to tradycyjne narzędzie stworzone z myślą o statystycznym przetwarzaniu danych. Zawiera również dużą bazę bibliotek (CRAN), co czyni go dobrym wyborem do pracy z danymi. Jednak R nie jest językiem uniwersalnym i rzadko jest używany poza dziedziną nauki o danych.
* **[Julia](https://julialang.org/)** to kolejny język stworzony specjalnie dla nauki o danych. Został zaprojektowany z myślą o lepszej wydajności niż Python, co czyni go świetnym narzędziem do eksperymentów naukowych.
* **[Python](https://www.python.org/)**, ogólnego przeznaczenia język programowania, który często uważany jest za jedną z najlepszych opcji dla początkujących ze względu na swoją prostotę. Python posiada wiele dodatkowych bibliotek, które mogą pomóc rozwiązać wiele praktycznych problemów, takich jak wyciąganie danych z archiwum ZIP czy konwersja obrazu na skalę szarości. Oprócz data science, Python jest często używany do tworzenia stron internetowych.
* **[R](https://www.r-project.org/)** to tradycyjne narzędzie stworzone z myślą o statystycznym przetwarzaniu danych. Zawiera także ogromne repozytorium bibliotek (CRAN), co czyni go dobrym wyborem do przetwarzania danych. Jednak R nie jest językiem ogólnego przeznaczenia i rzadko bywa używany poza dziedziną data science.
* **[Julia](https://julialang.org/)** to kolejny język opracowany specjalnie dla nauki o danych. Ma oferować lepszą wydajność niż Python, co czyni go świetnym narzędziem do eksperymentów naukowych.
W tej lekcji skupimy się na używaniu Pythona do prostego przetwarzania danych. Zakładamy podstawową znajomość tego języka. Jeśli chcesz zgłębić Pythona, możesz skorzystać z jednego z poniższych zasobów:
W tej lekcji skupimy się na używaniu Pythona do prostego przetwarzania danych. Zakładamy podstawową znajomość języka. Jeśli chcesz głębsze wprowadzenie do Pythona, możesz sięgnąć po jedną z poniższych zasobów:
* [Nauka Pythona w zabawny sposób z grafiką Turtle i fraktalami](https://github.com/shwars/pycourse) - szybki kurs wprowadzający do programowania w Pythonie na GitHubie
* [Ucz się Pythona w zabawny sposób z grafiką Turtle i fraktalami](https://github.com/shwars/pycourse) – szybki kurs wprowadzający do programowania w Pythonie na GitHubie
* [Zrób swoje pierwsze kroki z Pythonem](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Ścieżka nauki na [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
Dane mogą przyjmować różne formy. W tej lekcji rozważymy trzy formy danych - **dane tabelaryczne**, **tekst** i **obrazy**.
Dane mogą przybierać wiele form. W tej lekcji rozważymy trzy formy danych –**dane tabelaryczne**, **tekst** oraz **obrazy**.
Skupimy się na kilku przykładach przetwarzania danych, zamiast przedstawiać pełny przegląd wszystkich bibliotek powiązanych z tym tematem. Pozwoli to zrozumieć główną ideę i da Ci świadomość, gdzie szukać rozwiązań na swoje problemy, gdy zajdzie taka potrzeba.
> **Najbardziej przydatna rada**. Kiedy potrzebujesz wykonać określoną operację na danych, której nie znasz, spróbuj jej poszukać w internecie. [Stackoverflow](https://stackoverflow.com/) zazwyczaj zawiera wiele przydatnych przykładów kodu w Pythonie dla typowych zadań.
Skupimy się na kilku przykładach przetwarzania danych, zamiast przedstawiać pełny przegląd wszystkich powiązanych bibliotek. Pozwoli to zrozumieć główne możliwości i pozostawi wiedzę, gdzie szukać rozwiązań problemów, gdy zajdzie taka potrzeba.
> **Najbardziej przydatna rada**. Gdy musisz wykonać określoną operację na danych, której nie wiesz, jak zrobić, spróbuj poszukać jej w internecie. [Stackoverflow](https://stackoverflow.com/) zazwyczaj zawiera wiele przydatnych przykładów kodu w Pythonie dla wielu typowych zadań.
## [Quiz przed wykładem](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Dane tabelaryczne i DataFrame'y
Spotkałeś się już z danymi tabelarycznymi, gdy mówiliśmy o relacyjnych bazach danych. Gdy masz dużo danych, które są przechowywane w wielu różnych powiązanych tabelach, zdecydowanie warto używać SQL do pracy z nimi. Jednak istnieje wiele przypadków, gdy mamy tabelę danych i chcemy uzyskać pewne **zrozumienie** lub **wnioski** na temat tych danych, takie jak rozkład, korelacja między wartościami itp. W nauce o danych często musimy przeprowadzić pewne transformacje oryginalnych danych, a następnie ich wizualizację. Oba te kroki można łatwo wykonać za pomocą Pythona.
Już zetknąłeś się z danymi tabelarycznymi, rozmawiając o relacyjnych bazach danych. Gdy masz dużo danych i są one zawarte w wielu powiązanych tabelach, zdecydowanie warto użyć SQL do ich przetwarzania. Jednak istnieje wiele przypadków, gdy mamy tabelę danych i potrzebujemy uzyskać pewne **zrozumienie** lub **wgląd** w te dane, takie jak rozkład, korelacje między wartościami itd. W nauce o danych często zachodzi potrzeba wykonania transformacji oryginalnych danych, a następnie ich wizualizacji. Oba te kroki można z łatwością wykonać przy użyciu Pythona.
Istnieją dwie najbardziej przydatne biblioteki w Pythonie, które mogą pomóc w pracy z danymi tabelarycznymi:
* **[Pandas](https://pandas.pydata.org/)** pozwala manipulować tak zwanymi **DataFrame'ami**, które są analogiczne do tabel relacyjnych. Możesz mieć nazwane kolumny i wykonywać różne operacje na wierszach, kolumnach i całych DataFrame'ach.
* **[Numpy](https://numpy.org/)** to biblioteka do pracy z **tensorami**, czyli wielowymiarowymi **tablicami**. Tablica ma wartości tego samego typu bazowego i jest prostsza niż DataFrame, ale oferuje więcej operacji matematycznych i generuje mniejsze obciążenie.
W Pythonie istnieją dwie najważniejsze biblioteki, które pomogą Ci obsługiwać dane tabelaryczne:
* **[Pandas](https://pandas.pydata.org/)** pozwala na manipulację tak zwanymi **DataFrame'ami**, które są analogiczne do tabel relacyjnych. Możesz mieć nazwane kolumny i wykonać różne operacje na wierszach, kolumnach oraz na DataFrame'ach w ogóle.
* **[Numpy](https://numpy.org/)** to biblioteka do pracy z **tensorami**, tzn. wielowymiarowymi **tablicami** danych. Tablica ma wartości tego samego typu i jest prostsza niż DataFrame, ale oferuje więcej operacji matematycznych oraz stwarza mniejsze obciążenie.
Istnieje również kilka innych bibliotek, które warto znać:
* **[Matplotlib](https://matplotlib.org/)** to biblioteka używana do wizualizacji danych i tworzenia wykresów
* **[SciPy](https://www.scipy.org/)** to biblioteka z dodatkowymi funkcjami naukowymi. Już spotkaliśmy się z tą biblioteką, gdy mówiliśmy o prawdopodobieństwie i statystyce
Są też inne biblioteki, które warto znać:
* **[Matplotlib](https://matplotlib.org/)** to biblioteka używana do wizualizacji danych i rysowania wykresów
* **[SciPy](https://www.scipy.org/)** to biblioteka z dodatkowymi funkcjami naukowymi. Już mieliśmy z nią do czynienia, rozmawiając o prawdopodobieństwie i statystyce
Oto fragment kodu, który zazwyczaj używa się do importowania tych bibliotek na początku programu w Pythonie:
Oto przykładowy fragment kodu, którego zwykle używasz, aby zaimportować te biblioteki na początku programu w Pythonie:
```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 ... # musisz określić dokładne podpakiety, których potrzebujesz
```
Pandas opiera się na kilku podstawowych koncepcjach.
Pandas opiera się na kilku podstawowych pojęciach.
### Series
### Series
**Series** to sekwencja wartości, podobna do listy lub tablicy numpy. Główna różnica polega na tym, że Series ma również **indeks**, a gdy operujemy na Series (np. dodajemy je), indeks jest brany pod uwagę. Indeks może być tak prosty jak liczba całkowita reprezentująca numer wiersza (jest to domyślny indeks używany podczas tworzenia Series z listy lub tablicy), lub może mieć bardziej złożoną strukturę, taką jak przedział dat.
**Series** to sekwencja wartości, podobna do listy lub tablicy numpy. Główna różnica polega na tym, że Series posiada także **indeks** i podczas wykonywania operacji na seriach (np. dodawania) indeks jest brany pod uwagę. Indeks może być tak prosty jak liczba całkowita reprezentująca numer wiersza (jest to domyślny indeks przy tworzeniu Series z listy lub tablicy) lub mieć bardziej złożoną strukturę, na przykład przedział datowy.
> **Uwaga**: W towarzyszącym notebooku [`notebook.ipynb`](notebook.ipynb) znajduje się wprowadzenie do kodu Pandas. Tutaj przedstawiamy tylko niektóre przykłady, ale zdecydowanie zachęcamy do zapoznania się z pełnym notebookiem.
> **Uwaga**: W notebooku towarzyszącym [`notebook.ipynb`](notebook.ipynb) znajduje się wprowadzający kod dotyczący Pandas. Tutaj przedstawiamy tylko niektóre przykłady, ale zachęcamy do zapoznania się z całym notebookiem.
Rozważmy przykład: chcemy przeanalizować sprzedaż w naszym punkcie z lodami. Wygenerujmy serię liczb sprzedaży (liczba sprzedanych produktów każdego dnia) dla pewnego okresu czasu:
Rozważmy przykład: chcemy analizować sprzedaż naszego punktu z lodami. Wygenerujmy serię liczb sprzedaży (liczby sprzedanych sztuk każdego dnia) na pewien okres czasu:
Załóżmy teraz, że co tydzień organizujemy imprezę dla znajomych i zabieramy dodatkowe 10 opakowań lodów na imprezę. Możemy stworzyć kolejną serię, indeksowaną tygodniami, aby to pokazać:
Załóżmy, że co tydzień organizujemy imprezę dla przyjaciół i zabieramy dodatkowe 10 opakowań lodów. Możemy utworzyć inną serię indeksowaną według tygodnia, by to zobrazować:
> **Uwaga**: Nie używamy prostego zapisu `total_items+additional_items`. Gdybyśmy to zrobili, otrzymalibyśmy wiele wartości `NaN` (*Not a Number*) w wynikowej serii. Dzieje się tak, ponieważ brakuje wartości dla niektórych punktów indeksu w serii `additional_items`, a dodanie `NaN` do czegokolwiek skutkuje `NaN`. Dlatego musimy określić parametr `fill_value` podczas dodawania.
> **Uwaga**: Nie używamy prostego zapisu `total_items+additional_items`. Gdybyśmy to zrobili, w wynikowej serii pojawiłoby się dużo wartości `NaN` (*Not a Number*). Dzieje się tak, ponieważ w serii `additional_items` brakuje wartości dla niektórych punktów indeksu, a dodawanie `NaN` do czegokolwiek daje `NaN`. Dlatego podczas dodawania musimy określić parametr `fill_value`.
W przypadku szeregów czasowych możemy również **próbkować** serię z różnymi przedziałami czasowymi. Na przykład, jeśli chcemy obliczyć średnią wielkość sprzedaży miesięcznie, możemy użyć następującego kodu:
W przypadku szeregów czasowych możemy także **próbkować ponownie** dane z różnymi interwałami czasowymi. Na przykład, jeśli chcemy obliczyć średnią sprzedaż miesięczną, możemy użyć następującego kodu:
Tutaj `.T` oznacza operację transponowania DataFrame, czyli zamianę wierszy i kolumn, a operacja `rename` pozwala nam zmienić nazwy kolumn, aby pasowały do poprzedniego przykładu.
Tutaj `.T` oznacza operację transpozycji DataFrame, czyli zamianę wierszy z kolumnami, a `rename` pozwala nam zmienić nazwy kolumn, aby pasowały do poprzedniego przykładu.
Oto kilka najważniejszych operacji, które możemy wykonać na DataFrame'ach:
Oto kilka najważniejszych operacji, które możemy wykonywać na DataFrame'ach:
**Wybór kolumn**. Możemy wybrać pojedyncze kolumny, pisząc `df['A']` - ta operacja zwraca Series. Możemy również wybrać podzbiór kolumn do innego DataFrame, pisząc `df[['B','A']]` - to zwraca kolejny DataFrame.
**Wybranie kolumny**. Możemy wybrać pojedynczą kolumnę, pisząc `df['A']` — ta operacja zwraca Series. Możemy też wybrać podzbiór kolumn tworząc nowy DataFrame, pisząc `df[['B','A']]` — to zwraca nowy DataFrame.
**Filtrowanie** tylko określonych wierszy według kryteriów. Na przykład, aby pozostawić tylko wiersze, w których kolumna `A` jest większa niż 5, możemy napisać `df[df['A']>5]`.
**Filtrowanie** wierszy według kryteriów. Na przykład, aby pozostawić tylko wiersze, gdzie kolumna `A` jest większa niż 5, można napisać `df[df['A']>5]`.
> **Uwaga**: Sposób działania filtrowania jest następujący. Wyrażenie `df['A']<5` zwraca serię logiczną, która wskazuje, czy wyrażenie jest `True` czy `False` dla każdego elementu oryginalnej serii `df['A']`. Gdy seria logiczna jest używana jako indeks, zwraca podzbiór wierszy w DataFrame. Dlatego nie można używać dowolnych wyrażeń logicznych w Pythonie, na przykład pisanie `df[df['A']>5 and df['A']<7]` byłoby błędne. Zamiast tego należy użyć specjalnej operacji `&` na seriach logicznych, pisząc `df[(df['A']>5) & (df['A']<7)]` (*nawiasy są tutaj ważne*).
> **Uwaga**: Filtrowanie działa w ten sposób, że wyrażenie `df['A']<5` zwraca serię wartości logicznych (`True` albo `False`) dla każdego elementu oryginalnej serii `df['A']`. Gdy taka seria logiczna jest używana jako indeks, zwraca podzbiór wierszy DataFrame'a. Dlatego nie można pisać dowolnego wyrażenia logicznego Pythona, np. `df[df['A']>5 and df['A']<7]` jest błędne. Zamiast tego należy użyć specjalnej operacji `&` dla serii logicznych, pisząc `df[(df['A']>5) & (df['A']<7)]` (*nawiasy są tu istotne*).
**Tworzenie nowych obliczalnych kolumn**. Możemy łatwo tworzyć nowe obliczalne kolumny dla naszego DataFrame, używając intuicyjnych wyrażeń, takich jak to:
**Tworzenie nowych kolumn obliczeniowych**. Możemy łatwo tworzyć nowe kolumny oparte na obliczeniach w naszym DataFrame, używając intuicyjnych wyrażeń jak to:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Ten przykład oblicza odchylenie A od jego wartości średniej. Co faktycznie się dzieje, to obliczamy serię, a następnie przypisujemy tę serię do lewej strony, tworząc kolejną kolumnę. Dlatego nie możemy używać żadnych operacji, które nie są kompatybilne z seriami, na przykład poniższy kod jest błędny:
Ten przykład oblicza odchylenie wartości A od jej średniej. Właściwie to tworzymy serię, którą następnie przypisujemy z lewej strony, tworząc kolejną kolumnę. Nie możemy więc używać operacji niekompatybilnych z seriami, na przykład poniższy kod jest błędny:
# Niepoprawny kod -> df['ADescr'] = "Low" jeśli df['A'] <5wprzeciwnymrazie "Hi"
df['LenB'] = len(df['B']) # <-Niepoprawny wynik
```
Ostatni przykład, choć syntaktycznie poprawny, daje nam błędny wynik, ponieważ przypisuje długość serii `B` do wszystkich wartości w kolumnie, a nie długość poszczególnych elementów, jak zamierzaliśmy.
Ten przykład, mimo że jest składniowo poprawny, daje zły wynik, ponieważ przypisuje długość serii `B` do wszystkich wartości w kolumnie, a nie długość poszczególnych elementów, jak zamierzaliśmy.
Jeśli musimy obliczyć złożone wyrażenia, możemy użyć funkcji `apply`. Ostatni przykład można zapisać w następujący sposób:
Jeśli potrzebujemy obliczyć złożone wyrażenia, możemy użyć funkcji `apply`. Ostatni przykład można napisać tak:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
# lub
df['LenB'] = df['B'].apply(len)
```
Po powyższych operacjach otrzymamy następujący DataFrame:
Po tych operacjach otrzymamy następujący DataFrame:
| | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- |
@ -164,22 +166,22 @@ Po powyższych operacjach otrzymamy następujący DataFrame:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Wybór wierszy na podstawie numerów** można wykonać za pomocą konstrukcji`iloc`. Na przykład, aby wybrać pierwsze 5 wierszy z DataFrame:
**Wybór wierszy na podstawie indeksów** możemy wykonać przy pomocy`iloc`. Na przykład, aby wybrać pierwsze 5 wierszy z DataFrame:
```python
df.iloc[:5]
```
**Grupowanie** jest często używane do uzyskania wyniku podobnego do *tabel przestawnych* w Excelu. Załóżmy, że chcemy obliczyć średnią wartość kolumny `A` dla każdej podanej liczby `LenB`. Wtedy możemy pogrupować nasz DataFrame według`LenB` i wywołać `mean`:
**Grupowanie** jest często stosowane, aby uzyskać rezultat podobny do *tabel przestawnych* w Excelu. Załóżmy, że chcemy obliczyć średnią kolumny `A` dla każdej wartości `LenB`. Możemy wtedy pogrupować DataFrame po`LenB` i wywołać `mean`:
```python
df.groupby(by='LenB')[['A','DivA']].mean()
```
Jeśli potrzebujemy obliczyć średnią i liczbę elementów w grupie, możemy użyć bardziej złożonej funkcji `aggregate`:
Jeśli potrzebujemy wyliczyć średnią i liczbę elementów w grupie, możemy użyć bardziej zaawansowanej funkcji `aggregate`:
@ -189,93 +191,98 @@ To daje nam następującą tabelę:
| 4 | 3 | 6.333333 |
| 6 | 2 | 6.000000 |
### Pobieranie danych
Widzieliśmy, jak łatwo jest tworzyć Series i DataFrames z obiektów Pythona. Jednak dane zazwyczaj występują w formie pliku tekstowego lub tabeli Excel. Na szczęście Pandas oferuje prosty sposób na załadowanie danych z dysku. Na przykład, odczytanie pliku CSV jest tak proste jak to:
### Pozyskiwanie danych
Widzieliśmy, jak łatwo jest tworzyć Series i DataFrames z obiektów Pythona. Jednak dane zazwyczaj pochodzą w formie pliku tekstowego lub tabeli Excel. Na szczęście Pandas oferuje nam prosty sposób na wczytanie danych z dysku. Na przykład, odczyt pliku CSV jest tak prosty jak to:
```python
df = pd.read_csv('file.csv')
```
Zobaczymy więcej przykładów ładowania danych, w tym pobieranie ich z zewnętrznych stron internetowych, w sekcji "Wyzwanie".
Zobaczymy więcej przykładów ładowania danych, w tym pobierania ich z zewnętrznych stron internetowych, w sekcji "Challenge"
### Drukowanie i Wizualizacja
### Wyświetlanie i wykresy
Data Scientist często musi eksplorować dane, dlatego ważne jest, aby móc je wizualizować. Gdy DataFrame jest duży, często chcemy tylko upewnić się, że wszystko robimy poprawnie, drukując pierwsze kilka wierszy. Można to zrobić, wywołując `df.head()`. Jeśli uruchamiasz to z Jupyter Notebook, wydrukuje DataFrame w ładnej formie tabelarycznej.
Data Scientist często musi eksplorować dane, dlatego ważne jest umiejętność ich wizualizacji. Gdy DataFrame jest duży, wielokrotnie chcemy tylko upewnić się, że robimy wszystko poprawnie, wyświetlając pierwsze kilka wierszy. Można to zrobić, wywołując `df.head()`. Jeśli uruchamiasz to w Jupyter Notebook, zostanie wyświetlony DataFrame w ładnej, tabelarycznej formie.
Widzieliśmy również użycie funkcji `plot` do wizualizacji niektórych kolumn. Chociaż `plot` jest bardzo przydatny do wielu zadań i obsługuje różne typy wykresów za pomocą parametru `kind=`, zawsze możesz użyć surowej biblioteki `matplotlib`, aby stworzyć coś bardziej złożonego. Szczegółowo omówimy wizualizację danych w osobnych lekcjach kursu.
Widzieliśmy również użycie funkcji `plot` do wizualizacji niektórych kolumn. Choć `plot` jest bardzo użyteczny w wielu zadaniach i obsługuje wiele różnych typów wykresów poprzez parametr `kind=`, zawsze można użyć surowej biblioteki `matplotlib` do wykreślenia czegoś bardziej złożonego. Omówimy wizualizację danych bardziej szczegółowo w oddzielnych lekcjach kursu.
Ten przegląd obejmuje najważniejsze koncepcje Pandas, jednak biblioteka jest bardzo bogata i nie ma ograniczeń co do tego, co można z nią zrobić! Teraz zastosujmy tę wiedzę do rozwiązania konkretnego problemu.
Ta przeglądowa sekcja omawia najważniejsze koncepcje Pandas, jednak biblioteka jest bardzo bogata i nie ma ograniczeń co do tego, co można z nią zrobić! Teraz zastosujmy tę wiedzę do rozwiązania konkretnego problemu.
## 🚀 Wyzwanie 1: Analiza Rozprzestrzeniania się COVID
## 🚀 Wyzwanie 1: Analiza rozprzestrzeniania się COVID
Pierwszym problemem, na którym się skupimy, jest modelowanie rozprzestrzeniania się epidemii COVID-19. Aby to zrobić, skorzystamy z danych dotyczących liczby zakażonych osób w różnych krajach, dostarczonych przez [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) na [Johns Hopkins University](https://jhu.edu/). Zbiór danych jest dostępny w [tym repozytorium GitHub](https://github.com/CSSEGISandData/COVID-19).
Pierwszym problemem, na którym się skupimy, jest modelowanie rozprzestrzeniania się epidemii COVID-19. W tym celu użyjemy danych o liczbie zakażonych osób w różnych krajach, dostarczonych przez [Center for Systems Science and Engineering](https://systems.jhu.edu/) (CSSE) na [Johns Hopkins University](https://jhu.edu/). Zbiór danych jest dostępny w [tym repozytorium GitHub](https://github.com/CSSEGISandData/COVID-19).
Ponieważ chcemy pokazać, jak radzić sobie z danymi, zapraszamy do otwarcia [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) i przeczytania go od góry do dołu. Możesz również uruchomić komórki i wykonać wyzwania, które zostawiliśmy na końcu.
Ponieważ chcemy pokazać, jak radzić sobie z danymi, zachęcamy do otwarcia [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) i przeczytania go od początku do końca. Możesz także wykonywać komórki i spróbować wyzwań, które zostawiliśmy dla Ciebie na końcu.
> Jeśli nie wiesz, jak uruchomić kod w Jupyter Notebook, zapoznaj się z [tym artykułem](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
> Jeśli nie wiesz, jak uruchomić kod w Jupyter Notebook, zajrzyj do [tego artykułu](https://soshnikov.com/education/how-to-execute-notebooks-from-github/).
## Praca z Niestrukturalnymi Danymi
## Praca z danymi nieustrukturyzowanymi
Chociaż dane bardzo często występują w formie tabelarycznej, w niektórych przypadkach musimy radzić sobie z mniej ustrukturalnymi danymi, na przykład tekstem lub obrazami. W takim przypadku, aby zastosować techniki przetwarzania danych, które widzieliśmy wcześniej, musimy w jakiś sposób **wyodrębnić** dane ustrukturalne. Oto kilka przykładów:
Chociaż dane bardzo często występują w formie tabeli, w niektórych przypadkach musimy pracować z mniej ustrukturyzowanymi danymi, na przykład tekstem lub obrazami. W takim przypadku, aby zastosować techniki przetwarzania danych omówione powyżej, musimy jakoś **wydobyć** dane ustrukturyzowane. Oto kilka przykładów:
* Wyodrębnianie słów kluczowych z tekstu i sprawdzanie, jak często te słowa kluczowe się pojawiają
* Używanie sieci neuronowych do wyodrębniania informacji o obiektach na zdjęciu
* Uzyskiwanie informacji o emocjach ludzi z obrazu z kamery wideo
* Wydobywanie słów kluczowych z tekstu i sprawdzanie, jak często się pojawiają
* Użycie sieci neuronowych do wydobycia informacji o obiektach na obrazku
* Uzyskiwanie informacji o emocjach osób na nagraniu wideo
## 🚀 Wyzwanie 2: Analiza Publikacji o COVID
## 🚀 Wyzwanie 2: Analiza artykułów naukowych o COVID
W tym wyzwaniu kontynuujemy temat pandemii COVID i skupiamy się na przetwarzaniu publikacji naukowych na ten temat. Istnieje [zbiór danych CORD-19](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) zawierający ponad 7000 (w momencie pisania) publikacji na temat COVID, dostępnych z metadanymi i abstraktami (a dla około połowy z nich dostępny jest również pełny tekst).
W tym wyzwaniu kontynuujemy temat pandemii COVID i skupimy się na przetwarzaniu artykułów naukowych na ten temat. Dostępny jest [CORD-19 Dataset](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) z ponad 7000 (w chwili pisania) artykułów o COVID, dostępnych wraz z metadanymi i abstraktami (a dla około połowy z nich dostępny jest także pełny tekst).
Pełny przykład analizy tego zbioru danych za pomocą usługi [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) opisano [w tym wpisie na blogu](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Omówimy uproszczoną wersję tej analizy.
Pełny przykład analizy tego zbioru danych za pomocą usługi kognitywnej [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) jest opisany [w tym wpisie na blogu](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/). Omówimy uproszczoną wersję tej analizy.
> **NOTE**: Nie dostarczamy kopii zbioru danych jako części tego repozytorium. Możesz najpierw pobrać plik [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) z [tego zbioru danych na Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Może być wymagana rejestracja na Kaggle. Możesz również pobrać zbiór danych bez rejestracji [stąd](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), ale będzie on zawierał wszystkie pełne teksty oprócz pliku metadanych.
> **UWAGA**: Nie dostarczamy kopii zbioru danych jako części tego repozytorium. Najpierw może być konieczne pobranie pliku [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) z [tego zbioru danych na Kaggle](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge). Może być wymagana rejestracja w Kaggle. Możesz także pobrać zbiór danych bez rejestracji [stąd](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html), ale będzie on zawierał wszystkie pełne teksty oprócz pliku metadanych.
Otwórz [`notebook-papers.ipynb`](notebook-papers.ipynb) i przeczytaj go od góry do dołu. Możesz również uruchomić komórki i wykonać wyzwania, które zostawiliśmy na końcu.
Otwórz [`notebook-papers.ipynb`](notebook-papers.ipynb) i przeczytaj go od początku do końca. Możesz także wykonywać komórki i spróbować wyzwań, które zostawiliśmy dla Ciebie na końcu.

## Przetwarzanie Danych Obrazowych
## Przetwarzanie danych obrazowych
Ostatnio opracowano bardzo potężne modele AI, które pozwalają na rozumienie obrazów. Istnieje wiele zadań, które można rozwiązać za pomocą wstępnie wytrenowanych sieci neuronowych lub usług w chmurze. Oto kilka przykładów:
Ostatnio zostały opracowane bardzo potężne modele AI, które pozwalają nam rozumieć obrazy. Istnieje wiele zadań, które można rozwiązać za pomocą wstępnie wytrenowanych sieci neuronowych lub usług chmurowych. Oto kilka przykładów:
* **Klasyfikacja Obrazów**, która może pomóc w kategoryzacji obrazu do jednej z predefiniowanych klas. Możesz łatwo wytrenować własne klasyfikatory obrazów, korzystając z usług takich jak [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Detekcja Obiektów**, aby wykrywać różne obiekty na obrazie. Usługi takie jak [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) mogą wykrywać wiele typowych obiektów, a Ty możesz wytrenować model [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum), aby wykrywać specyficzne obiekty.
* **Detekcja Twarzy**, w tym wiek, płeć i emocje. Można to zrobić za pomocą [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
* **Klasyfikacja obrazów**, która pomaga kategoryzować obraz do jednej z wstępnie zdefiniowanych klas. Możesz łatwo trenować własne klasyfikatory obrazów, korzystając z usług takich jak [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum)
* **Detekcja obiektów** w celu wykrywania różnych obiektów na obrazie. Usługi takie jak [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) mogą wykrywać wiele powszechnych obiektów, a możesz trenować model [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum), aby wykrywał konkretne interesujące obiekty.
* **Wykrywanie twarzy**, w tym rozpoznawanie wieku, płci i emocji. Można to zrobić za pomocą [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum).
Wszystkie te usługi w chmurze można wywoływać za pomocą [Python SDKs](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), dzięki czemu można je łatwo włączyć do swojego workflow eksploracji danych.
Wszystkie te usługi chmurowe można wywoływać za pomocą [Python SDK](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum), dzięki czemu łatwo można je włączyć do swojego przepływu pracy eksploracji danych.
Oto kilka przykładów eksploracji danych z obrazów:
* W wpisie na blogu [Jak uczyć się Data Science bez kodowania](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) eksplorujemy zdjęcia z Instagrama, próbując zrozumieć, co sprawia, że ludzie dają więcej polubień zdjęciu. Najpierw wyodrębniamy jak najwięcej informacji ze zdjęć, korzystając z [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), a następnie używamy [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum), aby zbudować interpretowalny model.
* W [Warsztacie Badań Twarzy](https://github.com/CloudAdvocacy/FaceStudies) używamy [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum), aby wyodrębnić emocje ludzi na zdjęciach z wydarzeń, próbując zrozumieć, co sprawia, że ludzie są szczęśliwi.
Oto kilka przykładów eksploracji danych pochodzących ze źródeł obrazowych:
* W wpisie na blogu [Jak uczyć się Data Science bez kodowania](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) analizujemy zdjęcia z Instagrama, próbując zrozumieć, co powoduje, że ludzie dają więcej lajków na zdjęcie. Najpierw wydobywamy jak najwięcej informacji z obrazów za pomocą [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum), a następnie używamy [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum), aby zbudować interpretowalny model.
* W [Warsztatach Badań Twarzy](https://github.com/CloudAdvocacy/FaceStudies) korzystamy z [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum), aby wydobywać emocje ludzi na zdjęciach z wydarzeń, próbując zrozumieć, co sprawia, że ludzie są szczęśliwi.
## Podsumowanie
Niezależnie od tego, czy masz już dane ustrukturalne, czy niestrukturalne, za pomocą Pythona możesz wykonać wszystkie kroki związane z przetwarzaniem i rozumieniem danych. Jest to prawdopodobnie najbardziej elastyczny sposób przetwarzania danych, i właśnie dlatego większość data scientistów używa Pythona jako swojego głównego narzędzia. Nauka Pythona w głębi jest prawdopodobnie dobrym pomysłem, jeśli poważnie myślisz o swojej drodze w data science!
Niezależnie od tego, czy masz już dane ustrukturyzowane, czy nieustrukturyzowane, korzystając z Pythona możesz wykonać wszystkie kroki związane z przetwarzaniem i analizą danych. Jest to prawdopodobnie najbardziej elastyczny sposób przetwarzania danych, i z tego powodu większość data scientistów używa Pythona jako swojego głównego narzędzia. Nauka Pythona w praktyce jest prawdopodobnie dobrym pomysłem, jeśli poważnie traktujesz swoją drogę w data science!
## [Quiz po wykładzie](https://ff-quizzes.netlify.app/en/ds/quiz/13)
## Przegląd i Samodzielna Nauka
## Przegląd i samodzielna nauka
**Książki**
* [Wes McKinney. Python for Data Analysis: Data Wrangling with Pandas, NumPy, and IPython](https://www.amazon.com/gp/product/1491957662)
**Zasoby Online**
* Oficjalny [10 minutowy przewodnik po Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [Dokumentacja dotycząca wizualizacji w Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Zasoby online**
* Oficjalny samouczek [10 minutes to Pandas](https://pandas.pydata.org/pandas-docs/stable/user_guide/10min.html)
* [Dokumentacja o Pandas Visualization](https://pandas.pydata.org/pandas-docs/stable/user_guide/visualization.html)
**Nauka Pythona**
* [Naucz się Pythona w zabawny sposób z grafiką Turtle i fraktalami](https://github.com/shwars/pycourse)
* [Zrób swoje pierwsze kroki z Pythonem](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Ścieżka nauki na [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
* [Ucz się Pythona w zabawny sposób z grafiką Turtle i fraktalami](https://github.com/shwars/pycourse)
* [Zrób pierwsze kroki z Pythonem](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) - ścieżka nauki na [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Zadanie
[Wykonaj bardziej szczegółowe badanie danych dla powyższych wyzwań](assignment.md)
[Wykonaj bardziej szczegółową analizę danych do powyższych wyzwań](assignment.md)
## Podziękowania
Ta lekcja została napisana z ♥️ przez [Dmitry Soshnikov](http://soshnikov.com)
Lekcję tę stworzył z ♥️ [Dmitry Soshnikov](http://soshnikov.com)
---
**Zastrzeżenie**:
Ten dokument został przetłumaczony za pomocą usługi tłumaczeniowej AI [Co-op Translator](https://github.com/Azure/co-op-translator). Chociaż dokładamy wszelkich starań, aby tłumaczenie było precyzyjne, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub nieścisłości. Oryginalny dokument w jego rodzimym języku powinien być uznawany za wiarygodne źródło. W przypadku informacji krytycznych zaleca się skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z korzystania z tego tłumaczenia.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Zastrzeżenie**:
Niniejszy dokument został przetłumaczony za pomocą usługi tłumaczenia AI [Co-op Translator](https://github.com/Azure/co-op-translator). Choć dążymy do dokładności, prosimy pamiętać, że automatyczne tłumaczenia mogą zawierać błędy lub niedokładności. Oryginalny dokument w jego języku źródłowym należy uznawać za autorytatywne źródło. W przypadku informacji krytycznych zalecane jest skorzystanie z profesjonalnego tłumaczenia wykonanego przez człowieka. Nie ponosimy odpowiedzialności za jakiekolwiek nieporozumienia lub błędne interpretacje wynikające z użycia tego tłumaczenia.
Veritabanları, verileri depolamak ve sorgulamak için oldukça verimli yollar sunarken, veri işleme konusunda en esnek yöntem, kendi programınızı yazarak veriyi manipüle etmektir. Çoğu durumda, bir veritabanı sorgusu yapmak daha etkili bir yol olabilir. Ancak, daha karmaşık veri işleme gerektiğinde, SQL kullanarak bunu kolayca yapmak mümkün olmayabilir.
Veri işleme herhangi bir programlama diliyle yapılabilir, ancak bazı diller veriyle çalışmak açısından daha üst seviyedir. Veri bilimciler genellikle aşağıdaki dillerden birini tercih eder:
Veritabanları verileri depolamak ve sorgulama dilleri kullanarak bunlara sorgular yapmak için çok verimli yollar sunarken, veriyi işlemek için en esnek yol kendi programınızı yazarak veriyi manipüle etmektir. Birçok durumda, veritabanı sorgusu yapmak daha etkili bir yol olabilir. Ancak, daha karmaşık veri işleme gerektiğinde, bu SQL kullanılarak kolayca yapılamaz.
Veri işleme herhangi bir programlama dilinde programlanabilir, ancak veriyle çalışmak açısından daha üst düzey bazı diller vardır. Veri bilimciler tipik olarak aşağıdaki dillerden birini tercih ederler:
* **[Python](https://www.python.org/)**, genel amaçlı bir programlama dili olup, basitliği nedeniyle genellikle yeni başlayanlar için en iyi seçeneklerden biri olarak kabul edilir. Python, ZIP arşivinden veri çıkarmak veya bir resmi gri tonlamaya dönüştürmek gibi birçok pratik problemi çözmenize yardımcı olabilecek ek kütüphanelere sahiptir. Python, veri biliminin yanı sıra web geliştirme için de sıkça kullanılır.
* **[R](https://www.r-project.org/)**, istatistiksel veri işleme amacıyla geliştirilmiş geleneksel bir araçtır. Büyük bir kütüphane deposu (CRAN) içerir ve veri işleme için iyi bir seçimdir. Ancak, R genel amaçlı bir programlama dili değildir ve veri bilimi alanı dışında nadiren kullanılır.
* **[Julia](https://julialang.org/)**, veri bilimi için özel olarak geliştirilmiş bir başka dildir. Python'dan daha iyi performans sunmayı amaçlar ve bilimsel deneyler için harika bir araçtır.
* **[Python](https://www.python.org/)**, genel amaçlı bir programlama dili olup, basitliği nedeniyle genellikle yeni başlayanlar için en iyi seçeneklerden biri olarak kabul edilir. Python, ZIP arşivinden veri çıkarma veya resmi gri tonlamaya dönüştürme gibi birçok pratik problemi çözmenize yardımcı olabilecek birçok ek kütüphane içerir. Veri biliminin yanı sıra, Python web geliştirme için de sıkça kullanılır.
* **[R](https://www.r-project.org/)**, istatistiksel veri işleme düşünülerek geliştirilmiş klasik bir araç kutusudur. Ayrıca çok sayıda kütüphane deposu (CRAN) içerir ve bu yüzden veri işleme için iyi bir seçimdir. Ancak R genel amaçlı bir programlama dili değildir ve veri bilimi alanı dışında nadiren kullanılır.
* **[Julia](https://julialang.org/)**, özellikle veri bilimi için geliştirilmiş başka bir dildir. Python’dan daha iyi performans vermesi hedeflenmiştir ve bilimsel deneyler için mükemmel bir araçtır.
Bu derste, basit veri işleme için Python kullanmaya odaklanacağız. Dil hakkında temel bir bilgiye sahip olduğunuzu varsayacağız. Python hakkında daha derinlemesine bilgi almak isterseniz, aşağıdaki kaynaklara göz atabilirsiniz:
Bu derste, basit veri işleme için Python üzerine odaklanacağız. Dil hakkında temel bir tanıdıklık varsayacağız. Daha derin bir Python turu isterseniz, aşağıdaki kaynaklardan birine başvurabilirsiniz:
* [Learn Python in a Fun Way with Turtle Graphics and Fractals](https://github.com/shwars/pycourse) - Python Programlama hakkında GitHub tabanlı hızlı giriş kursu
* [Take your First Steps with 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) üzerinde öğrenme yolu
* [Kuru Baskı, Sürüngen Grafikler ve Fraktaller ile Eğlenceli Python Öğrenimi](https://github.com/shwars/pycourse) - GitHub tabanlı hızlı Python programlama tanıtım kursu
* [Python ile İlk Adımlarınızı Atın](https://docs.microsoft.com/en-us/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Microsoft Learn’daki Öğrenme Yolu
Veriler birçok farklıbiçimde olabilir. Bu derste, üç veri biçimini ele alacağız - **tablo verisi**, **metin** ve **görseller**.
Veriler birçok biçimde olabilir. Bu derste, üç veri biçimini ele alacağız - **tablo verisi**, **metin** ve **resimler**.
Tüm ilgili kütüphanelerin tam bir genel görünümünü vermek yerine, birkaç veri işleme örneğine odaklanacağız. Bu, size mümkün olanın ana fikrini verecek ve ihtiyaç duyduğunuzda problemlerinize çözüm bulabileceğiniz yerleri anlamanızı sağlayacaktır.
İlgili tüm kütüphanelerin tam bir genel bakışını vermek yerine, birkaç veri işleme örneğine odaklanacağız. Bu size mümkün olanların ana fikrini verecek ve gerektiğinde problemlerinize çözüm bulmanız için nerelere bakacağınızı anlamanızı sağlayacaktır.
> **En faydalı tavsiye**. Bilmediğiniz bir veri işlemi gerçekleştirmek istediğinizde, internetten arama yapmayı deneyin. [Stackoverflow](https://stackoverflow.com/) genellikle birçok tipik görev için Python'da faydalı kod örnekleri içerir.
> **En yararlı tavsiye**. Veride gerçekleştirmek istediğiniz ancak nasıl yapacağınızı bilmediğiniz bir işlem olduğunda, internetten arama yapmayı deneyin. [Stackoverflow](https://stackoverflow.com/) genellikle birçok tipik görev için Python’da çok sayıda faydalı kod örneği içerir.
## [Ders Öncesi Test](https://ff-quizzes.netlify.app/en/ds/quiz/12)
## Tablo Verisi ve DataFrame'ler
İlişkisel veritabanları hakkında konuştuğumuzda tablo verisiyle zaten tanışmıştınız. Çok fazla veri olduğunda ve bu veriler birçok farklı bağlantılı tabloda yer aldığında, SQL kullanmak kesinlikle mantıklıdır. Ancak, elimizde bir veri tablosu olduğunda ve bu veri hakkında **anlayış** veya **içgörü** elde etmek istediğimizde, örneğin dağılım, değerler arasındaki korelasyon gibi, SQL kullanmak her zaman yeterli olmayabilir. Veri bilimi alanında, orijinal verinin bazı dönüşümlerini gerçekleştirmek ve ardından görselleştirme yapmak gerektiğinde birçok durum vardır. Bu adımların her ikisi de Python kullanılarak kolayca yapılabilir.
## [Derse Hazırlık Quiz'i](https://ff-quizzes.netlify.app/en/ds/quiz/12)
Python'da tablo verisiyle çalışmanıza yardımcı olabilecek en faydalı iki kütüphane şunlardır:
* **[Pandas](https://pandas.pydata.org/)**, **DataFrame** adı verilen yapıları manipüle etmenize olanak tanır. DataFrame'ler, ilişkisel tablolara benzer. Adlandırılmış sütunlara sahip olabilir ve satır, sütun ve genel olarak DataFrame'ler üzerinde çeşitli işlemler gerçekleştirebilirsiniz.
* **[Numpy](https://numpy.org/)**, **tensor** yani çok boyutlu **array**'lerle çalışmak için bir kütüphanedir. Array'ler aynı temel türde değerlere sahiptir ve DataFrame'den daha basittir, ancak daha fazla matematiksel işlem sunar ve daha az yük oluşturur.
## Tablo Verileri ve Dataframe'ler
Ayrıca bilmeniz gereken birkaç başka kütüphane daha vardır:
İlişkisel veritabanlarından bahsederken tablo verileriyle zaten tanışmıştık. Çok fazla veriniz varsa ve bunlar birçok farklı bağlı tabloda yer alıyorsa, SQL kullanmak kesinlikle mantıklıdır. Ancak birçok durumda elimizde bir tablo veri vardır ve bu veri hakkında dağılım, değerler arasındaki korelasyon gibi **anlama** veya **içgörü** elde etmemiz gerekir. Veri biliminde, orijinal verinin bazı dönüşümlerinin yapılması ve sonrasında görselleştirilmesi gereken çok durum vardır. Bu adımların ikisi de Python kullanılarak kolayca yapılabilir.
Python’da tablo verisiyle çalışmanıza yardımcı olan iki çok kullanışlı kütüphane vardır:
* **[Pandas](https://pandas.pydata.org/)**, ilişkisel tablolara benzer şekilde adlandırılmış sütunları olan ve satır, sütun ve dataframe üzerinde farklı işlemler yapmanızı sağlayan **Dataframe** adı verilen veri yapılarını manipüle etmenizi sağlar.
* **[Numpy](https://numpy.org/)**, yani çok boyutlu **diziler** üzerinde çalışmak için kullanılan bir kütüphanedir. Dizi aynı türdeki değerlere sahiptir ve dataframe’den daha basittir, ancak daha fazla matematiksel işlem sunar ve daha az yük getirir.
Ayrıca bilmeniz gereken birkaç başka kütüphane vardır:
* **[Matplotlib](https://matplotlib.org/)**, veri görselleştirme ve grafik çizimi için kullanılan bir kütüphanedir
* **[SciPy](https://www.scipy.org/)**, bazı ek bilimsel fonksiyonlar içeren bir kütüphanedir. Bu kütüphaneyle olasılık ve istatistik hakkında konuşurken zaten karşılaşmıştık.
* **[SciPy](https://www.scipy.org/)** ilave bazı bilimsel fonksiyonların bulunduğu bir kütüphanedir. Olasılık ve istatistik hakkında konuşurken bu kütüphaneyle daha önce karşılaşmıştık.
Python programınızın başında genellikle bu kütüphaneleri içe aktarmak için aşağıdaki kod parçasını kullanırsınız:
İşte bu kütüphaneleri Python programınızın başında tipik olarak içe aktarmak için kullanacağınız bir kod parçası:
```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 ... # ihtiyacınız olan belirli alt paketleri belirtmeniz gerekir
```
Pandas birkaç temel kavram etrafında şekillenmiştir.
Pandas birkaç temel kavram etrafında yoğunlaşır.
### Series
**Series**, bir liste veya numpy array'e benzer bir değerler dizisidir. Ana fark, serilerin ayrıca bir **index**'e sahip olmasıdır ve seriler üzerinde işlem yaparken (örneğin, toplama), indeks dikkate alınır. İndeks, bir liste veya array'den bir seri oluştururken varsayılan olarak kullanılan basit bir tamsayı satır numarası kadar basit olabilir veya tarih aralığı gibi karmaşık bir yapıya sahip olabilir.
**Series**, bir liste veya numpy dizisine benzeyen bir değer dizisidir. Ana fark, serinin ayrıca bir **indeksi** olmasıdır ve seriler üzerinde işlem yaparken (örneğin, toplama) indeks dikkate alınır. İndeks basit bir tam sayı satır numarası olabilir (liste veya diziden seri oluşturulduğunda varsayılan olarak kullanılan indeks budur) veya tarih aralığı gibi karmaşık bir yapıya sahip olabilir.
> **Not**: Eşlik eden notebook'ta [`notebook.ipynb`](notebook.ipynb) bazı giriş niteliğinde Pandas kodu bulunmaktadır. Burada yalnızca bazı örnekleri özetliyoruz ve tam notebook'u incelemenizi kesinlikle öneririz.
> **Not**: Eşlik eden defterde [`notebook.ipynb`](notebook.ipynb) bazı giriş düzeyinde Pandas kodları bulunmaktadır. Burada sadece bazı örnekleri ele alıyoruz ve tam defteri kesinlikle incelemeniz önerilir.
Bir örneği ele alalım: dondurma satışlarımızı analiz etmek istiyoruz. Belirli bir zaman dilimi için satış rakamlarının (her gün satılan ürün sayısı) bir serisini oluşturalım:
Örnek olarak düşünelim: dondurma dükkanımızın satışlarını analiz etmek istiyoruz. Bazı zaman aralıkları için satış sayıları dizisi (her gün satılan ürün sayısı) oluşturalım:
```python
start_date = "Jan 1, 2020"
@ -66,7 +68,7 @@ items_sold.plot()
```

Şimdi, her hafta arkadaşlarımız için bir parti düzenlediğimizi ve parti için ek olarak 10 paket dondurma aldığımızı varsayalım. Bunu göstermek için haftalık olarak indekslenmiş başka bir seri oluşturabiliriz:
Şimdi diyelim ki her hafta arkadaşlar için bir parti düzenliyoruz ve parti için ekstra 10 paket dondurma alıyoruz. Bunu göstermek için hafta bazında indekslenmiş başka bir seri oluşturabiliriz:

> **Not**: Basit `total_items+additional_items` sözdizimini kullanmıyoruz. Eğer kullansaydık, sonuç serisinde birçok `NaN` (*Not a Number*) değeri alırdık. Bunun nedeni, `additional_items` serisindeki bazı indeks noktaları için eksik değerler olmasıdır ve `NaN` ile herhangi bir şeyi toplamak `NaN` sonucunu verir. Bu nedenle toplama sırasında `fill_value` parametresini belirtmemiz gerekir.
> **Not** basit `total_items+additional_items` sözdizimini kullanmıyoruz. Eğer kullansaydık, oluşan seride çok sayıda `NaN` (*Sayısal Değil*) değeri olurdu. Çünkü `additional_items` serisinde bazı indeks noktaları için değerler eksik ve `NaN` herhangi bir değere eklendiğinde sonuç `NaN` olur. Dolayısıyla toplamada `fill_value` parametresini belirtmemiz gerekir.
Zaman serileriyle, farklı zaman aralıklarıyla seriyi yeniden örnekleyebiliriz. Örneğin, aylık ortalama satış hacmini hesaplamak istersek, aşağıdaki kodu kullanabiliriz:
Zaman serileri ile, farklı zaman aralıklarında seriyi **yeni örneklem** ile yeniden oluşturabiliriz. Örneğin, aylık ortalama satış hacmini hesaplamak isteyelim. Aşağıdaki kodu kullanabiliriz:
```python
monthly = total_items.resample("1M").mean()
ax = monthly.plot(kind='bar')
@ -88,23 +90,23 @@ ax = monthly.plot(kind='bar')
### DataFrame
Bir DataFrame, aynı indekse sahip bir dizi serinin koleksiyonudur. Birkaç seriyi bir araya getirerek bir DataFrame oluşturabiliriz:
Bir DataFrame temelde aynı indekse sahip bir seri koleksiyonudur. Birkaç seriyi birleştirip bir DataFrame oluşturabiliriz:
```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])
```
Bu, aşağıdaki gibi yatay bir tablo oluşturacaktır:
Burada `.T`, DataFrame'i transpoze etme işlemini, yani satırları ve sütunları değiştirme işlemini ifade eder ve `rename` işlemi, sütun adlarını önceki örneğe uyacak şekilde yeniden adlandırmamıza olanak tanır.
Burada `.T` DataFrame’in transpoze işlemini, yani satırlar ile sütunların yer değiştirmesini temsil eder ve `rename` işlemi sütun isimlerini önceki örnekle eşleştirir.
DataFrame'ler üzerinde gerçekleştirebileceğimiz en önemli işlemlerden bazıları şunlardır:
DataFrame üzerinde yapabileceğimiz birkaç önemli işlem şunlardır:
**Sütun seçimi**. Bireysel sütunları`df['A']` yazarak seçebiliriz - bu işlem bir Seri döndürür. Ayrıca, başka bir DataFrame'e alt küme sütunları seçerek `df[['B','A']]` yazabiliriz - bu başka bir DataFrame döndürür.
**Sütun seçimi**. `df['A']` yazarak bireysel sütun seçebiliriz - bu işlem bir Seri döndürür. `df[['B','A']]` yazarak birkaç sütunun alt kümesini başka bir DataFrame olarak seçebiliriz.
**Belirli satırları filtreleme**. Örneğin, yalnızca`A` sütunu 5'ten büyük olan satırları bırakmak için `df[df['A']>5]` yazabiliriz.
**Sadece belirli satırların filtrelenmesi** kriterlere göre yapılabilir. Örneğin,`A` sütunu 5'ten büyük olan satırları bırakmak için `df[df['A']>5]` yazabiliriz.
> **Not**: Filtreleme şu şekilde çalışır. `df['A']<5` ifadesi, orijinal serinin `df['A']` her bir öğesi için ifadenin `True` veya `False` olduğunu belirten bir boolean serisi döndürür. Boolean serisi indeks olarak kullanıldığında, DataFrame'deki satırların alt kümesini döndürür. Bu nedenle, rastgele Python boolean ifadeleri kullanmak mümkün değildir, örneğin `df[df['A']>5 and df['A']<7]` yazmak yanlış olur. Bunun yerine, boolean seriler üzerinde özel `&` işlemini kullanarak`df[(df['A']>5) & (df['A']<7)]` yazmalısınız (*parantezler burada önemlidir*).
> **Not**: Filtreleme şu şekilde çalışır. `df['A']<5` ifadesi, orijinal seri`df['A']`nin her elemanı için ifadenin `True` ya da `False` olduğunu gösteren bir boolean serisi döndürür. Boolean serisi indeks olarak kullanıldığında, DataFrame'de satırların bir alt kümesini döndürür. Bu yüzden `df[df['A']>5 and df['A']<7]` gibi rastgele Python boolean ifadeleri kullanmak yanlış olur. Bunun yerine boolean seriler üzerinde özel `&` işlemini kullanmalısınız, örneğin`df[(df['A']>5) & (df['A']<7)]` (*parantezler burada önemlidir*).
**Hesaplanabilir yeni sütunlar oluşturma**. DataFrame için kolayca hesaplanabilir yeni sütunlar oluşturabiliriz, örneğin:
**Yeni hesaplanabilir sütunlar oluşturma**. Bu ifade gibi sezgisel ifadeler kullanarak DataFrame için kolayca yeni hesaplanabilir sütunlar oluşturabiliriz:
```python
df['DivA'] = df['A']-df['A'].mean()
```
Bu örnek, A'nın ortalama değerinden sapmasını hesaplar. Burada aslında bir seri hesaplıyoruz ve ardından bu seriyi sol taraftaki sütuna atayarak yeni bir sütun oluşturuyoruz. Bu nedenle, serilerle uyumlu olmayan işlemleri kullanamayız, örneğin aşağıdaki kod yanlıştır:
Bu örnek, A'nın ortalama değerinden sapmasını hesaplar. Aslında burada yaptığımız bir seri hesaplamak ve sonra bu seriyi sol tarafa atayarak başka bir sütun oluşturmaktır. Bu nedenle seri ile uyumlu olmayan işlemleri kullanamayız, örneğin aşağıdaki kod yanlıştır:
```python
# Wrong code -> df['ADescr'] = "Low" if df['A'] <5else"Hi"
df['LenB'] = len(df['B']) # <-Wrong result
# Yanlış kod -> df['ADescr'] = "Low" if df['A'] <5else"Hi"
df['LenB'] = len(df['B']) # <-Yanlışsonuç
```
Son örnek, sözdizimsel olarak doğru olsa da, yanlış bir sonuç verir çünkü serinin `B` uzunluğunu tüm sütun değerlerine atar, bireysel öğelerin uzunluğunu değil.
Sonraki örnek, sözdizimi açısından doğru olmasına rağmen yanlış sonuç verir çünkü bunu yapmak yerine `B` serisinin uzunluğunu tüm sütun değerlerine atar, istediğimiz gibi her bireysel elemanın uzunluğunu değil.
Bu tür karmaşık ifadeleri hesaplamamız gerektiğinde, `apply` fonksiyonunu kullanabiliriz. Son örnek şu şekilde yazılabilir:
Eğer böyle karmaşık ifadeler hesaplamamız gerekirse, `apply` fonksiyonunu kullanabiliriz. Son örnek şu şekilde yazılabilir:
```python
df['LenB'] = df['B'].apply(lambda x : len(x))
# or
# veya
df['LenB'] = df['B'].apply(len)
```
Yukarıdaki işlemlerden sonra aşağıdaki DataFrame'e ulaşırız:
Yukarıdaki işlemlerden sonra aşağıdaki DataFrame'e sahip oluruz:
| | A | B | DivA | LenB |
| --- | --- | ------ | ---- | ---- |
@ -164,22 +166,22 @@ Yukarıdaki işlemlerden sonra aşağıdaki DataFrame'e ulaşırız:
| 7 | 8 | very | 3.0 | 4 |
| 8 | 9 | much | 4.0 | 4 |
**Satırları numaralara göre seçmek** `iloc` yapısını kullanarak yapılabilir. Örneğin, DataFrame'den ilk 5 satırı seçmek için:
**Sayıya göre satır seçimi**, `iloc` yapısı kullanılarak yapılabilir. Örneğin, DataFrame’den ilk 5 satırı seçmek için:
```python
df.iloc[:5]
```
**Gruplama**, genellikle Excel'deki *pivot tablolar* benzeri bir sonuç elde etmek için kullanılır. Örneğin, `LenB`'nin her bir değeri için `A` sütununun ortalama değerini hesaplamak istersek, DataFrame'i `LenB`'ye göre gruplandırabilir ve `mean` çağırabiliriz:
**Gruplama** genellikle Excel’deki *pivot tablolar* benzeri sonuç almak için kullanılır. Diyelim ki her bir `LenB` değeri için `A` sütununun ortalama değerini hesaplamak istiyoruz. O zaman DataFrame’imizi `LenB` ile gruplayıp `mean` fonksiyonunu çağırabiliriz:
```python
df.groupby(by='LenB')[['A','DivA']].mean()
```
Eğer grup içindeki ortalama ve eleman sayısını hesaplamak istersek, daha karmaşık bir`aggregate` fonksiyonunu kullanabiliriz:
Eğer grup içinde ortalama ve eleman sayısını hesaplamamız gerekiyorsa, daha karmaşık`aggregate` fonksiyonunu kullanabiliriz:
@ -190,92 +192,97 @@ Bu bize aşağıdaki tabloyu verir:
| 6 | 2 | 6.000000 |
### Veri Alma
Python nesnelerinden Series ve DataFrame oluşturmanın ne kadar kolay olduğunu gördük. Ancak, veri genellikle bir metin dosyası veya bir Excel tablosu şeklinde gelir. Neyse ki, Pandas bize diskteki verileri yüklemek için basit bir yol sunar. Örneğin, bir CSV dosyasını okumak şu kadar basittir:
Seriler ve Veri Çerçevelerini Python nesnelerinden oluşturmanın ne kadar kolay olduğunu gördük. Ancak, veriler genellikle bir metin dosyası veya bir Excel tablosu biçiminde gelir. Neyse ki, Pandas verileri diskten yüklemek için bize basit bir yol sunar. Örneğin, CSV dosyasını okumak bu kadar basittir:
```python
df = pd.read_csv('file.csv')
```
"Challenge" bölümünde, verileri yükleme örneklerini, dış web sitelerinden veri alma dahil olmak üzere, daha fazla göreceğiz.
Veri yükleme ile ilgili daha fazla örneği, dış web sitelerinden veri almayı da içeren "Challenge" bölümünde göreceğiz
### Yazdırma ve Görselleştirme
### Yazdırma ve Grafik Çizme
Bir Veri Bilimci genellikle veriyi keşfetmek zorundadır, bu yüzden onu görselleştirebilmek önemlidir. DataFrame büyük olduğunda, çoğu zaman sadece her şeyin doğru yapıldığından emin olmak için ilk birkaç satırı yazdırmak isteriz. Bu, `df.head()` çağrılarak yapılabilir. Eğer bunu Jupyter Notebook'tan çalıştırıyorsanız, DataFrame'i güzel bir tablo formunda yazdıracaktır.
Bir Veri Bilimcisi genellikle veriyi keşfetmek zorundadır, bu yüzden veriyi görselleştirebilmek önemlidir. DataFrame büyük olduğunda, çoğu zaman her şeyi doğru yaptığımızdan emin olmak için sadece ilk birkaç sırasını yazdırmak isteriz. Bu, `df.head()` çağrılarak yapılabilir. Jupyter Notebook'tan çalıştırıyorsanız, bu DataFrame'i güzel bir tablo biçiminde yazdıracaktır.
Ayrıca bazı sütunları görselleştirmek için `plot` fonksiyonunun kullanımını gördük. `plot` birçok görev için çok kullanışlıdır ve `kind=` parametresi ile birçok farklı grafik türünü destekler. Ancak, daha karmaşık bir şey çizmek için her zaman ham `matplotlib` kütüphanesini kullanabilirsiniz. Veri görselleştirmeyi ayrı derslerde detaylı olarak ele alacağız.
Bazı sütunları görselleştirmek için `plot` fonksiyonunun kullanımınıda gördük. `plot` birçok görev için çok yararlıdır ve `kind=` parametresi aracılığıyla birçok farklı grafik türünü destekler, ancak her zaman daha karmaşık bir şeyi çizmek için ham `matplotlib` kütüphanesini kullanabilirsiniz. Veri görselleştirmeyi ayrıkurs derslerinde detaylı olarak ele alacağız.
Bu genel bakış, Pandas'ın en önemli kavramlarını kapsar, ancak kütüphane çok zengindir ve onunla yapabileceklerinizin sınırı yoktur! Şimdi bu bilgiyi belirli bir problemi çözmek için uygulayalım.
Bu genel bakış Pandas'ın en önemli kavramlarını kapsamaktadır, ancak kütüphane çok zengindir ve onunla yapabileceklerinizin sınırı yoktur! Şimdi bu bilgiyi belirli bir problemi çözmek için uygulayalım.
## 🚀 Challenge 1: COVID Yayılımını Analiz Etmek
## 🚀 Challenge 1: COVID Yayılımını Analiz Etme
Odaklanacağımız ilk problem, COVID-19'un salgın yayılımını modellemektir. Bunu yapmak için, [Johns Hopkins Üniversitesi](https://jhu.edu/) [Sistem Bilimi ve Mühendisliği Merkezi](https://systems.jhu.edu/) (CSSE) tarafından sağlanan, farklı ülkelerdeki enfekte bireylerin sayısına ilişkin verileri kullanacağız. Veri seti [bu GitHub deposunda](https://github.com/CSSEGISandData/COVID-19) mevcuttur.
Odaklanacağımız ilk problem COVID-19 salgınının yayılım modellemesidir. Bunu yapmak için, [Johns Hopkins Üniversitesi](https://jhu.edu/) bünyesindeki [Sistemler Bilimi ve Mühendisliği Merkezi](https://systems.jhu.edu/) (CSSE) tarafından sağlanan farklı ülkelerdeki enfekte bireylerin sayısı verilerini kullanacağız. Veri seti [bu GitHub Deposu](https://github.com/CSSEGISandData/COVID-19) üzerinden temin edilebilir.
Verilerle nasıl başa çıkılacağını göstermek istediğimiz için, [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) dosyasını açmanızı ve baştan sona okumanızı öneriyoruz. Hücreleri çalıştırabilir ve sonunda sizin için bıraktığımız bazı zorlukları deneyebilirsiniz.
Verilerle nasıl çalışılacağını göstermek istediğimiz için, [`notebook-covidspread.ipynb`](notebook-covidspread.ipynb) dosyasını açmanızı ve baştan sona okumanızı öneririz. Hücreleri çalıştırabilir ve sonunda sizin için bıraktığımız bazı zorlukları yapabilirsiniz.
> Jupyter Notebook'ta kod nasıl çalıştırılır bilmiyorsanız, [bu makaleye](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) göz atabilirsiniz.
> Jupyter Notebook'ta nasıl kod çalıştıracağınızı bilmiyorsanız, [bu makaleye](https://soshnikov.com/education/how-to-execute-notebooks-from-github/) göz atabilirsiniz.
## Yapılandırılmamış Verilerle Çalışmak
## Yapılandırılmamış Veri ile Çalışmak
Veriler çok sık tablosal formda gelirken, bazı durumlarda daha az yapılandırılmış verilerle, örneğin metin veya görüntülerle çalışmamız gerekebilir. Bu durumda, yukarıda gördüğümüz veri işleme tekniklerini uygulamak için, yapılandırılmış veriyi bir şekilde **çıkarmamız** gerekir. İşte birkaç örnek:
Veriler çok kez tabular biçimde gelir, ancak bazı durumlarda metin veya görüntü gibi daha az yapılandırılmış verilerle çalışmamız gerekir. Bu durumda, yukarıda gördüğümüz veri işleme tekniklerini uygulayabilmek için yapılandırılmış veriyi bir şekilde **çıkar**mamız gerekir. İşte birkaç örnek:
* Metinden anahtar kelimeleri çıkarmak ve bu anahtar kelimelerin ne sıklıkta göründüğünü görmek
* Resimdeki nesneler hakkında bilgi çıkarmak için sinir ağlarını kullanmak
* Video kamera akışındaki insanların duyguları hakkında bilgi almak
* Metinden anahtar kelimeleri çıkararak bu kelimelerin ne sıklıkta göründüğünü incelemek
* Görüntüdeki nesneler hakkında bilgi çıkarmak için sinir ağlarını kullanmak
* Video kamera görüntüsündeki kişilerin duyguları hakkında bilgi almak
## 🚀 Challenge 2: COVID Makalelerini Analiz Etmek
## 🚀 Challenge 2: COVID Makalelerini Analiz Etme
Bu zorlukta, COVID pandemisi konusuna devam edeceğiz ve konu hakkındaki bilimsel makaleleri işlemeye odaklanacağız. [CORD-19 Veri Seti](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge), meta veriler ve özetlerle birlikte (ve yaklaşık yarısı için tam metin de sağlanmış) COVID hakkında 7000'den fazla (yazım sırasında) makale içerir.
Bu zorlukta, COVID pandemisi konusuna devam edeceğiz ve bu konuda bilimsel makalelerin işlenmesine odaklanacağız. COVID hakkında 7000’den fazla (yazım zamanı itibarıyla) makalenin meta verileri ve özetleri (yaklaşık yarısı için tam metin de sağlanmakta) ile birlikte mevcut olduğu [CORD-19 Veri Seti](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) bulunmaktadır.
Bu veri setini [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) bilişsel hizmetini kullanarak analiz etmenin tam bir örneği [bu blog yazısında](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) açıklanmıştır. Bu analizin basitleştirilmiş bir versiyonunu tartışacağız.
Bu veri setini kullanarak [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) bilişsel hizmeti ile gerçekleştirilen tam bir analiz örneği [bu blog yazısında](https://soshnikov.com/science/analyzing-medical-papers-with-azure-and-text-analytics-for-health/) anlatılmıştır. Biz bu analizden basitleştirilmiş bir versiyonu tartışacağız.
> **NOTE**: Bu depo kapsamında veri setinin bir kopyasını sağlamıyoruz. Öncelikle [Kaggle'daki bu veri setinden](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) dosyasını indirmeniz gerekebilir. Kaggle'a kayıt olmanız gerekebilir. Ayrıca, veri setini kayıt olmadan [buradan](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html) indirebilirsiniz, ancak bu meta veri dosyasına ek olarak tüm tam metinleri de içerecektir.
> **NOT:** Bu depoda veri setinin bir kopyası sağlanmamaktadır. Öncelikle [`metadata.csv`](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge?select=metadata.csv) dosyasını [Kaggle'daki bu veri setinden](https://www.kaggle.com/allen-institute-for-ai/CORD-19-research-challenge) indirmeniz gerekebilir. Kaggle'a kayıt olmanız gerekebilir. Ayrıca kayıt olmadan [buradan](https://ai2-semanticscholar-cord-19.s3-us-west-2.amazonaws.com/historical_releases.html) veri setini indirebilirsiniz, ancak bu dosyada tüm tam metinler ve meta veri dosyası birlikte olacaktır.
[`notebook-papers.ipynb`](notebook-papers.ipynb) dosyasını açın ve baştan sona okuyun. Hücreleri çalıştırabilir ve sonunda sizin için bıraktığımız bazı zorluklarıdeneyebilirsiniz.
[`notebook-papers.ipynb`](notebook-papers.ipynb) dosyasını açın ve baştan sona okuyun. Hücreleri çalıştırabilir ve sonunda sizin için bıraktığımız bazı zorluklarıyapabilirsiniz.
Son zamanlarda, görüntüleri anlamamıza olanak tanıyan çok güçlü AI modelleri geliştirildi. Önceden eğitilmiş sinir ağları veya bulut hizmetleri kullanılarak çözülebilecek birçok görev vardır. Bazı örnekler şunlardır:
Son zamanlarda, görüntüleri anlamamızı sağlayan çok güçlü Yapay Zeka modelleri geliştirildi. Önceden eğitilmiş sinir ağları veya bulut servisleri kullanılarak çözülebilecek birçok görev vardır. Bazı örnekler şunlardır:
* **Görüntü Sınıflandırma**, görüntüyü önceden tanımlanmış sınıflardan birine kategorize etmenize yardımcı olabilir. [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) gibi hizmetleri kullanarak kendi görüntü sınıflandırıcılarınızı kolayca eğitebilirsiniz.
* **Nesne Tespiti**, görüntüdeki farklı nesneleri tespit etmek için. [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) gibi hizmetler birçok yaygın nesneyi tespit edebilir ve [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) modeli ile ilgi alanınızdaki belirli nesneleri tespit etmek için eğitim yapabilirsiniz.
* **Yüz Tespiti**, Yaş, Cinsiyet ve Duygu tespiti dahil. Bu, [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) aracılığıyla yapılabilir.
* **Görüntü Sınıflandırma**, görüntüyü önceden tanımlanmış sınıflardan birine kategorize etmeye yardımcı olabilir. [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) gibi servisler kullanarak kendi görüntü sınıflandırıcılarınızı kolayca eğitebilirsiniz.
* Görüntüdeki farklı nesneleri tespit etmek için **Nesne Tespiti**. [Computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) gibi servisler birçok yaygın nesneyi algılayabilir ve [Custom Vision](https://azure.microsoft.com/services/cognitive-services/custom-vision-service/?WT.mc_id=academic-77958-bethanycheum) modeli belirli ilgi nesnelerini tespit etmek için eğitebilirsiniz.
* Yaş, Cinsiyet ve Duygu tespiti dahil olmak üzere **Yüz Tespiti**. Bu, [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) ile yapılabilir.
Tüm bu bulut hizmetleri [Python SDK'ları](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) kullanılarak çağrılabilir ve böylece veri keşfi iş akışınıza kolayca entegre edilebilir.
Tüm bu bulut servisleri [Python SDK'ları](https://docs.microsoft.com/samples/azure-samples/cognitive-services-python-sdk-samples/cognitive-services-python-sdk-samples/?WT.mc_id=academic-77958-bethanycheum) kullanılarak çağrılabilir ve böylece veri keşif iş akışınıza kolayca entegre edilebilir.
İşte Görüntü veri kaynaklarından veri keşfetme örnekleri:
* [Kodlama Olmadan Veri Bilimi Nasıl Öğrenilir](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) blog yazısında, Instagram fotoğraflarınıkeşfederek, bir fotoğrafın daha fazla beğeni almasını sağlayan şeyleri anlamaya çalışıyoruz. Önce [Computer Vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) kullanarak fotoğraflardan mümkün olduğunca fazla bilgi çıkarıyoruz ve ardından [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) kullanarak yorumlanabilir bir model oluşturuyoruz.
* [Yüz Çalışmaları Atölyesi](https://github.com/CloudAdvocacy/FaceStudies) içinde, [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) kullanarak etkinliklerden fotoğraflardaki insanların duygularını çıkarıyoruz ve insanları mutlu eden şeyleri anlamaya çalışıyoruz.
İşte Görüntü veri kaynaklarından veri keşfine dair bazı örnekler:
* [Nasıl Kodlama Yapmadan Veri Bilimi Öğrenilir](https://soshnikov.com/azure/how-to-learn-data-science-without-coding/) blog yazısında, Instagram fotoğraflarınıinceliyoruz ve insanların bir fotoğrafa daha çok beğeni vermesini sağlayan etkenleri anlamaya çalışıyoruz. Önce [computer vision](https://azure.microsoft.com/services/cognitive-services/computer-vision/?WT.mc_id=academic-77958-bethanycheum) kullanarak fotoğraflardan mümkün olduğunca çok bilgi çıkarıyoruz, ardından [Azure Machine Learning AutoML](https://docs.microsoft.com/azure/machine-learning/concept-automated-ml/?WT.mc_id=academic-77958-bethanycheum) kullanarak yorumlanabilir bir model oluşturuyoruz.
* [Facial Studies Workshop](https://github.com/CloudAdvocacy/FaceStudies) içinde, [Face API](https://azure.microsoft.com/services/cognitive-services/face/?WT.mc_id=academic-77958-bethanycheum) kullanarak etkinliklerden alınan fotoğraflarda insanların duygularını çıkarıyoruz ve insanların neyin onları mutlu ettiğini anlamaya çalışıyoruz.
## Sonuç
Yapılandırılmış veya yapılandırılmamış verileriniz olsun, Python kullanarak veri işleme ve anlama ile ilgili tüm adımları gerçekleştirebilirsiniz. Muhtemelen veri işleme için en esnek yoldur ve bu nedenle çoğu veri bilimci Python'u birincil araçları olarak kullanır. Veri bilimi yolculuğunuzda ciddiyseniz, Python'u derinlemesine öğrenmek muhtemelen iyi bir fikirdir!
Yapılandırılmış veya yapılandırılmamış veriniz olsun, Python kullanarak veri işleme ve anlama ile ilgili tüm adımları gerçekleştirebilirsiniz. Muhtemelen veri işleme için en esnek yoldur ve bu nedenle veri bilimcilerin çoğunluğu Python'u birincil araç olarak kullanır. Veri bilim yolculuğunuzda ciddiseniz, Python'u derinlemesine öğrenmek iyi bir fikir olabilir!
* [Turtle Graphics ve Fraktallar ile Eğlenceli Bir Şekilde Python Öğrenin](https://github.com/shwars/pycourse)
* [Python ile İlk Adımlarınızı Atın](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Microsoft Learn'deki Öğrenme Yolu [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
**Python Öğrenme**
* [Eğlenceli Bir Yolla Python Öğrenin: Turtle Grafik ve Fraktallerle](https://github.com/shwars/pycourse)
* [Python ile İlk Adımlarınız](https://docs.microsoft.com/learn/paths/python-first-steps/?WT.mc_id=academic-77958-bethanycheum) Microsoft Learn'de Öğrenme Yolu [Microsoft Learn](http://learn.microsoft.com/?WT.mc_id=academic-77958-bethanycheum)
## Ödev
[Yukarıdaki zorluklar için daha ayrıntılı veri çalışması yapın](assignment.md)
[Yukarıdaki zorluklar için daha detaylı veri incelemesi yapın](assignment.md)
## Krediler
## Teşekkür
Bu ders [Dmitry Soshnikov](http://soshnikov.com) tarafından ♥️ ile yazılmıştır.
Bu ders ❤️ ile [Dmitry Soshnikov](http://soshnikov.com) tarafından hazırlanmıştır
---
**Feragatname**:
Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba göstersek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayın. Belgenin orijinal dili, yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımından kaynaklanan yanlış anlamalar veya yanlış yorumlamalardan sorumlu değiliz.
<!-- CO-OP TRANSLATOR DISCLAIMER START -->
**Feragatname**:
Bu belge, AI çeviri hizmeti [Co-op Translator](https://github.com/Azure/co-op-translator) kullanılarak çevrilmiştir. Doğruluk için çaba sarf etsek de, otomatik çevirilerin hata veya yanlışlık içerebileceğini lütfen unutmayınız. Orijinal belge, kendi dilinde yetkili kaynak olarak kabul edilmelidir. Kritik bilgiler için profesyonel insan çevirisi önerilir. Bu çevirinin kullanımı sonucu ortaya çıkabilecek yanlış anlamalardan veya yanlış yorumlamalardan sorumlu değiliz.