Statistische analyse van gegevens helpt ons de informatie als geheel te begrijpen. Dit heeft toepassingen op veel gebieden zoals biostatistiek en bedrijfsanalyses.
In plaats van individuele gegevenspunten te doorlopen, kan slechts één blik op hun collectieve gemiddelde waarde of variantie trends en functies onthullen die we mogelijk hebben gemist door alle gegevens in onbewerkt formaat te bekijken. Het maakt ook de vergelijking tussen twee grote gegevenssets veel eenvoudiger en zinvoller.
Met het oog op deze behoeften heeft Python ons de statistiekmodule bezorgd.
In deze tutorial leert u over verschillende manieren om gemiddelden te berekenen en de spreiding van een gegeven reeks gegevens te meten. Tenzij anders vermeld, ondersteunen alle functies in deze module int
, vlotter
, decimale
en fractie
gebaseerde gegevenssets als invoer.
U kunt de gemiddelde (data)
functie om het gemiddelde van sommige gegeven gegevens te berekenen. Het wordt berekend door de som van alle gegevenspunten te delen door het aantal gegevenspunten. Als de gegevens leeg zijn, wordt een StatisticsError opgehaald. Hier zijn een paar voorbeelden:
importstatistieken uit breuken import Fraction as F from decimal import Decimal as D statistics.mean ([11, 2, 13, 14, 44]) # retourneert 16.8 statistics.mean ([F (8, 10), F (11, 20 ), F (2, 5), F (28, 5)]) # geeft als resultaat Fractie (147, 80) statistics.mean ([D ("1.5"), D ("5.75"), D ("10.625") , D ("2.375")]) # retourneert Decimaal ('5.0625')
Je hebt veel functies geleerd om willekeurige getallen te genereren in onze laatste zelfstudie. Laten we ze nu gebruiken om onze gegevens te genereren en kijken of het uiteindelijke gemiddelde gelijk is aan wat we verwachten dat het is.
import willekeurige importstatistieken data_points = [random.randint (1, 100) voor x in bereik (1,1001)] statistics.mean (data_points) # geeft 50.618 data_points = [random.triangular (1, 100, 80) voor x in terug bereik (1,1001)] statistics.mean (data_points) # retourneert 59.93292281437689
Met de randInt ()
functie, het gemiddelde zal naar verwachting dicht bij het middelpunt van beide uitersten liggen, en bij de driehoekige verdeling zou het dicht bij lage + hoge + modus / 3
. Daarom moet het gemiddelde in het eerste en tweede geval respectievelijk 50 en 60,33 zijn, wat in de buurt komt van wat we feitelijk hebben gekregen.
Gemiddelde is een goede indicator voor het gemiddelde, maar een paar extreme waarden kunnen resulteren in een gemiddelde dat ver verwijderd is van de werkelijke centrale locatie. In sommige gevallen is het wenselijker om het meest frequente gegevenspunt in een gegevensverzameling te bepalen. De mode ()
functie retourneert het meest gebruikelijke gegevenspunt uit zowel discrete numerieke als niet-numerieke gegevens. Dit is de enige statistische functie die met niet-numerieke gegevens kan worden gebruikt.
import willekeurige importstatistieken data_points = [random.randint (1, 100) voor x in bereik (1,1001)] statistics.mode (data_points) # geeft 94 data_points = [random.randint (1, 100) voor x binnen bereik ( 1,1001)] statistics.mode (data_points) # geeft 49 data_points = [random.randint (1, 100) voor x binnen bereik (1,1001)] statistics.mode (data_points) # geeft 32 modus terug (["cat"] , "hond", "hond", "kat", "aap", "aap", "hond"]) # geeft 'hond' terug
De modus van willekeurig gegenereerde gehele getallen in een bepaald bereik kan elk van die getallen zijn, omdat de frequentie van voorkomen van elk getal onvoorspelbaar is. De drie voorbeelden in het bovenstaande codefragment bewijzen dat punt. Het laatste voorbeeld laat ons zien hoe we de modus van niet-numerieke gegevens kunnen berekenen.
Zich baserend op mode om een centrale waarde te berekenen kan een beetje misleidend zijn. Zoals we zojuist in de vorige sectie hebben gezien, is dit altijd het populairste gegevenspunt, ongeacht alle andere waarden in de gegevensset. Een andere manier om een centrale locatie te bepalen, is door de mediaan()
functie. Het zal de mediaanwaarde van gegeven numerieke gegevens retourneren door indien nodig het gemiddelde van twee middelste punten te berekenen. Als het aantal gegevenspunten oneven is, wordt het middelpunt geretourneerd. Als het aantal gegevenspunten gelijk is, wordt het gemiddelde van twee mediaanwaarden geretourneerd.
Het probleem met de mediaan()
De functie is dat de eindwaarde mogelijk geen echt gegevenspunt is wanneer het aantal gegevenspunten even is. In dergelijke gevallen kunt u beide gebruiken median_low ()
of median_high ()
om de mediaan te berekenen. Met een even aantal datapunten zullen deze functies de kleinere en grotere waarde van de twee middelste punten respectievelijk teruggeven.
import willekeurige importstatistieken data_points = [random.randint (1, 100) voor x in bereik (1,50)] statistics.median (data_points) # geeft 53 data_points = [random.randint (1, 100) voor x binnen bereik ( 1,51)] statistics.median (data_points) # geeft 51.0 data_points = [random.randint (1, 100) voor x in bereik (1,51)] statistics.median (data_points) # geeft 49.0 data_points = [random.randint terug (1, 100) voor x in bereik (1,51)] statistics.median_low (data_points) # geeft 50 statistieken terug.median_high (data_points) # geeft 52 terug statistieken.median (data_points) # geeft 51.0 terug
In het laatste geval waren de lage en hoge mediaan 50 en 52. Dit betekent dat er geen gegevenspunt was met waarde 51 in onze dataset, maar de mediaan()
functie nog steeds berekend, de mediaan is 51,0.
Het bepalen van hoeveel de datapunten afwijken van de gemiddelde of gemiddelde waarde van de dataset is net zo belangrijk als het berekenen van de centrale of gemiddelde waarde zelf. De statistieken module heeft vier verschillende functies om ons te helpen bij het berekenen van deze gegevensverspreiding.
U kunt de pvariance (data, mu = Geen)
functie om de populatievariantie van een gegeven dataset te berekenen.
Het tweede argument in deze zaak is optioneel. De waarde van mu, indien verstrekt, moet gelijk zijn aan het gemiddelde van de gegeven gegevens. Het gemiddelde wordt automatisch berekend als de waarde ontbreekt. Deze functie is handig als u de variantie van een gehele populatie wilt berekenen. Als uw gegevens slechts een steekproef van de populatie zijn, kunt u de variantie (data, xBar = Geen)
functie om de steekproefvariantie te berekenen. Hier, XBAR is het gemiddelde van de gegeven steekproef en wordt automatisch berekend als deze niet wordt verstrekt.
Voor het berekenen van de populatiestandaarddefinitie en standaarddeviatie van het monster, kunt u de pstdev (data, mu = Geen)
en stdev (data, xBar = Geen)
functies respectievelijk.
importstatistieken van breuken import Fraction as F data = [1, 2, 3, 4, 5, 6, 7, 8, 9] statistics.pvariance (data) # returns 6.666666666666667 statistics.pstdev (data) # geeft 2.581988897471611 statistics.variance terug (data) # retourneert 7.5 statistics.stdev (data) # returns 2.7386127875258306 more_data = [3, 4, 5, 5, 5, 5, 6, 6] statistics.pvariance (more_data) # geeft 0.7654320987654322 statistics.pstdev (more_data terug ) # retourneert 0.8748897637790901 some_fractions = [F (5, 6), F (2, 3), F (11, 12)] statistics.variance (some_fractions) # geeft Fractie (7, 432)
Zoals uit het bovenstaande voorbeeld blijkt, impliceert een kleinere variantie dat meer datapunten dichter bij het gemiddelde liggen. U kunt ook de standaardafwijking van decimalen en breuken berekenen.
In deze laatste tutorial van de serie leerden we over verschillende functies die beschikbaar zijn in de statistieken module. U hebt misschien opgemerkt dat de gegevens die aan de functies zijn gegeven in de meeste gevallen zijn gesorteerd, maar dat hoeft niet zo te zijn. Ik heb in deze tutorial gesorteerde lijsten gebruikt omdat ze het gemakkelijker maken om te begrijpen hoe de waarde die door verschillende functies wordt geretourneerd, gerelateerd is aan de invoergegevens.