Histogram
Histogrammer repræsenterer frekvens- eller sandsynlighedsfordelingen af en variabel ved at bruge lodrette søjler af ens bredde, ofte kaldet søjler.
Modulet pyplot
tilbyder funktionen hist
til at oprette histogrammer. Det påkrævede parameter er dataene (x
), som kan være et array eller en sekvens af arrays. Hvis der gives flere arrays, vises hver i en forskellig farve.
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()
Intervaller og Højde
Et Series
-objekt, der indeholder gennemsnitlige årlige temperaturer i Seattle, blev sendt til funktionen hist()
. Som standard deles dataene op i 10 lige store intervaller fra minimum til maksimum. Dog er kun 9 søjler synlige, fordi det andet interval ikke indeholder nogen datapunkter.
Højden af hver søjle svarer som standard til frekvensen af værdierne i dette interval (antallet af gange de forekommer).
Antal Søjler
En anden vigtig, men valgfri parameter er bins
, som enten tager antallet af søjler (heltal), en sekvens af tal, der angiver kanterne for søjlerne, eller en streng. Oftest er det tilstrækkeligt blot at angive antallet af søjler.
Der findes flere metoder til at bestemme bredden af histogram-søjler. I dette eksempel anvender vi Sturges' formel, som beregner det optimale antal søjler baseret på stikprøvens størrelse:
Her er n
størrelsen på data-arrayet.
Du kan udforske yderligere metoder til bin-beregning her.
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()
Antallet af rækker i DataFrame
er 26 (størrelsen af Series
), så det resulterende antal bins er 5.
Sandsynlighedstætheds-approksimation
For at vise en approksimation af sandsynlighedstætheden, skal du sætte parameteren density
til True
i funktionen hist
.
Nu beregnes højden af hver søjle ved hjælp af:
hvor:
- det samlede antal værdier i datasættet;
- antallet af værdier i søjlen;
- bredden af søjlen.
Dette sikrer, at det samlede areal under histogrammet er 1, hvilket svarer til den centrale egenskab ved en sandsynlighedstæthedsfunktion (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()
Dette giver en approksimation af sandsynlighedstæthedsfunktionen for temperaturdataene.
Hvis du ønsker at udforske flere af hist()
-parametrene, kan du se hist()
dokumentationen.
Swipe to start coding
Opret en tilnærmelse af en sandsynlighedstæthedsfunktion ved hjælp af et udsnit fra standard normalfordelingen:
- Brug den korrekte funktion til at oprette et histogram.
- Brug
normal_sample
som data til histogrammet. - Angiv antallet af søjler som det andet argument ved hjælp af Sturges' formel.
- Gør histogrammet til en tilnærmelse af en sandsynlighedstæthedsfunktion ved korrekt at angive det yderste argument.
Løsning
Tak for dine kommentarer!