Tutto quello che devi sapere sull'EDA in Data Science.

Mar 11 2023
Exploratory Data Analysis (EDA) Ciao, oggi sono qui per parlare di Exploratory Data Analysis (EDA) in Data Science. L'EDA è un passaggio cruciale nel processo di data science che ci aiuta a comprendere meglio i nostri dati e a prendere decisioni informate sulla base delle sue intuizioni.

Analisi esplorativa dei dati (EDA)

Ciao,

Oggi sono qui per parlare di Exploratory Data Analysis (EDA) in Data Science. L'EDA è un passaggio cruciale nel processo di data science che ci aiuta a comprendere meglio i nostri dati e a prendere decisioni informate sulla base delle sue intuizioni.

EDA è un processo di analisi e visualizzazione dei dati per comprenderne la struttura, i modelli e le relazioni. Implica l'identificazione delle variabili importanti nel set di dati, l'esplorazione della distribuzione dei dati e il rilevamento di valori anomali, valori mancanti, trattamento dei caratteri speciali e altri problemi di qualità dei dati.

Nel mondo della scienza dei dati, l'EDA è considerato uno dei passaggi più critici nel processo di sviluppo di un modello predittivo. L'EDA può aiutarci a comprendere le caratteristiche dei dati, il che può aiutarci a determinare quale algoritmo di apprendimento automatico utilizzare e come preelaborare i dati.

Ora discutiamo i passaggi chiave coinvolti nell'EDA:

Raccolta dati : il primo passo in EDA è raccogliere i dati rilevanti che vogliamo analizzare. Ciò può comportare la raccolta di dati da varie fonti, come database, API, web scraping, sondaggi, esperimenti, studi osservazionali o persino dati raccolti da sensori o dispositivi.

Per esaminare come si ottengono i dati, dobbiamo esaminare la fonte dei dati e il metodo utilizzato per raccoglierli. Se i dati sono correlati al tempo, dobbiamo esaminare la durata dei dati per determinarne la rilevanza per la nostra analisi.

Ad esempio, se stiamo analizzando i dati sul comportamento dei clienti, i dati di 10 anni fa potrebbero essere irrilevanti perché il comportamento dei consumatori potrebbe cambiare rapidamente nel tempo. In tali circostanze, potremmo desiderare di concentrarci su dati più recenti che riflettano maggiormente le tendenze e i comportamenti attuali. Allo stesso modo, se stiamo analizzando i dati su un evento specifico, come un disastro naturale, potremmo voler concentrarci sui dati del periodo di tempo che circonda l'evento, piuttosto che sui dati di alcuni anni prima o dopo.

Pulizia dei dati: il passaggio successivo consiste nel pulire i dati rimuovendo i duplicati, correggendo eventuali errori di ortografia e gestendo i dati mancanti. La pulizia dei dati è un passaggio essenziale nell'EDA, poiché aiuta a garantire che la nostra analisi sia basata su dati accurati e coerenti.

Controlla le informazioni del set di dati:

Per il controllo delle informazioni del set di dati " df.info()"

Sulla base delle informazioni, a volte potremmo dover modificare il tipo di dati delle caratteristiche.

Per modificare il tipo di dati della colonna:

Per la conversione nel formato DateTime " df['column_name'] = pd.to_datetime(df['column_name'])"

Per convertire la colonna in float " df['column_name'] = df['column_name'].astype(float)"

Per convertire la colonna in int " df['column_name'] = df['column_name'].astype(int)"

Per convertire str_col in numerico " df['str_column'] = pd.to_numeric(df['str_column'], error='coerce') "

Duplicati: -

Per controllare i duplicati " pd.DataFrame(df[df.duplicated()]) "

Per verificare il numero di record duplicati " df.duplicated().sum()"

Per eliminare i duplicati " df = df.drop_duplicates() "

Record nulli: -

Per controllare tutti i record nulli nel set di dati "pd.DataFrame(df[df.isnull().any(axis=1)])"

Per contare il numero di record null in ogni colonna nel set di dati " df.isnull().sum()"

Se un record ha più del 70 percento di informazioni mancanti, è una buona opzione eliminare quel record.

Elimina colonne e record non rilevanti: -

Per Elimina righe con valori mancanti " df.dropna(axis=0, inplace=True) "

Per colonne Drop con valori mancanti " df.dropna(axis=1, inplace=True) "

Per Drop valori null sia colonna che riga " df = df.dropna() "

Imputazione dei valori mancanti: -

Per l'assegnazione dei valori mancanti come media: — “ df['column_name'] = df['column_name'].fillna(df['column_name'].mean())”

Per l'assegnazione dei valori mancanti come mediana: — “ df['column_name'] = df['column_name'].fillna(df['column_name'].median())”

Per l'assegnazione dei valori mancanti come modalità: — “ df['column_name'] = df['column_name'].fillna(df['column_name'].mode())”

Inoltra i valori mancanti " df.fillna(method='ffill', inplace=True) "

Valori mancanti di riempimento all'indietro " df.fillna(method='bfill', inplace=True) "

Interpola i valori mancanti " df.interpolate(inplace=True) " in base ai valori circostanti.

Esplorazione dei dati: dopo aver ripulito i dati, possiamo iniziare a esplorarli visualizzando i dati tramite grafici, diagrammi e altre visualizzazioni. Questo ci aiuta a identificare eventuali schemi o relazioni tra le variabili nei dati.

Controlla il riepilogo statistico dei dati:

Solo per set di dati numerici "df.describe()"

Solo per l'intero set di dati "df.describe(include='all')"

Per visualizzare le relazioni tra le variabili in un DataFrame Pandas, puoi utilizzare la funzione " pairplot() " dalla libreria Seaborn. La funzione " pairplot() " crea una griglia di grafici a dispersione che mostra le relazioni a coppie tra le variabili nel DataFrame.

Per la libreria di importazione " import matplotlib.pyplot as plt"

Per la libreria di importazione " import seaborn as sns"

Per trama " sns.pairplot(df) "

Per trama " sns.pairplot(df, hue = "*C") "

*C = Qualsiasi caratteristica categorica importante nel dataframe. come il titanico case study “Sopravvissuto”. (meno numero di categoria per visualizzazione battitore)

Di seguito è riportato un esempio di Plot con variabili categoriche.

Codice per trama " sns.pairplot(df ) "

Codice per il grafico " sns.pairplot(df , hue = "variabile categoriale") "

Per verificare la relazione tra le variabili possiamo tracciare una mappa termica per verificare la correlazione tra le variabili.

Per heatmap " sns.heatmap(df.corr(), annot=True,cmap='coolwarm',square=True);"

Per maggiori dettagli, possiamo tracciare un grafico a dispersione per ciascuno dei modi in cui sono correlati.

Per variabili altamente correlate " sns.scatterplot(x = df['column_1'], y = df['column_2'])"

Trasformazione dei dati: a volte potremmo aver bisogno di trasformare i dati per renderli adatti all'analisi. Ciò può comportare il ridimensionamento o la normalizzazione dei dati, la conversione di variabili categoriche in variabili numeriche o la combinazione di variabili per creare nuove funzionalità.

Ridimensionamento: può aiutare a migliorare le prestazioni di alcuni modelli

Esistono alcuni modi per ridimensionare i set di dati come mix-max, scaler standard

Per la libreria di importazione dello scaler min-max " da sklearn.preprocessing import MinMaxScaler "

Per creare un oggetto scaler " scaler = MinMaxScaler() "

Adattare e trasformare i dati " scaled_data = scaler.fit_transform(df) "

Per riconvertire i dati ridimensionati in un DataFrame " df_scaled = pd.DataFrame(scaled_data, columns=df.columns) "

Per la libreria di importazione dello scaler standard " da sklearn.preprocessing import StandardScaler"

Per creare un oggetto scaler " scaler = StandardScaler() "

Adattare e trasformare i dati " scaled_data = scaler.fit_transform(df) "

Per riconvertire i dati ridimensionati in un DataFrame " df_scaled = pd.DataFrame(scaled_data, columns=df.columns) "

Conversione da categorico a numerico:

I dati categorici rappresentano caratteristiche o attributi, come sesso, razza, occupazione, colore e religione che non possono essere misurati quantitativamente.

