Histogram
Histogram representerar frekvens- eller sannolikhetsfördelningen av en variabel genom att använda vertikala staplar av lika bredd, ofta kallade staplar.
pyplot
-modulen tillhandahåller funktionen hist
för att skapa histogram. Den obligatoriska parametern är data (x
), som kan vara en array eller en sekvens av arrayer. Om flera arrayer anges visas varje i en annan färg.
import pandas as pd import matplotlib.pyplot as plt # Loading the dataset with the average yearly temperatures in Boston and Seattle url = 'https://staging-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()
Intervall och Höjd
Ett Series
-objekt som innehåller genomsnittliga årliga temperaturer i Seattle skickades till funktionen hist()
. Som standard delas data upp i 10 lika stora intervall från minsta till största värde. Dock är endast 9 staplar synliga eftersom det andra intervallet inte innehåller några datapunkter.
Höjden på varje stapel motsvarar som standard frekvensen av värden i detta intervall (antalet gånger de förekommer).
Antal Staplar
En annan viktig, men valfri parameter är bins
som tar antingen antalet staplar (heltal) eller en sekvens av tal som anger kanterna för staplarna, eller en sträng. Oftast räcker det att ange antalet staplar.
Det finns flera metoder för att bestämma bredden på histogrammets staplar. I detta exempel används Sturges' formel, som beräknar det optimala antalet staplar baserat på urvalsstorleken:
Här är n
storleken på dataarrayen.
Du kan utforska ytterligare metoder för beräkning av bin här.
import pandas as pd import matplotlib.pyplot as plt import numpy as np url = 'https://staging-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()
Antalet rader i DataFrame
är 26 (storleken på Series
), så det resulterande antalet bin är 5.
Sannolikhetstäthetsapproximation
För att visa en approximation av sannolikhetstätheten, ange parametern density
till True
i funktionen hist
.
Nu beräknas varje bins höjd med:
Där:
- det totala antalet värden i datamängden;
- antalet värden i bin;
- binens bredd.
Detta säkerställer att den totala arean under histogrammet är 1, vilket överensstämmer med den centrala egenskapen hos en sannolikhetstäthetsfunktion (PDF).
import pandas as pd import matplotlib.pyplot as plt import numpy as np url = 'https://staging-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()
Detta ger en approximation av sannolikhetstäthetsfunktionen för temperaturdatan.
Om du vill utforska fler parametrar för hist()
, kan du läsa mer i hist()
dokumentationen.
Swipe to start coding
Skapa en approximation av en sannolikhetstäthetsfunktion med ett stickprov från standardnormalfördelningen:
- Använd rätt funktion för att skapa ett histogram.
- Använd
normal_sample
som data för histogrammet. - Ange antalet intervall (bins) som det andra argumentet med hjälp av Sturges' formel.
- Gör histogrammet till en approximation av en sannolikhetstäthetsfunktion genom att korrekt ange det sista argumentet.
Lösning
Tack för dina kommentarer!