Istogramma
Gli istogrammi rappresentano la frequenza o la distribuzione di probabilità di una variabile utilizzando barre verticali di larghezza uguale, spesso chiamate barre.
Il modulo pyplot
fornisce la funzione hist
per creare istogrammi. Il parametro richiesto è il dato (x
), che può essere un array o una sequenza di array. Se vengono passati più array, ciascuno viene mostrato con un colore diverso.
import pandas as pd import matplotlib.pyplot as plt # Loading the dataset with the average yearly temperatures in Boston and Seattle url = 'https://content-media-cdn.codefinity.com/courses/47339f29-4722-4e72-a0d4-6112c70ff738/weather_data.csv' weather_df = pd.read_csv(url, index_col=0) # Creating a histogram plt.hist(weather_df['Seattle']) plt.show()
Intervalli e Altezza
Un oggetto Series
contenente le temperature medie annuali a Seattle è stato passato alla funzione hist()
. Per impostazione predefinita, i dati sono suddivisi in 10 intervalli uguali che vanno dal valore minimo al valore massimo. Tuttavia, sono visibili solo 9 intervalli perché il secondo intervallo non contiene alcun dato.
L'altezza di ciascun intervallo, per impostazione predefinita, corrisponde alla frequenza dei valori in quell'intervallo (numero di occorrenze).
Numero di Intervalli
Un altro parametro importante, ma opzionale, è bins
, che accetta sia il numero di intervalli (intero), sia una sequenza di numeri che specificano i limiti degli intervalli, oppure una stringa. Nella maggior parte dei casi, è sufficiente indicare il numero di intervalli.
Esistono diversi metodi per determinare l'ampiezza degli intervalli di un istogramma. In questo esempio, utilizzeremo la formula di Sturges, che calcola il numero ottimale di intervalli in base alla dimensione del campione:
Qui, n
rappresenta la dimensione dell'array di dati.
Puoi esplorare ulteriori metodi per il calcolo dei bin qui.
import pandas as pd import matplotlib.pyplot as plt import numpy as np url = 'https://content-media-cdn.codefinity.com/courses/47339f29-4722-4e72-a0d4-6112c70ff738/weather_data.csv' weather_df = pd.read_csv(url, index_col=0) # Specifying the number of bins plt.hist(weather_df['Seattle'], bins=1 + int(np.log2(len(weather_df)))) plt.show()
Il numero di righe nel DataFrame
è 26 (la dimensione della Series
), quindi il numero risultante di bin è 5.
Approssimazione della Densità di Probabilità
Per visualizzare un'approssimazione della densità di probabilità, impostare il parametro density
su True
nella funzione hist
.
Ora, l'altezza di ciascun intervallo viene calcolata utilizzando:
Dove:
- il numero totale di valori nel dataset;
- il numero di valori nell'intervallo;
- la larghezza dell'intervallo.
Questo garantisce che l'area totale sotto l'istogramma sia 1, in linea con la proprietà fondamentale di una funzione di densità di probabilità (PDF).
import pandas as pd import matplotlib.pyplot as plt import numpy as np url = 'https://content-media-cdn.codefinity.com/courses/47339f29-4722-4e72-a0d4-6112c70ff738/weather_data.csv' weather_df = pd.read_csv(url, index_col=0) # Making a histogram a probability density function approximation plt.hist(weather_df['Seattle'], bins=1 + int(np.log2(len(weather_df))), density=True) plt.show()
Questo fornisce un'approssimazione della funzione di densità di probabilità per i dati di temperatura.
Se desideri approfondire i parametri di hist()
, puoi consultare la documentazione di hist()
.
Swipe to start coding
Creare un'approssimazione di una funzione di densità di probabilità utilizzando un campione dalla distribuzione normale standard:
- Utilizzare la funzione corretta per creare un istogramma.
- Utilizzare
normal_sample
come dati per l'istogramma. - Specificare il numero di intervalli (bins) come secondo argomento utilizzando la formula di Sturges.
- Rendere l'istogramma un'approssimazione di una funzione di densità di probabilità specificando correttamente l'argomento più a destra.
Soluzione
Grazie per i tuoi commenti!