Analisi esplorativa dei dati (EDA) | Introduzione all'EDA

Contenuti

Questo articolo è stato pubblicato nell'ambito del Blogathon sulla scienza dei dati

brutta copia. EDA è il processo di indagine del set di dati per scoprire modelli e anomalie (Valori atipici) e formulare ipotesi basate sulla nostra comprensione del set di dati.

L'EDA comporta la generazione di statistiche di riepilogo per i dati numerici nel set di dati e la creazione di varie rappresentazioni grafiche per comprendere meglio i dati.. In questo articolo, capiremo l'EDA con l'aiuto di un set di dati di esempio. noi useremo Chiodo idioma (panda biblioteca) per questo scopo.

shutterstock_330005462-5927184

Importazione di librerie

Inizieremo importando le librerie di cui avremo bisogno per eseguire EDA. Questi includono NumPy, panda, Matplotlib e Seaborn.

importa numpy come np
importa panda come pd
importa matplotlib.pyplot come plt
%matplotlib in linea
import seaborn come sns

Leggi i dati

Ora leggeremo i dati da un file CSV in un Pandas DataFrame. Puoi scarica il set di dati per tua referenza.

df = pd.read_csv(r'C:UtentiVipinData AnalyticsStudentiPerformance.csv')

Diamo un'occhiata a come appare il nostro set di dati usando df.head (). L'output dovrebbe essere simile a questo:

374571-8462784

Statistiche descrittive

Perfetto! I dati sembrano esattamente come volevamo. Puoi facilmente dirlo semplicemente guardando il set di dati che contiene dati su diversi studenti in una scuola / università e i loro punteggi in 3 soggetti. Iniziamo guardando il parametri Statistiche descrittive per il set di dati. Useremo descrivere () per questo.

df.descrivi(includi="Tutti")

Assegnando all'attributo di inclusione un valore di 'all', ci assicuriamo che anche le caratteristiche categoriali siano incluse nel risultato. L'output DataFrame dovrebbe essere simile a questo:

716222-6607907

Per parametri numerici, i campi sono stati riempiti come media, la deviazione standard, percentili e massimo. Per caratteristiche categoriali, il conteggio è stato completato, il solo, il superiore (valore più frequente) e la frequenza corrispondente. Questo ci dà un'idea ampia del nostro set di dati.

Attribuzione del valore mancante

Ora controlleremo se mancano i valori. nel nostro set di dati. In caso di biglietti mancanti, li imputeremo con i valori appropriati (modo in caso di caratteristica categoriale e mediano o media in caso di caratteristica numerica). Useremo la funzione isnull () per questo scopo.

df.isnull().somma()

Questo ci dirà quanti valori mancanti abbiamo in ogni colonna del nostro set di dati. L'uscita (Serie Panda) Dovrebbe sembrare come questo:

857853-6896282

Fortunatamente per noi, nessun valore mancante in questo set di dati. Ora procederemo ad analizzare questo set di dati, osservare i modelli e identificare i valori anomali con l'aiuto di grafici e figure.

Rappresentazione grafica

Inizieremo con Analisi invariate. Useremo a grafico a barre per questo scopo. Osserveremo la distribuzione degli studenti per genere, corsa / etnia, il loro stato di pranzo e se hanno o meno un corso di preparazione all'esame.

plt.sottotrama(221)

df['Genere'].value_counts().complotto(tipo='bar', titolo="Genere degli studenti", figsize=(16,9))

plt.xticks(rotazione=0)

plt.sottotrama(222)

df['razza/etnia'].value_counts().complotto(tipo='bar', titolo="Razza/etnia degli studenti")

plt.xticks(rotazione=0)

plt.sottotrama(223)

df['il pranzo'].value_counts().complotto(tipo='bar', titolo="Stato pranzo degli studenti")

plt.xticks(rotazione=0)

plt.sottotrama(224)

df['corso di preparazione alla prova'].value_counts().complotto(tipo='bar', titolo="Corso di preparazione al test")

plt.xticks(rotazione=0)

plt.mostra()

L'output dovrebbe essere simile a questo:

871114-3533076

Possiamo dedurre molte cose dal grafico. Ci sono più ragazze a scuola che ragazzi. La maggior parte degli studenti appartiene ai gruppi C e D. Più di 60% degli studenti ha un pranzo standard a scuola. Cosa c'è di più, più di 60% degli studenti non ha frequentato corsi di preparazione agli esami.

Continuando con l'analisi univariata, prossimo, faremo un trama a scatola delle colonne numeriche (punteggio di matematica, punteggio di lettura e punteggio di scrittura) nel set di dati. Un box plot ci aiuta a visualizzare i dati in termini di quartili. Identifica anche valori anomali nel set di dati, se ci fossero. Useremo la funzione boxplot () per questo.

df.boxplot()

L'output dovrebbe essere simile a questo:

1_df_boxplot-4708051

