Analisi dei dati con Python
In questo articolo discuteremo come eseguire l'analisi dei dati con Python. Discuteremo tutti i tipi di analisi dei dati, ad esempio l'analisi dei dati numerici con NumPy, i dati tabulari con Panda, la visualizzazione dei dati Matplotlib e l'analisi esplorativa dei dati.
Analisi dei dati con Python
Analisi dei dati è la tecnica di raccolta, trasformazione e organizzazione dei dati per fare previsioni future e prendere decisioni informate basate sui dati. Aiuta anche a trovare possibili soluzioni per un problema aziendale. Ci sono sei passaggi per l'analisi dei dati. Sono:
- Chiedi o specifica i requisiti dei dati
- Preparare o raccogliere dati
- Pulisci ed elabora
- Analizzare
- Condividere
- Agire o riferire
Analisi dei dati con Python
Nota: Per saperne di più su questi passaggi fare riferimento al ns NumPy è un pacchetto di elaborazione di array in Python e fornisce un oggetto array multidimensionale ad alte prestazioni e strumenti per lavorare con questi array. È il pacchetto fondamentale per il calcolo scientifico con Python.
Array in NumPy
Array NumPy è una tabella di elementi (solitamente numeri), tutti dello stesso tipo, indicizzati da una tupla di numeri interi positivi. In Numpy, il numero di dimensioni dell'array è chiamato rango dell'array. Una tupla di numeri interi che fornisce la dimensione dell'array lungo ciascuna dimensione è nota come forma dell'array.
Creazione dell'array NumPy
Gli array NumPy possono essere creati in diversi modi, con vari ranghi. Può anche essere creato utilizzando diversi tipi di dati come liste, tuple, ecc. Il tipo dell'array risultante viene dedotto dal tipo di elementi nelle sequenze. NumPy offre diverse funzioni per creare array con contenuto segnaposto iniziale. Questi riducono al minimo la necessità di ampliare gli array, un'operazione costosa.
Crea array utilizzando numpy.empty(forma, dtype=float, ordine='C')
Python3import numpy as np b = np.empty(2, dtype = int) print('Matrix b :
', b) a = np.empty([2, 2], dtype = int) print('
Matrix a :
', a) c = np.empty([3, 3]) print('
Matrix c :
', c) Produzione:
Matrice vuota usando i panda
Crea array utilizzando numpy.zeros(forma, dtype = Nessuno, ordine = 'C')
Python3import numpy as np b = np.zeros(2, dtype = int) print('Matrix b :
', b) a = np.zeros([2, 2], dtype = int) print('
Matrix a :
', a) c = np.zeros([3, 3]) print('
Matrix c :
', c) Produzione:
Matrix b : [0 0] Matrix a : [[0 0] [0 0]] Matrix c : [[0. 0. 0.] [0. 0. 0.] [0. 0. 0.]]
Operazioni su array Numpy
Operazioni aritmetiche
- Aggiunta:
import numpy as np # Defining both the matrices a = np.array([5, 72, 13, 100]) b = np.array([2, 5, 10, 30]) # Performing addition using arithmetic operator add_ans = a+b print(add_ans) # Performing addition using numpy function add_ans = np.add(a, b) print(add_ans) # The same functions and operations can be used for # multiple matrices c = np.array([1, 2, 3, 4]) add_ans = a+b+c print(add_ans) add_ans = np.add(a, b, c) print(add_ans)
Produzione:
[ 7 77 23 130] [ 7 77 23 130] [ 8 79 26 134] [ 7 77 23 130]
- Sottrazione:
import numpy as np # Defining both the matrices a = np.array([5, 72, 13, 100]) b = np.array([2, 5, 10, 30]) # Performing subtraction using arithmetic operator sub_ans = a-b print(sub_ans) # Performing subtraction using numpy function sub_ans = np.subtract(a, b) print(sub_ans)
Produzione:
[ 3 67 3 70] [ 3 67 3 70]
- Moltiplicazione:
import numpy as np # Defining both the matrices a = np.array([5, 72, 13, 100]) b = np.array([2, 5, 10, 30]) # Performing multiplication using arithmetic # operator mul_ans = a*b print(mul_ans) # Performing multiplication using numpy function mul_ans = np.multiply(a, b) print(mul_ans)
Produzione:
[ 10 360 130 3000] [ 10 360 130 3000]
- Divisione:
import numpy as np # Defining both the matrices a = np.array([5, 72, 13, 100]) b = np.array([2, 5, 10, 30]) # Performing division using arithmetic operators div_ans = a/b print(div_ans) # Performing division using numpy functions div_ans = np.divide(a, b) print(div_ans)
Produzione:
[ 2.5 14.4 1.3 3.33333333] [ 2.5 14.4 1.3 3.33333333]
Per maggiori informazioni consultare la ns NumPy – Tutorial sulle operazioni aritmetiche
Indicizzazione dell'array NumPy
Indicizzazione può essere fatto in NumPy utilizzando un array come indice. Nel caso della sezione, viene restituita una vista o una copia superficiale dell'array, ma nell'array dell'indice viene restituita una copia dell'array originale. Gli array Numpy possono essere indicizzati con altri array o qualsiasi altra sequenza ad eccezione delle tuple. L'ultimo elemento è indicizzato di -1 secondo, ultimo di -2 e così via.
Indicizzazione di array Python NumPy
Python3# Python program to demonstrate # the use of index arrays. import numpy as np # Create a sequence of integers from # 10 to 1 with a step of -2 a = np.arange(10, 1, -2) print('
A sequential array with a negative step:
',a) # Indexes are specified inside the np.array method. newarr = a[np.array([3, 1, 2 ])] print('
Elements at these indices are:
',newarr) Produzione:
A sequential array with a negative step: [10 8 6 4 2] Elements at these indices are: [4 8 6]
Affettatura dell'array NumPy
Considera la sintassi x[obj] dove x è l'array e obj è l'indice. L'oggetto slice è l'indice nel caso di affettatura di base . L'affettamento di base si verifica quando obj è:
- un oggetto fetta che ha la forma start: stop: step
- un numero intero
- o una tupla di oggetti sezione e numeri interi
Tutti gli array generati dall'affettamento di base sono sempre la vista nell'array originale.
Python3# Python program for basic slicing. import numpy as np # Arrange elements from 0 to 19 a = np.arange(20) print('
Array is:
',a) # a[start:stop:step] print('
a[-8:17:1] = ',a[-8:17:1]) # The : operator means all elements till the end. print('
a[10:] = ',a[10:]) Produzione:
Array is: [ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19] a[-8:17:1] = [12 13 14 15 16] a[10:] = [10 11 12 13 14 15 16 17 18 19]
I puntini di sospensione possono essere utilizzati anche insieme all'affettatura di base. I puntini di sospensione (...) sono il numero di : oggetti necessari per creare una tupla di selezione della stessa lunghezza delle dimensioni dell'array.
Python3# Python program for indexing using basic slicing with ellipsis import numpy as np # A 3 dimensional array. b = np.array([[[1, 2, 3],[4, 5, 6]], [[7, 8, 9],[10, 11, 12]]]) print(b[...,1]) #Equivalent to b[: ,: ,1 ]
Produzione:
[[ 2 5] [ 8 11]]
Trasmissione di array NumPy
Il termine trasmissione si riferisce al modo in cui Numpy tratta gli array con dimensioni diverse durante le operazioni aritmetiche che portano a determinati vincoli, l'array più piccolo viene trasmesso attraverso l'array più grande in modo che abbiano forme compatibili.
Supponiamo di avere un set di dati di grandi dimensioni, ogni dato è un elenco di parametri. In Numpy abbiamo un array 2D, dove ogni riga è un dato e il numero di righe è la dimensione del set di dati. Supponiamo di voler applicare una sorta di ridimensionamento a tutti questi dati, ogni parametro ottiene il proprio fattore di scala o dire che ogni parametro viene moltiplicato per un fattore.
Giusto per avere una comprensione più chiara, contiamo le calorie negli alimenti utilizzando una ripartizione dei macronutrienti. In parole povere, le parti caloriche del cibo sono costituite da grassi (9 calorie per grammo), proteine (4 CPG) e carboidrati (4 CPG). Quindi, se elenchiamo alcuni alimenti (i nostri dati) e per ogni alimento elenchiamo la ripartizione dei macronutrienti (parametri), possiamo quindi moltiplicare ciascun nutriente per il suo valore calorico (applicare il ridimensionamento) per calcolare la ripartizione calorica di ogni alimento.
Con questa trasformazione, ora possiamo calcolare tutti i tipi di informazioni utili. Ad esempio, qual è il numero totale di calorie presenti in alcuni alimenti oppure, analizzando la mia cena, sapere quante calorie ho ottenuto dalle proteine e così via.
Vediamo un modo ingenuo di produrre questo calcolo con Numpy:
Python3import numpy as np macros = np.array([ [0.8, 2.9, 3.9], [52.4, 23.6, 36.5], [55.2, 31.7, 23.9], [14.4, 11, 4.9] ]) # Create a new array filled with zeros, # of the same shape as macros. result = np.zeros_like(macros) cal_per_macro = np.array([3, 3, 8]) # Now multiply each row of macros by # cal_per_macro. In Numpy, `*` is # element-wise multiplication between two arrays. for i in range(macros.shape[0]): result[i, :] = macros[i, :] * cal_per_macro result
Produzione:
array([[ 2.4, 8.7, 31.2], [157.2, 70.8, 292. ], [165.6, 95.1, 191.2], [ 43.2, 33. , 39.2]])
Regole di trasmissione: La trasmissione di due array insieme segue queste regole:
- Se gli array non hanno lo stesso rango, anteporre 1 alla forma dell'array di rango inferiore finché entrambe le forme non hanno la stessa lunghezza.
- I due array sono compatibili in una dimensione se hanno la stessa dimensione nella dimensione o se uno degli array ha dimensione 1 in quella dimensione.
- Gli array possono essere trasmessi insieme se sono compatibili con tutte le dimensioni.
- Dopo la trasmissione, ogni array si comporta come se avesse una forma uguale al massimo delle forme in termini di elemento dei due array di input.
- In qualsiasi dimensione in cui una matrice ha una dimensione pari a 1 e l'altra matrice ha una dimensione maggiore di 1, la prima matrice si comporta come se fosse copiata lungo quella dimensione.
import numpy as np v = np.array([12, 24, 36]) w = np.array([45, 55]) # To compute an outer product we first # reshape v to a column vector of shape 3x1 # then broadcast it against w to yield an output # of shape 3x2 which is the outer product of v and w print(np.reshape(v, (3, 1)) * w) X = np.array([[12, 22, 33], [45, 55, 66]]) # x has shape 2x3 and v has shape (3, ) # so they broadcast to 2x3, print(X + v) # Add a vector to each column of a matrix X has # shape 2x3 and w has shape (2, ) If we transpose X # then it has shape 3x2 and can be broadcast against w # to yield a result of shape 3x2. # Transposing this yields the final result # of shape 2x3 which is the matrix. print((X.T + w).T) # Another solution is to reshape w to be a column # vector of shape 2X1 we can then broadcast it # directly against X to produce the same output. print(X + np.reshape(w, (2, 1))) # Multiply a matrix by a constant, X has shape 2x3. # Numpy treats scalars as arrays of shape(); # these can be broadcast together to shape 2x3. print(X * 2)
Produzione:
[[ 540 660] [1080 1320] [1620 1980]] [[ 24 46 69] [ 57 79 102]] [[ 57 67 78] [100 110 121]] [[ 57 67 78] [100 110 121]] [[ 24 44 66] [ 90 110 132]]
Nota: Per maggiori informazioni consultare la ns Tutorial su Python NumPy .
Analisi dei dati utilizzando Panda
Python Pandas Viene utilizzato per dati relazionali o etichettati e fornisce varie strutture dati per manipolare tali dati e serie temporali. Questa libreria è costruita sulla libreria NumPy. Questo modulo viene generalmente importato come:
import pandas as pd
Qui, pd è indicato come l'alias dei Panda. Tuttavia, non è necessario importare la libreria utilizzando l'alias, aiuta semplicemente a scrivere meno codice ogni volta che viene chiamato un metodo o una proprietà. I panda generalmente forniscono due strutture dati per la manipolazione dei dati, che sono:
- Serie
- Dataframe
Serie:
Serie Panda è un array etichettato unidimensionale in grado di contenere dati di qualsiasi tipo (interi, stringhe, float, oggetti Python, ecc.). Le etichette degli assi sono chiamate collettivamente indici. La serie Panda non è altro che una colonna in un foglio Excel. Le etichette non devono essere univoche ma devono essere di tipo hashable. L'oggetto supporta sia l'indicizzazione su numeri interi che quella basata su etichette e fornisce una serie di metodi per eseguire operazioni che coinvolgono l'indice.
Serie Panda
Può essere creato utilizzando la funzione Series() caricando il set di dati dall'archivio esistente come SQL, database, file CSV, file Excel, ecc. O da strutture dati come elenchi, dizionari, ecc.
Panda Python che creano serie
Python3import pandas as pd import numpy as np # Creating empty series ser = pd.Series() print(ser) # simple array data = np.array(['g', 'e', 'e', 'k', 's']) ser = pd.Series(data) print(ser)
Produzione:
serie Pnada
Telaio dati:
Panda DataFrame è una struttura di dati tabellari bidimensionali con dimensioni variabili e potenzialmente eterogenee con assi etichettati (righe e colonne). Un frame di dati è una struttura di dati bidimensionale, ovvero i dati sono allineati in modo tabellare in righe e colonne. Pandas DataFrame è costituito da tre componenti principali: dati, righe e colonne.
Panda Dataframe
Può essere creato utilizzando il metodo Dataframe() e, proprio come una serie, può anche provenire da diversi tipi di file e strutture dati.
Panda Python che creano Dataframe
Python3import pandas as pd # Calling DataFrame constructor df = pd.DataFrame() print(df) # list of strings lst = ['Geeks', 'For', 'Geeks', 'is', 'portal', 'for', 'Geeks'] # Calling DataFrame constructor on list df = pd.DataFrame(lst) df
Produzione:
Creazione di Dataframe dall'elenco Python
Creazione di Dataframe da CSV
Noi possiamo creare un dataframe dal CSV file utilizzando il file leggi_csv() funzione.
I panda Python leggono CSV
Python3import pandas as pd # Reading the CSV file df = pd.read_csv('Iris.csv') # Printing top 5 rows df.head() Produzione:
capo di un dataframe
Filtraggio di DataFrame
Panda dataframe.filtro() la funzione viene utilizzata per sottoimpostare righe o colonne di dataframe in base alle etichette nell'indice specificato. Tieni presente che questa routine non filtra un dataframe in base al suo contenuto. Il filtro viene applicato alle etichette dell'indice.
Dataframe del filtro Python Pandas
Python3import pandas as pd # Reading the CSV file df = pd.read_csv('Iris.csv') # applying filter function df.filter(['Species', 'SepalLengthCm', 'SepalLengthCm']).head() Produzione:
Applicazione del filtro al set di dati
Ordinamento di DataFrame
Per ordinare il frame di dati nei panda, la funzione sort_values() si usa. Panda sort_values() può ordinare il frame di dati in ordine crescente o decrescente.
Python Panda ordina i dataframe in ordine crescente
Produzione:
Set di dati ordinato in base al valore di una colonna
Gruppo PandaBy
Raggruppa per è un concetto piuttosto semplice. Possiamo creare un raggruppamento di categorie e applicare una funzione alle categorie. Nei progetti di data science reali, avrai a che fare con grandi quantità di dati e proverai cose ancora e ancora, quindi per motivi di efficienza utilizziamo il concetto di Groupby. Groupby si riferisce principalmente a un processo che coinvolge uno o più dei seguenti passaggi che sono:
- Divisione: È un processo in cui dividiamo i dati in gruppi applicando alcune condizioni ai set di dati.
- Applicazione: È un processo in cui applichiamo una funzione a ciascun gruppo in modo indipendente.
- Combinazione: È un processo in cui combiniamo diversi set di dati dopo aver applicato groupby e risultati in una struttura di dati.
L'immagine seguente aiuterà a comprendere il processo coinvolto nel concetto di Groupby.
1. Raggruppare i valori univoci dalla colonna Team
Metodo Pandas Groupby
2. Ora c'è un secchio per ogni gruppo
3. Getta gli altri dati nei contenitori
4. Applicare una funzione sulla colonna del peso di ciascun contenitore.
Applicazione della funzione sulla colonna del peso di ciascuna colonna
Python Panda GroupBy
Python3# importing pandas module import pandas as pd # Define a dictionary containing employee data data1 = {'Name': ['Jai', 'Anuj', 'Jai', 'Princi', 'Gaurav', 'Anuj', 'Princi', 'Abhi'], 'Age': [27, 24, 22, 32, 33, 36, 27, 32], 'Address': ['Nagpur', 'Kanpur', 'Allahabad', 'Kannuaj', 'Jaunpur', 'Kanpur', 'Allahabad', 'Aligarh'], 'Qualification': ['Msc', 'MA', 'MCA', 'Phd', 'B.Tech', 'B.com', 'Msc', 'MA']} # Convert the dictionary into DataFrame df = pd.DataFrame(data1) print('Original Dataframe') display(df) # applying groupby() function to # group the data on Name value. gk = df.groupby('Name') # Let's print the first entries # in all the groups formed. print('After Creating Groups') gk.first() Produzione:
panda groupby
Applicazione della funzione al gruppo:
Dopo aver suddiviso un dato in un gruppo, applichiamo una funzione a ciascun gruppo per fare ciò eseguiamo alcune operazioni che sono:
- Aggregazione: È un processo in cui calcoliamo una statistica (o statistiche) riassuntiva su ciascun gruppo. Ad esempio, Calcola somme o medie del gruppo
- Trasformazione: È un processo in cui eseguiamo alcuni calcoli specifici del gruppo e restituiamo un valore indicizzato simile. Ad esempio, compilando le NA all'interno dei gruppi con un valore derivato da ciascun gruppo
- Filtrazione: È un processo in cui scartiamo alcuni gruppi, secondo un calcolo a livello di gruppo che valuta Vero o Falso. Ad esempio, filtraggio dei dati in base alla somma o alla media del gruppo
Aggregazione dei panda
Aggregazione è un processo in cui calcoliamo una statistica riassuntiva su ciascun gruppo. La funzione aggregata restituisce un singolo valore aggregato per ciascun gruppo. Dopo aver suddiviso i dati in gruppi utilizzando la funzione groupby, è possibile eseguire diverse operazioni di aggregazione sui dati raggruppati.
Aggregazione di Python Panda
Python3# importing pandas module import pandas as pd # importing numpy as np import numpy as np # Define a dictionary containing employee data data1 = {'Name': ['Jai', 'Anuj', 'Jai', 'Princi', 'Gaurav', 'Anuj', 'Princi', 'Abhi'], 'Age': [27, 24, 22, 32, 33, 36, 27, 32], 'Address': ['Nagpur', 'Kanpur', 'Allahabad', 'Kannuaj', 'Jaunpur', 'Kanpur', 'Allahabad', 'Aligarh'], 'Qualification': ['Msc', 'MA', 'MCA', 'Phd', 'B.Tech', 'B.com', 'Msc', 'MA']} # Convert the dictionary into DataFrame df = pd.DataFrame(data1) # performing aggregation using # aggregate method grp1 = df.groupby('Name') grp1.aggregate(np.sum) Produzione:
Utilizzo della funzione di somma aggregata sul set di dati
Concatenazione di DataFrame
Per concatenare il dataframe, utilizziamo concat() funzione che aiuta a concatenare il dataframe. Questa funzione esegue tutto il lavoro pesante relativo all'esecuzione di operazioni di concatenazione insieme a un asse di oggetti Panda mentre esegue la logica di insieme opzionale (unione o intersezione) degli indici (se presenti) sugli altri assi.
I panda Python concatenano i dataframe
Python3# importing pandas module import pandas as pd # Define a dictionary containing employee data data1 = {'key': ['K0', 'K1', 'K2', 'K3'], 'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'], 'Age':[27, 24, 22, 32],} # Define a dictionary containing employee data data2 = {'key': ['K0', 'K1', 'K2', 'K3'], 'Address':['Nagpur', 'Kanpur', 'Allahabad', 'Kannuaj'], 'Qualification':['Btech', 'B.A', 'Bcom', 'B.hons']} # Convert the dictionary into DataFrame df = pd.DataFrame(data1) # Convert the dictionary into DataFrame df1 = pd.DataFrame(data2) display(df, df1) # combining series and dataframe res = pd.concat([df, df1], axis=1) res Produzione:
Unione di DataFrame
Quando dobbiamo combinare DataFrame molto grandi, i join rappresentano un modo efficace per eseguire rapidamente queste operazioni. I join possono essere eseguiti solo su due DataFrame alla volta, indicati come tabelle sinistra e destra. La chiave è la colonna comune su cui verranno uniti i due DataFrame. È buona norma utilizzare chiavi con valori univoci in tutta la colonna per evitare la duplicazione involontaria dei valori delle righe. I panda forniscono un'unica funzione, unisci() , come punto di ingresso per tutte le operazioni di join di database standard tra oggetti DataFrame.
Esistono quattro modi fondamentali per gestire il join (interno, sinistro, destro ed esterno), a seconda di quali righe devono conservare i propri dati.
I panda Python uniscono Dataframe
Python3# importing pandas module import pandas as pd # Define a dictionary containing employee data data1 = {'key': ['K0', 'K1', 'K2', 'K3'], 'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'], 'Age':[27, 24, 22, 32],} # Define a dictionary containing employee data data2 = {'key': ['K0', 'K1', 'K2', 'K3'], 'Address':['Nagpur', 'Kanpur', 'Allahabad', 'Kannuaj'], 'Qualification':['Btech', 'B.A', 'Bcom', 'B.hons']} # Convert the dictionary into DataFrame df = pd.DataFrame(data1) # Convert the dictionary into DataFrame df1 = pd.DataFrame(data2) display(df, df1) # using .merge() function res = pd.merge(df, df1, on='key') res Produzione:
Concatenazione di due set di dati
Partecipazione a DataFrame
Per unirci al dataframe, utilizziamo .giuntura() funzione questa funzione viene utilizzata per combinare le colonne di due DataFrame potenzialmente indicizzati in modo diverso in un unico DataFrame risultato.
I panda Python si uniscono a Dataframe
Python3# importing pandas module import pandas as pd # Define a dictionary containing employee data data1 = {'Name':['Jai', 'Princi', 'Gaurav', 'Anuj'], 'Age':[27, 24, 22, 32]} # Define a dictionary containing employee data data2 = {'Address':['Allahabad', 'Kannuaj', 'Allahabad', 'Kannuaj'], 'Qualification':['MCA', 'Phd', 'Bcom', 'B.hons']} # Convert the dictionary into DataFrame df = pd.DataFrame(data1,index=['K0', 'K1', 'K2', 'K3']) # Convert the dictionary into DataFrame df1 = pd.DataFrame(data2, index=['K0', 'K2', 'K3', 'K4']) display(df, df1) # joining dataframe res = df.join(df1) res Produzione:
Unione di due set di dati
Per maggiori informazioni consultare la ns Panda che si uniscono, si uniscono e si concatenano tutorial
Per una guida completa sui Panda fate riferimento alla ns Tutorial sui panda .
Visualizzazione con Matplotlib
Matplotlib è facile da usare ed è una straordinaria libreria di visualizzazione in Python. È costruito su array NumPy e progettato per funzionare con lo stack SciPy più ampio e consiste di diversi grafici come linea, barra, dispersione, istogramma, ecc.
Pyplot
Pyplot è un modulo Matplotlib che fornisce un'interfaccia simile a MATLAB. Pyplot fornisce funzioni che interagiscono con la figura, ad esempio crea una figura, decora la trama con etichette e crea un'area di tracciamento in una figura.
Python3# Python program to show pyplot module import matplotlib.pyplot as plt plt.plot([1, 2, 3, 4], [1, 4, 9, 16]) plt.axis([0, 6, 0, 20]) plt.show()
Produzione:
Grafico a barre
UN trama della barra o grafico a barre è un grafico che rappresenta la categoria di dati con barre rettangolari con lunghezze e altezze proporzionali ai valori che rappresentano. I grafici a barre possono essere tracciati orizzontalmente o verticalmente. Un grafico a barre descrive i confronti tra le categorie distinte. Può essere creato utilizzando il metodo bar().
Grafico a barre Matplotlib Python
Qui utilizzeremo solo il set di dati dell'iride
Python3import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv('Iris.csv') # This will plot a simple bar chart plt.bar(df['Species'], df['SepalLengthCm']) # Title to the plot plt.title('Iris Dataset') # Adding the legends plt.legend(['bar']) plt.show() Produzione:
Grafico a barre utilizzando la libreria matplotlib
Istogrammi
UN istogramma è fondamentalmente utilizzato per rappresentare i dati sotto forma di alcuni gruppi. È un tipo di grafico a barre in cui l'asse X rappresenta gli intervalli dei contenitori mentre l'asse Y fornisce informazioni sulla frequenza. Per creare un istogramma, il primo passo è creare un contenitore degli intervalli, quindi distribuire l'intero intervallo di valori in una serie di intervalli e contare i valori che rientrano in ciascuno degli intervalli. I contenitori sono chiaramente identificati come intervalli di variabili consecutivi e non sovrapposti. IL storia() la funzione viene utilizzata per calcolare e creare un istogramma di x.
Istogramma Python Matplotlib
Python3import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv('Iris.csv') plt.hist(df['SepalLengthCm']) # Title to the plot plt.title('Histogram') # Adding the legends plt.legend(['SepalLengthCm']) plt.show() Produzione:
Histplot utilizzando la libreria matplotlib
Grafico a dispersione
I grafici a dispersione vengono utilizzati per osservare la relazione tra le variabili e utilizzano i punti per rappresentare la relazione tra loro. IL dispersione() Il metodo nella libreria matplotlib viene utilizzato per disegnare un grafico a dispersione.
Grafico a dispersione Python Matplotlib
Python3import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv('Iris.csv') plt.scatter(df['Species'], df['SepalLengthCm']) # Title to the plot plt.title('Scatter Plot') # Adding the legends plt.legend(['SepalLengthCm']) plt.show() Produzione:
Grafico a dispersione utilizzando la libreria matplotlib
Trama a scatola
UN trama a scatola ,Correlazione nota anche come diagramma a scatola e baffi. È un'ottima rappresentazione visiva quando si tratta di misurare la distribuzione dei dati. Traccia chiaramente i valori mediani, i valori anomali e i quartili. Comprendere la distribuzione dei dati è un altro fattore importante che porta a una migliore costruzione del modello. Se i dati presentano valori anomali, il box plot è un metodo consigliato per identificarli e intraprendere le azioni necessarie. Il grafico a scatola e baffi mostra la distribuzione dei dati. Nel grafico sono generalmente incluse cinque informazioni
- Il minimo è mostrato all’estrema sinistra del grafico, alla fine del “baffo” sinistro
- Il primo quartile, Q1, è l'estrema sinistra della scatola (baffo sinistro)
- La mediana è mostrata come una linea al centro del riquadro
- Terzo quartile, Q3, mostrato all'estrema destra del riquadro (baffo destro)
- Il massimo è all'estrema destra della casella
Rappresentazione del box plot
Intervallo interquartile
Illustrare il box plot
Grafico a scatola Python Matplotlib
Python3import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv('Iris.csv') plt.boxplot(df['SepalWidthCm']) # Title to the plot plt.title('Box Plot') # Adding the legends plt.legend(['SepalWidthCm']) plt.show() Produzione:
Boxplot utilizzando la libreria matplotlib
Mappe di calore di correlazione
Una mappa termica 2D è uno strumento di visualizzazione dei dati che aiuta a rappresentare l'entità del fenomeno sotto forma di colori. Una mappa termica di correlazione è una mappa termica che mostra una matrice di correlazione 2D tra due dimensioni discrete, utilizzando celle colorate per rappresentare i dati solitamente da una scala monocromatica. I valori della prima dimensione vengono visualizzati come righe della tabella mentre la seconda dimensione è una colonna. Il colore della cella è proporzionale al numero di misurazioni che corrispondono al valore dimensionale. Ciò rende le mappe di calore di correlazione ideali per l'analisi dei dati poiché rende i modelli facilmente leggibili ed evidenzia le differenze e le variazioni negli stessi dati. Una mappa termica di correlazione, come una normale mappa termica, è assistita da una barra colorata che rende i dati facilmente leggibili e comprensibili.
Nota: I dati qui devono essere passati con il metodo corr() per generare una mappa termica di correlazione. Inoltre, corr() stessa elimina le colonne che non saranno utili durante la generazione di una mappa termica di correlazione e seleziona quelle che possono essere utilizzate.
Mappa termica di correlazione Python Matplotlib
Python3import matplotlib.pyplot as plt import pandas as pd df = pd.read_csv('Iris.csv') plt.imshow(df.corr() , cmap = 'autumn' , interpolation = 'nearest' ) plt.title('Heat Map') plt.show() Produzione:
Mappa termica utilizzando la libreria matplotlib
Per ulteriori informazioni sulla visualizzazione dei dati fare riferimento ai nostri tutorial seguenti:
- Nota: Utilizzeremo Iris Dataset.
Ottenere informazioni sul set di dati
Utilizzeremo il parametro shape per ottenere la forma del set di dati.
Forma del dataframe
Python3df.shapeProduzione:
(150, 6)Possiamo vedere che il dataframe contiene 6 colonne e 150 righe.
Nota: Utilizzeremo Iris Dataset.
Ottenere informazioni sul set di dati
Ora passiamo anche alle colonne e ai relativi tipi di dati. Per questo utilizzeremo il file informazioni() metodo.
Informazioni sul set di dati
Python3df.info()Produzione:
![]()
informazioni sul set di dati
Possiamo vedere che solo una colonna contiene dati categorici e tutte le altre colonne sono di tipo numerico con voci non nulle.
Otteniamo un rapido riepilogo statistico del set di dati utilizzando il file descrivere() metodo. La funzione description() applica calcoli statistici di base al set di dati come valori estremi, conteggio della deviazione standard dei punti dati, ecc. Qualsiasi valore mancante o valore NaN viene automaticamente saltato. la funzione description() fornisce una buona immagine della distribuzione dei dati.
Descrizione del set di dati
Python3df.describe()Produzione:
![]()
Descrizione del set di dati
Possiamo vedere il conteggio di ciascuna colonna insieme al valore medio, alla deviazione standard, ai valori minimo e massimo.
Controllo dei valori mancanti
Controlleremo se i nostri dati contengono valori mancanti o meno. I valori mancanti possono verificarsi quando non vengono fornite informazioni per uno o più articoli o per un'intera unità. Utilizzeremo il è zero() metodo.
codice Python per valore mancante
Python3df.isnull().sum()Produzione:
![]()
Valori mancanti nel set di dati
Possiamo vedere che nessuna colonna ha valori mancanti.
Controllo dei duplicati
Vediamo se il nostro set di dati contiene duplicati o meno. Panda drop_duplicates() Il metodo aiuta a rimuovere i duplicati dal frame di dati.
Funzione Panda per valori mancanti
Python3data = df.drop_duplicates(subset ='Species',) dataProduzione:
![]()
Eliminazione del valore duplicato nel set di dati
Possiamo vedere che ci sono solo tre specie uniche. Vediamo se il set di dati è bilanciato o meno, ovvero tutte le specie contengono la stessa quantità di righe oppure no. Utilizzeremo il Series.value_counts() funzione. Questa funzione restituisce una serie contenente conteggi di valori univoci.
Codice Python per i conteggi dei valori nella colonna
Python3df.value_counts('Species')Produzione:
![]()
conteggio dei valori nel set di dati
Possiamo vedere che tutte le specie contengono lo stesso numero di righe, quindi non dovremmo eliminare nessuna voce.
Relazione tra variabili
Vedremo la relazione tra la lunghezza del sepalo e la larghezza del sepalo e anche tra la lunghezza e la larghezza del petalo.
Confronto tra lunghezza e larghezza dei sepali
Python3# importing packages import seaborn as sns import matplotlib.pyplot as plt sns.scatterplot(x='SepalLengthCm', y='SepalWidthCm', hue='Species', data=df, ) # Placing Legend outside the Figure plt.legend(bbox_to_anchor=(1, 1), loc=2) plt.show()Produzione:
![]()
Grafico a dispersione utilizzando la libreria matplotlib
Dalla trama sopra, possiamo dedurre che:
- La specie Setosa ha lunghezze dei sepali inferiori ma larghezze dei sepali maggiori.
- La specie Versicolor si trova a metà tra le altre due specie in termini di lunghezza e larghezza dei sepali
- La specie Virginica ha lunghezze dei sepali maggiori ma larghezze dei sepali minori.
Confronto tra lunghezza e larghezza del petalo
Python3# importing packages import seaborn as sns import matplotlib.pyplot as plt sns.scatterplot(x='PetalLengthCm', y='PetalWidthCm', hue='Species', data=df, ) # Placing Legend outside the Figure plt.legend(bbox_to_anchor=(1, 1), loc=2) plt.show()Produzione:
![]()
lunghezza del petalo del diagramma sactter
Dalla trama sopra, possiamo dedurre che:
- La specie Setosa ha lunghezze e larghezze dei petali inferiori.
- La specie Versicolor si trova a metà tra le altre due specie in termini di lunghezza e larghezza dei petali
- La specie Virginica ha i petali più lunghi e larghi.
Tracciamo tutte le relazioni della colonna utilizzando un diagramma di coppia. Può essere utilizzato per l'analisi multivariata.
Codice Python per il diagramma di coppia
Python3# importing packages import seaborn as sns import matplotlib.pyplot as plt sns.pairplot(df.drop(['Id'], axis = 1), hue='Species', height=2)Produzione:
Pairplot per il set di dati
Possiamo vedere molti tipi di relazioni da questa trama, ad esempio la specie Seotsa ha la larghezza e la lunghezza dei petali più piccole. Ha anche la lunghezza dei sepali più piccola ma larghezze dei sepali maggiori. Tali informazioni possono essere raccolte su qualsiasi altra specie.
Gestione della correlazione
Panda dataframe.corr() viene utilizzato per trovare la correlazione a coppie di tutte le colonne nel dataframe. Eventuali valori NA vengono automaticamente esclusi. Qualsiasi colonna con tipo di dati non numerico nel dataframe viene ignorata.
Esempio:
Python3data.corr(method='pearson')Produzione:
![]()
correlazione tra le colonne nel set di dati
Mappe di calore
La mappa termica è una tecnica di visualizzazione dei dati utilizzata per analizzare il set di dati come colori in due dimensioni. Fondamentalmente, mostra una correlazione tra tutte le variabili numeriche nel set di dati. In termini più semplici, possiamo tracciare la correlazione sopra trovata utilizzando le mappe di calore.
codice Python per mappa termica
Python3# importing packages import seaborn as sns import matplotlib.pyplot as plt sns.heatmap(df.corr(method='pearson').drop( ['Id'], axis=1).drop(['Id'], axis=0), annot = True); plt.show()Produzione:
![]()
Mappa termica per la correlazione nel set di dati
Dal grafico sopra, possiamo vedere che:
- La larghezza e la lunghezza del petalo hanno un'elevata correlazione.
- La lunghezza dei petali e la larghezza dei sepali hanno buone correlazioni.
- La larghezza dei petali e la lunghezza dei sepali hanno buone correlazioni.
Gestione dei valori anomali
Un valore anomalo è un dato/oggetto che si discosta in modo significativo dal resto degli oggetti (cosiddetti normali). Possono essere causati da errori di misurazione o di esecuzione. L'analisi per il rilevamento dei valori anomali viene definita mining anomalo. Esistono molti modi per rilevare valori anomali e il processo di rimozione è il frame di dati uguale alla rimozione di un elemento di dati dal frame di dati del panda.
Consideriamo il dataset dell'iride e tracciamo il boxplot per la colonna SepalWidthCm.
codice Python per Boxplot
Python3# importing packages import seaborn as sns import matplotlib.pyplot as plt # Load the dataset df = pd.read_csv('Iris.csv') sns.boxplot(x='SepalWidthCm', data=df)Produzione:
![]()
Boxplot per la colonna della larghezza dei sepali
Nel grafico sopra, i valori sopra 4 e sotto 2 agiscono come valori anomali.
Rimozione dei valori anomali
Per rimuovere il valore anomalo, è necessario seguire lo stesso processo di rimozione di una voce dal set di dati utilizzando la sua posizione esatta nel set di dati perché in tutti i metodi di rilevamento dei valori anomali sopra indicati il risultato finale è l'elenco di tutti quegli elementi di dati che soddisfano la definizione di valore anomalo secondo il metodo utilizzato.
Rileveremo i valori anomali utilizzando IQR e poi li rimuoveremo. Disegneremo anche il boxplot per vedere se i valori anomali vengono rimossi o meno.
Python3# Importing import sklearn from sklearn.datasets import load_boston import pandas as pd import seaborn as sns # Load the dataset df = pd.read_csv('Iris.csv') # IQR Q1 = np.percentile(df['SepalWidthCm'], 25, interpolation = 'midpoint') Q3 = np.percentile(df['SepalWidthCm'], 75, interpolation = 'midpoint') IQR = Q3 - Q1 print('Old Shape: ', df.shape) # Upper bound upper = np.where(df['SepalWidthCm']>= (Q3+1.5*IQR)) # Limite inferiore inferiore = np.where(df['SepalWidthCm'] <= (Q1-1.5*IQR)) # Removing the Outliers df.drop(upper[0], inplace = True) df.drop(lower[0], inplace = True) print('New Shape: ', df.shape) sns.boxplot(x='SepalWidthCm', data=df)Produzione:
![]()
boxplot utilizzando la libreria Seaborn
Per ulteriori informazioni su EDA, fare riferimento ai nostri tutorial seguenti: