Histogram
Histogrammer representerer frekvens- eller sannsynlighetsfordelingen til en variabel ved å bruke vertikale søyler med lik bredde, ofte kalt stolper.
Modulen pyplot
tilbyr funksjonen hist
for å lage histogrammer. Det nødvendige parameteret er dataene (x
), som kan være et array eller en sekvens av arrays. Hvis flere arrays sendes inn, vises hver i en forskjellig farge.
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()
Intervaller og høyde
Et Series
-objekt som inneholder gjennomsnittlige årstemperaturer i Seattle ble sendt til funksjonen hist()
. Som standard deles dataene inn i 10 like store intervaller fra minimums- til maksimumsverdien. Imidlertid er kun 9 søyler synlige fordi det andre intervallet ikke inneholder noen datapunkter.
Høyden på hver søyle tilsvarer som standard frekvensen av verdiene i dette intervallet (antall ganger de forekommer).
Antall søyler
En annen viktig, men valgfri parameter er bins
, som enten tar antall søyler (heltall), en sekvens av tall som angir kantene til søylene, eller en streng. Som oftest er det tilstrekkelig å oppgi antall søyler.
Det finnes flere metoder for å bestemme bredden på histogram-søyler. I dette eksemplet bruker vi Sturges' formel, som beregner det optimale antallet søyler basert på utvalgsstørrelsen:
Her er n
størrelsen på dataarrayet.
Du kan utforske flere metoder for beregning av antall intervaller her.
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()
Antall rader i DataFrame
er 26 (størrelsen på Series
), så det resulterende antallet intervaller er 5.
Tilnærming av sannsynlighetstetthet
For å vise en tilnærming av sannsynlighetstettheten, sett parameteren density
til True
i hist
-funksjonen.
Nå beregnes høyden til hver søyle slik:
hvor:
– totalt antall verdier i datasettet;
– antall verdier i søylen;
– bredden på søylen.
Dette sikrer at det totale arealet under histogrammet er 1, noe som samsvarer med hovedegenskapen til en sannsynlighetstetthetsfunksjon (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()
Dette gir en tilnærming av sannsynlighetstetthetsfunksjonen for temperaturdataene.
Hvis du ønsker å utforske flere av parameterne til hist()
, kan du se hist()
-dokumentasjonen.
Swipe to start coding
Lag en tilnærming av en sannsynlighetstetthetsfunksjon ved å bruke et utvalg fra standard normalfordeling:
- Bruk riktig funksjon for å lage et histogram.
- Bruk
normal_sample
som data for histogrammet. - Angi antall søyler som andre argument ved å bruke Sturges' formel.
- Gjør histogrammet til en tilnærming av en sannsynlighetstetthetsfunksjon ved å angi riktig verdi for det siste argumentet.
Løsning
Takk for tilbakemeldingene dine!