Statistisk analyse av data hjelper oss å gi mening om informasjonen som helhet. Dette har applikasjoner på mange områder som biostatistikk og forretningsanalyse.
I stedet for å gå gjennom individuelle datapunkter, kan bare ett blikk på deres kollektive gjennomsnittlige verdi eller varians avsløre trender og funksjoner som vi kanskje har savnet ved å observere alle dataene i råformat. Det gjør også sammenligningen mellom to store datasett enklere og mer meningsfylt.
Med hensyn til disse behovene har Python gitt oss statistikkmodulen.
I denne opplæringen lærer du om ulike måter å beregne gjennomsnitt på og måle spredningen av et gitt sett med data. Med mindre annet er oppgitt, støtter alle funksjonene i denne modulen int
, flyte
, desimal
og brøkdel
baserte datasett som input.
Du kan bruke bety (data)
funksjon for å beregne gjennomsnittet av noen data. Det beregnes ved å dele summen av alle datapunkter med antall datapunkter. Hvis dataene er tomme, blir en StatisticsError hevet. Her er noen eksempler:
Importstatistikk fra fraksjoner importerer Frekvens som F fra desimalimport. Desimal som D statistics.mean ([11, 2, 13, 14, 44]) returnerer 16.8 statistics.mean ([F (8, 10), F (11, 20) ), F (2, 5), F (28, 5)]) returnerer Fraksjon (147, 80) statistics.mean ([D ("1.5"), D ("5.75"), D ("10.625") , D ("2.375")]) # returnerer Decimal ('5.0625')
Du lærte om mange funksjoner for å generere tilfeldige tall i vår siste opplæring. La oss bruke dem nå for å generere våre data og se om det endelige gjennomsnittet er lik det vi forventer at det skal være.
importere tilfeldig importstatistikk data_points = [random.randint (1, 100) for x i rekkevidde (1,1001)] statistics.mean (data_points) # returnerer 50.618 data_points = [random.triangular (1, 100, 80) for x i rekkevidde (1,1001)] statistics.mean (data_points) # returnerer 59.93292281437689
Med randint ()
funksjon, forventes gjennomsnittet å ligge nær midtpunktet av begge ekstremer, og med den trekantede fordeling skal den være nær lav + høy + modus / 3
. Derfor bør gjennomsnittet i første og andre tilfelle være henholdsvis 50 og 60,33, som ligger nær det vi faktisk fikk.
Gjennomsnitt er en god indikator på gjennomsnittet, men noen ekstreme verdier kan resultere i et gjennomsnitt som ligger langt fra den faktiske sentrale beliggenheten. I noen tilfeller er det mer ønskelig å bestemme det hyppigste datapunktet i et datasett. De modus()
funksjonen returnerer det vanligste datapunktet fra diskrete numeriske og ikke-numeriske data. Dette er den eneste statistiske funksjonen som kan brukes med ikke-numeriske data.
importere tilfeldig importstatistikk data_points = [random.randint (1, 100) for x i området (1,1001)] statistics.mode (data_points) # returnerer 94 data_points = [random.randint (1, 100) for x i rekkevidde 1,1001)] statistics.mode (data_points) # returnerer 49 data_points = [random.randint (1, 100) for x i området (1,1001)] statistics.mode (data_points) # returnerer 32 modus , "hund", "hund", "katt", "ape", "ape", "hund"])
Modellen til tilfeldig genererte heltall i et gitt område kan være et hvilket som helst av disse tallene, da frekvensen av forekomsten av hvert tall er uforutsigbar. De tre eksemplene i koden ovenfor er bevis på det punktet. Det siste eksemplet viser oss hvordan vi kan beregne modusen for ikke-numeriske data.
Å stole på modus for å beregne en sentral verdi kan være litt misvisende. Som vi nettopp så i forrige avsnitt, vil det alltid være det mest populære datapunktet, uavhengig av alle andre verdier i datasettet. En annen måte å bestemme en sentral plassering på er å bruke median ()
funksjon. Det vil returnere medianverdien av gitt numeriske data ved å beregne gjennomsnittet av to midtpunkter hvis nødvendig. Hvis antall datapunkter er merkelige, returnerer det midtpunktet. Hvis antall datapunkter er like, returnerer det gjennomsnittet av to medianverdier.
Problemet med median ()
funksjon er at den endelige verdien kanskje ikke er et faktisk datapunkt når antall datapunkter er jevn. I slike tilfeller kan du enten bruke median_low ()
eller median_high ()
å beregne medianen. Med et jevnt antall datapunkter, vil disse funksjonene returnere den minste og større verdien av de to midtpunktene henholdsvis.
importere tilfeldig importstatistikk data_points = [random.randint (1, 100) for x i rekkevidde (1,50)] statistics.median (data_points) # returnerer 53 data_points = [random.randint (1, 100) for x i rekkevidde 1,51)] statistics.median (data_points) # returnerer 51.0 data_points = [random.randint (1, 100) for x i rekkevidde (1,51)] statistics.median (data_points) # returnerer 49.0 data_points = [random.randint (1, 100) for x i rekkevidde (1,51)] statistics.median_low (data_points) # returnerer 50 statistics.median_high (data_points) # returnerer 52 statistics.median (data_points) # returnerer 51.0
I det siste tilfellet var den lave og høye medianen 50 og 52. Dette betyr at det ikke var noe datapunkt med verdi 51 i vårt datasett, men median ()
funksjonen fremdeles beregner medianen til å være 51,0.
Bestemme hvor mye datapunktene avviger fra datasettets typiske eller gjennomsnittlige verdi, er like viktig som å beregne selve senter- eller gjennomsnittsverdien. De statistikk Modulen har fire forskjellige funksjoner for å hjelpe oss med å beregne dette spredningen av data.
Du kan bruke pvariance (data, mu = ingen)
funksjon for å beregne populasjonsvariancen til et gitt datasett.
Det andre argumentet i dette tilfellet er valgfritt. Verdien av mu, når det oppgis, skal være lik gjennomsnittet av de oppgitte dataene. Gjennomsnittet beregnes automatisk hvis verdien mangler. Denne funksjonen er nyttig når du vil beregne variansen av en hel befolkning. Hvis dataene bare er et utvalg av befolkningen, kan du bruke varians (data, xBar = Ingen)
funksjon for å beregne prøvevarianansen. Her, tverrbar er gjennomsnittet av den gitte prøven og beregnes automatisk hvis ikke oppgitt.
For å beregne populasjonsstandarddefinisjonen og utvalgsstandardavviket, kan du bruke pstdev (data, mu = ingen)
og stdev (data, xBar = ingen)
funksjoner henholdsvis.
import statistikk fra fraksjoner importere Frekvens som F data = [1, 2, 3, 4, 5, 6, 7, 8, 9] statistics.pvariance (data) # returnerer 6.666666666666667 statistics.pstdev (data) # returnerer 2.581988897471611 statistics.variance (data) # returnerer 7.5 statistikk.stdev (data) # returnerer 2.7386127875258306 more_data = [3, 4, 5, 5, 5, 5, 6, 6] statistics.pvariance (more_data) # returnerer 0.7654320987654322 statistics.pstdev (more_data ) # returnerer 0.8748897637790901 some_fractions = [F (5, 6), F (2, 3), F (11, 12)] statistics.variance (some_fractions) # returnerer Fraction (7, 432)
Som det fremgår av eksemplet ovenfor, betyr mindre varians at flere datapunkter er nærmere i verdi til gjennomsnittet. Du kan også beregne standardavviket av desimaler og fraksjoner.
I denne siste opplæringen av serien lærte vi om ulike funksjoner som er tilgjengelige i statistikk modul. Du har kanskje observert at dataene som ble gitt til funksjonene ble sortert i de fleste tilfeller, men det behøver ikke å være. Jeg har brukt sorterte lister i denne opplæringen fordi de gjør det lettere å forstå hvordan verdien returnert av ulike funksjoner er relatert til inngangsdataene.