Esistono diversi metodi per convertire i dati categorici in dati numerici, tra cui:

Codifica etichetta: in questo metodo, a ciascuna categoria viene assegnato un valore intero univoco. Ad esempio, se abbiamo una variabile categoriale chiamata "colore" con le categorie "rosso", "blu" e "verde", possiamo assegnare loro valori interi 0, 1 e 2 rispettivamente.

Per la codifica delle etichette importare la libreria " da sklearn.preprocessing import LabelEncoder"

Per la codifica " df['New_Col'] = LabelEncoder().fit_transform(df['Cat_col']) "

Codifica One-Hot: viene creata una nuova colonna binaria per ogni categoria. A ogni riga del set di dati viene assegnato il valore 1 nella colonna corrispondente alla relativa categoria e 0 in tutte le altre colonne. Ad esempio, se abbiamo una variabile categoriale chiamata "colore" con le categorie "rosso", "blu" e "verde", possiamo creare tre nuove colonne binarie chiamate "colore_rosso", "colore_blu" e "colore_verde".

Per la codifica One-Hot " one_hot_encoded = pd.get_dummies(df['cat_col'], prefix='cat_col')"

E

Aggiungi quella tabella One-Hot Encoded al frame di dati " df = pd.concat([df, one_hot_encoded], axis=1) "

E

Rilascia l'originale "df .drop(cat_col, axis=1, inplace=True)"

Codifica binaria: la variabile categoriale viene prima convertita in dati numerici utilizzando la codifica dell'etichetta. Quindi, ogni valore intero viene convertito in codice binario e le cifre binarie vengono utilizzate come caratteristiche. Ad esempio, se abbiamo una variabile categoriale chiamata "colore" con le categorie "rosso", "blu" e "verde", possiamo prima assegnarle rispettivamente i valori interi 0, 1 e 2 e poi convertirli in codice binario : 0 = 00, 1 = 01, 2 = 10. Le caratteristiche risultanti sarebbero "color_0_0", "color_0_1", "color_1_0" e così via.

Per la libreria insall " pip install category_encoders"

Per la codifica binaria, importare la libreria " import category_encoders as ce"

Per importare Excoding

“ codificatore = ce.BinaryEncoder(cols='Col_nam') ”

“ binary_encoded = encoder.fit_transform(df['Col_nam']) ”

Per aggiungere al set di dati originale " df = pd.concat([df, binary_encoded], axis=1) "

Elimina l'originale " data.drop(categorical_var, axis=1, inplace=True) "

Crea una nuova funzionalità: dipende totalmente dal set di dati e si basa sull'analisi che desideri eseguire.

Ecco alcuni esempi di aggiunta di funzionalità al nostro set di dati. Se disponiamo di un set di dati relativo al settore immobiliare. Per calcolare l'età di una casa in base alla sua data di costruzione, puoi sottrarre la data di costruzione dalla data corrente.

Per fare la differenza " now = datetime.now()", " df['age_of_house'] = (now — df['built_date']).astype('<m8[Y]') "

Modellazione dei dati: una volta completati i passaggi precedenti, possiamo quindi iniziare a costruire modelli per prevedere il risultato in base ai dati. Ciò comporta la selezione dell'algoritmo di apprendimento automatico appropriato e l'ottimizzazione dei suoi parametri per ottenere i migliori risultati.

In conclusione, l'EDA è un passaggio cruciale nella scienza dei dati che ci aiuta a comprendere i nostri dati e a prendere decisioni informate sulla base delle sue intuizioni. Seguendo i passaggi che ho delineato, puoi eseguire l'EDA sui tuoi dati e utilizzare le informazioni per costruire modelli predittivi efficaci.

Grazie per aver letto! Se hai trovato utile questo post, condividilo con i tuoi amici e colleghi in modo che anche loro possano trarne beneficio! Per rimanere aggiornato sui miei ultimi post, non dimenticare di iscriverti e seguirmi su YouTube , LinkedIn , Tableau Public e GitHub . Mi piacerebbe entrare in contatto con te e ascoltare i tuoi pensieri su questo argomento, quindi continuiamo la conversazione!

#Programmazione
#Istruzione
#Statistica

#Scienza dei dati
#python