Histogram
Histogrammen geven de frequentie- of waarschijnlijkheidsverdeling van een variabele weer door middel van verticale bakken met gelijke breedte, vaak aangeduid als balken.
De pyplot
-module biedt de functie hist
om histogrammen te maken. De vereiste parameter is de data (x
), die een array of een reeks arrays kan zijn. Als meerdere arrays worden doorgegeven, wordt elke array in een andere kleur weergegeven.
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()
Intervallen en Hoogte
Een Series
-object met gemiddelde jaartemperaturen in Seattle is doorgegeven aan de functie hist()
. Standaard wordt de data verdeeld in 10 gelijke intervallen van de minimum- tot de maximumwaarde. Er zijn echter slechts 9 bins zichtbaar omdat het tweede interval geen datapunten bevat.
De hoogte van elke bin is standaard gelijk aan de frequentie van de waarden in dit interval (het aantal keer dat ze voorkomen).
Aantal Bins
Een andere belangrijke, maar optionele parameter is bins
, die ofwel het aantal bins (geheel getal), een reeks getallen die de randen van de bins aangeven, of een string accepteert. Meestal is het doorgeven van het aantal bins voldoende.
Er zijn verschillende methoden om de breedte van histogram-bins te bepalen. In dit voorbeeld gebruiken we de formule van Sturges, die het optimale aantal bins berekent op basis van de steekproefgrootte:
Hierbij is n
de grootte van de data-array.
Je kunt extra methoden voor binberekening verkennen hier.
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()
Het aantal rijen in de DataFrame
is 26 (de grootte van de Series
), dus het resulterende aantal bins is 5.
Benaderde Kansdichtheid
Om een benadering van de kansdichtheid te bekijken, stel je de parameter density
in op True
in de functie hist
.
Nu wordt de hoogte van elke bin berekend met:
waarbij:
- het totale aantal waarden in de dataset;
- het aantal waarden in de bin;
- de breedte van de bin.
Hierdoor is het totale oppervlak onder het histogram 1, wat overeenkomt met de belangrijkste eigenschap van een kansdichtheidsfunctie (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()
Dit geeft een benadering van de kansdichtheidsfunctie voor de temperatuurgegevens.
Als je meer wilt weten over de parameters van hist()
, raadpleeg dan de hist()
documentatie.
Swipe to start coding
Maak een benadering van een kansdichtheidsfunctie met behulp van een steekproef uit de standaard normale verdeling:
- Gebruik de juiste functie om een histogram te maken.
- Gebruik
normal_sample
als de data voor het histogram. - Specificeer het aantal bins als het tweede argument met behulp van de formule van Sturges.
- Maak van het histogram een benadering van een kansdichtheidsfunctie door het meest rechtse argument correct te specificeren.
Oplossing
Bedankt voor je feedback!