La porzione centrale rappresenta l'intervallo interquartile (IQR). La linea verde orizzontale al centro rappresenta la mediana dei dati. I cerchi vuoti vicino alle code rappresentano valori anomali nel set di dati. tuttavia, poiché è possibile che uno studente ottenga un punteggio estremamente basso in un test, non elimineremo questi valori atipici.

Ora faremo un trama di distribuzione dei punteggi di matematica degli studenti. Un grafico di distribuzione ci dice come sono distribuiti i dati. Useremo la funzione distplot.

sns.distplot(df["punteggio di matematica"])

La trama nell'output dovrebbe essere simile a questa:

2_distplot_math_score-6144861

Il grafico rappresenta da vicino una curva a campana perfetta. Il picco è intorno 65 punti, la media dei punteggi di matematica degli studenti nel set di dati. Un grafico di distribuzione simile può essere realizzato anche per la lettura e la scrittura delle partiture..

Ora vedremo la correlazione tra 3 punteggi con l'aiuto di a mappa di calore. Per questo, useremo la funzione corr () y mappa di calore () per questo esercizio.

corr = df.corr()
sns.heatmap(corretto, annot=Vero, quadrato=Vero)
plt.yticks(rotazione=0)
plt.mostra()

La trama nell'output dovrebbe essere simile a questa:

3_df_corr_heatmap-7200129

La mappa termica lo mostra 3 i punteggi sono altamente correlati. Il punteggio di lettura ha un coefficiente di correlazione di 0,95 con punteggio di scrittura. Il punteggio di matematica ha un coefficiente di correlazione di 0,82 con il punteggio di lettura e 0,80 con punteggio di scrittura.

Ora passiamo a Analisi bivariata. Ne esamineremo uno trama relazionale it Seaborn. Ci aiuta a capire la relazione tra 2 variabili in diversi sottoinsiemi del set di dati. Cercheremo di capire la relazione tra il punteggio di matematica e il punteggio di scrittura di studenti di sesso diverso.

sns.relplot(x='punteggio matematico', y='punteggio di scrittura', tonalità="Genere", dati=df)

La trama relazionale dovrebbe assomigliare a questa:

341724-9086863

Il grafico mostra una chiara differenza nei punteggi tra studenti maschi e femmine. Per lo stesso punteggio in matematica, le studentesse hanno maggiori probabilità di ottenere punteggi di scrittura più alti rispetto agli studenti maschi. tuttavia, per lo stesso punteggio di scrittura, ci si aspetta che gli studenti maschi ottengano punteggi più alti in matematica rispetto alle studentesse.

I grafici relazionali ci aiutano a eseguire analisi bivariate. Puoi fare riferimento alla documentazione della funzione relplot () it Seaborn qui.

Finalmente, analizzeremo le prestazioni degli studenti in matematica, lettura e scrittura in base al livello di istruzione dei tuoi genitori e al corso di preparazione all'esame. Primo, Diamo un'occhiata all'impatto del livello di istruzione dei genitori sul rendimento scolastico dei loro figli utilizzando a grafico a linee.

df.groupby("livello di istruzione dei genitori")[["punteggio di matematica", 'spartito di lettura', 'spartito di scrittura']].Significare().T.trama(figsize=(12,8))

L'output sarà simile a questo:

549346-3282871

È molto chiaro da questo grafico che gli studenti i cui genitori sono più istruiti di altri (Master, laurea triennale e associata) ottenere risultati migliori in media rispetto agli studenti i cui genitori hanno meno istruzione (Scuola superiore). Questa potrebbe essere una differenza genetica o semplicemente una differenza nell'ambiente domestico degli studenti. I genitori più istruiti hanno maggiori probabilità di spingere i loro studenti verso gli studi.

Al secondo posto, Diamo un'occhiata all'impatto del corso di preparazione al test sulle prestazioni degli studenti utilizzando a grafico a barre orizzontali.

df.groupby('corso di preparazione alla prova')[["punteggio di matematica", 'spartito di lettura', 'spartito di scrittura']].Significare().T.trama(gentile='barh', figsize=(10,10))

L'output dovrebbe essere simile a questo:

371065-3169059

Un'altra volta, è molto chiaro che gli studenti che hanno completato il corso di preparazione all'esame hanno ottenuto risultati migliori, in media, rispetto agli studenti che non hanno optato per il corso.

Note finali

In questo articolo, abbiamo capito il significato di Exploratory Data Analysis (EDA) con l'aiuto di un set di dati di esempio. Vediamo come possiamo analizzare il set di dati, trarne conclusioni e formulare un'ipotesi basata su questo.

L'autore di questo articolo è Vishesh Arora. Puoi connetterti con me su LinkedIn.

Il supporto mostrato in questo articolo non è di proprietà di DataPeaker e viene utilizzato a discrezione dell'autore.

Iscriviti alla nostra Newsletter

Non ti invieremo posta SPAM. Lo odiamo quanto te.