Scienza dei dati - Preparazione dei dati
Prima di analizzare i dati, un Data Scientist deve estrarre i dati e renderli puliti e preziosi.
Estrai e leggi i dati con Panda
Prima che i dati possano essere analizzati, devono essere importati/estratti.
Nell'esempio seguente, ti mostriamo come importare dati usando Pandas in Python.
Usiamo la read_csv()
funzione per importare un file CSV con i dati sanitari:
Esempio
import pandas as pd
health_data = pd.read_csv("data.csv", header=0, sep=",")
print(health_data)
Esempio spiegato
- Importa la libreria Panda
- Denominare il frame di dati come
health_data
. header=0
significa che le intestazioni per i nomi delle variabili si trovano nella prima riga (notare che 0 significa la prima riga in Python)sep=","
significa che "," viene utilizzato come separatore tra i valori. Questo perché stiamo usando il tipo di file .csv (valori separati da virgola)
Suggerimento: se disponi di un file CSV di grandi dimensioni, puoi utilizzare la
head()
funzione per mostrare solo le prime 5 righe:
Esempio
import pandas as pd
health_data = pd.read_csv("data.csv", header=0, sep=",")
print(health_data.head())
Pulizia dei dati
Guarda i dati importati. Come puoi vedere, i dati sono "sporchi" con valori errati o non registrati:
- Ci sono alcuni campi vuoti
- L'impulso medio di 9 000 non è possibile
- 9 000 saranno trattati come non numerici, a causa del separatore di spazio
- Un'osservazione dell'impulso massimo è indicata come "AF", il che non ha senso
Quindi, dobbiamo pulire i dati per eseguire l'analisi.
Rimuovi le righe vuote
Vediamo che i valori non numerici (9 000 e AF) sono nelle stesse righe con valori mancanti.
Soluzione: possiamo rimuovere le righe con le osservazioni mancanti per risolvere questo problema.
Quando carichiamo un set di dati utilizzando Panda, tutte le celle vuote vengono automaticamente convertite in valori "NaN".
Quindi, la rimozione delle celle NaN ci fornisce un set di dati pulito che può essere analizzato.
Possiamo usare la dropna()
funzione per rimuovere i NaN. asse=0 significa che vogliamo rimuovere tutte le righe che hanno un valore NaN:
Esempio
health_data.dropna(axis=0,inplace=True)
print(health_data)
Il risultato è un set di dati senza righe NaN:
Categorie di dati
Per analizzare i dati, dobbiamo anche conoscere i tipi di dati con cui abbiamo a che fare.
I dati possono essere suddivisi in tre categorie principali:
- Numerico : contiene valori numerici. Si possono dividere in due categorie:
- Discreto: i numeri vengono conteggiati come "interi". Esempio: non puoi aver allenato 2,5 sessioni, sono 2 o 3
- Continuo: i numeri possono essere di precisione infinita. Ad esempio, puoi dormire per 7 ore, 30 minuti e 20 secondi o 7.533 ore
- Categoriale - Contiene valori che non possono essere misurati l'uno rispetto all'altro. Esempio: un colore o un tipo di allenamento
- Ordinale - Contiene dati categoriali che possono essere misurati l'uno contro l'altro. Esempio: voti scolastici in cui A è migliore di B e così via
Conoscendo il tipo dei tuoi dati, sarai in grado di sapere quale tecnica utilizzare per analizzarli.
Tipi di dati
Possiamo usare la info()
funzione per elencare i tipi di dati all'interno del nostro set di dati:
Esempio
print(health_data.info())
Risultato:
Vediamo che questo set di dati ha due diversi tipi di dati:
- Galleggiante64
- Oggetto
Non possiamo usare oggetti per calcolare ed eseguire analisi qui. Dobbiamo convertire l'oggetto di tipo in float64 (float64 è un numero con un decimale in Python).
Possiamo usare la astype()
funzione per convertire i dati in float64.
L'esempio seguente converte "Average_Pulse" e "Max_Pulse" nel tipo di dati float64 (le altre variabili sono già di tipo float64):
Esempio
health_data["Average_Pulse"]
= health_data['Average_Pulse'].astype(float)
health_data["Max_Pulse"] =
health_data["Max_Pulse"].astype(float)
print
(health_data.info())
Risultato:
Ora, il set di dati ha solo tipi di dati float64.
Analizza i dati
Dopo aver pulito il set di dati, possiamo iniziare ad analizzare i dati.
Possiamo usare la describe()
funzione in Python per riassumere i dati:
Esempio
print(health_data.describe())
Risultato:
Durata | Impulso_medio | Impulso_max | Calorie_Bruciate | Ore_Lavoro | Ore_Sonno | |
---|---|---|---|---|---|---|
Contare | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 | 10.0 |
Significare | 51.0 | 102.5 | 137.0 | 285.0 | 6.6 | 7.5 |
Std | 10.49 | 15.4 | 11.35 | 30.28 | 3.63 | 0,53 |
min | 30.0 | 80.0 | 120.0 | 240.0 | 0.0 | 7.0 |
25% | 45.0 | 91.25 | 130.0 | 262.5 | 7.0 | 7.0 |
50% | 52.5 | 102.5 | 140.0 | 285.0 | 8.0 | 7.5 |
75% | 60.0 | 113.75 | 145.0 | 307.5 | 8.0 | 8.0 |
Massimo | 60.0 | 125.0 | 150.0 | 330.0 | 10.0 | 8.0 |
- Conteggio : conta il numero di osservazioni
- Media - Il valore medio
- Std - Deviazione standard (spiegata nel capitolo sulle statistiche)
- Min - Il valore più basso
- 25% , 50% e 75% sono percentili (spiegati nel capitolo statistiche)
- Max - Il valore più alto