For at kunne anvende statistik funktionerne skal vi importere to moduler: statistics og numpy.
import statistics as st
import numpy as np
len()
min()
max()
st.mean()
st.median()
st.mode()
Her anvender jeg en liste over karakterer i en klasse med 10 elever
>>> import statistics as st
>>> import numpy as np
>>> klasse = [2,2,4,4,4,7,7,10,10,12]
>>> len(klasse)
10
>>> min(klasse)
2
>>> maklasse(klasse)
12
>>> st.mean(klasse)
6.2
>>> st.median(klasse)
5.5
>>> st.mode(klasse)
4
Hvis der er mere end en observation, der det højeste antal af, f.eks. hvis der er 3 4'ere og 3 7'ere, så vil mode()
svare med den første værdi. I dette tilfælde
Hvis du vil teste et datasæt om der er flere tal der kan være typetal kan du bruge st.multimode()
>>> klasse2 = [2,2,4,4,4,7,7,7,10,12]
>>> st.mode(klasse2)
4
>>> st.multimode(klasse2)
[4, 7]
Hvis du vil have en median, som er en del af datasættet kan du bruge st.median_low()
og st.median_high()
.
>>> st.median(klasse)
5.5
>>> st.median_low(klasse)
4
>>> st.median_high(klasse)
7
Den første median (st.median()
) bliver beregnet ved at tage de to tal i midten og dividere med 2, fordi det er et lige antal observationer: \( \frac {4+5} {2} = 5,5 \).
De to andre er tal fra selve datasættet.
st.stdev
st.variance()
st.pstdev()
st.pvariance()
>>> st.stdev(klasse)
3.7564758898615485
>>> st.variance(klasse)
14.11111111111111
>>> st.pstdev(klasse)
3.541639433446495
>>> st.pvariance(klasse)
12.54320987654321
For at finde percentiler anvendes funktionen np.percentile(*DATASÆT*,*PERCENTIL*)
. Herunder findes kvartilsættet, altså 25%, 50% og 75%
>>> np.percentile(klasse,25)
4.0
>>> np.percentile(klasse,50)
5.5
>>> np.percentile(klasse,75)
9.25
Deskriptor | funktion |
---|---|
Varians (stikprøve) | st.variance() |
Spredning (stikprøve) | st.stdev() |
>>> st.variance(x)
12.622222222222222
>>> st.stdev(x)
3.552776691859794
import statistics as st
import numpy as np
x = [2, 2, 4, 4, 4, 7, 7, 10, 10, 12]
print("Observationssæt: \n----------------\n{0}".format(x))
print("Percentilsæt:")
for i in range(10,101,10):
print("Værden for den {0}. percentil er: {1}".format(i, round(np.percentile(x,i),1)))
Output
========================= RESTART: /home/tj/test.py =========================
Observationssæt:
----------------
[2, 2, 4, 4, 4, 7, 7, 10, 10, 12]
Percentilsæt:
Værden for den 10. percentil er: 2.0
Værden for den 20. percentil er: 3.6
Værden for den 30. percentil er: 4.0
Værden for den 40. percentil er: 4.0
Værden for den 50. percentil er: 5.5
Værden for den 60. percentil er: 7.0
Værden for den 70. percentil er: 7.9
Værden for den 80. percentil er: 10.0
Værden for den 90. percentil er: 10.2
Værden for den 100. percentil er: 12.0
import statistics as st
import numpy as np
import matplotlib.pyplot as plt
# https://docs.python.org/3/library/statistics.html
x = [2,2,4,4,4,7,7,10,10,12]
print("Observationssæt: \n----------------\n{0}".format(x))
#antal
print("\nAntal observationer: {0}".format(len(x)))
#gennemsnit
print("\nGennemsnit = {0}".format(st.mean(x)))
#median
print("\nMedian: {0}".format(st.median(x)))
#min og max værdi
print("\nMindste værdi: {0}".format(min(x)))
print("\nMaksimale værdi: {0}".format(max(x)))
try:
st.mode(x)
print("\nTypetal: {0}".format(st.mode(x)))
except:
print("\nDer er ikke noget typetal (flere værdier med samme antal")
#Varians
print("\nVarians: {0}".format(round(st.variance(x),2)))
#Spredning
print("\nSpredning: {0}".format(round(st.stdev(x),2)))
# Finder unikke værdier
x_unik = np.unique(x)
# Finder antal for hver unik værdi
x_unik_antal = []
for i in x_unik:
x_unik_antal.append(x.count(i))
#plotfunktionen
plt.xticks(x_unik, x_unik)
plt.bar(x_unik,x_unik_antal, width=0.8)
plt.title("Kontinuert data")
plt.show()
import statistics as st
import numpy as np
import matplotlib.pyplot as plt
x = [156,159,161,164,165,167, 168,171,173,173,174,176,177,177,179,179,180,181,183,183,185,187,192,194,198,201]
print("Observationssæt: \n----------------\n{0}".format(x))
#antal
print("\nAntal observationer: {0}".format(len(x)))
#gennemsnit
print("\nGennemsnit = {0}".format(round(st.mean(x),2)))
#median
print("\nMedian: {0}{1}".format(st.median(x),2))
#min og max værdi
print("\nMindste værdi: {0}".format(min(x)))
print("\nmaksimale værdi: {0}".format(max(x)))
startværdi = 150
spring = 10
x_ny = []
#ændrer datasættet til middelværdier ud fra startværdi og spring
for i in range(len(x)):
if x[i]< startværdi+spring and x[i]>=startværdi:
x_ny.append(startværdi+1/2*spring)
else:
startværdi += spring
x_ny.append(startværdi+1/2*spring)
#print(x_ny)
try:
st.mode(x_ny)
print("\nTypeintervallet er: [{0} - {1}[".format(st.mode(x_ny)-spring/2,st.mode(x_ny)+spring/2))
except:
print("\nDer er ikke noget typetal (flere værdier med samme antal")
#Varians
print("\nVarians: {0}".format(round(st.variance(x_ny),2)))
#Spredning
print("\nSpredning: {0}".format(round(st.stdev(x_ny),2)))
# Finder unikke værdier
x_unik = np.unique(x_ny)
# Finder antal for hver unik værdi
x_unik_antal = []
for i in x_unik:
x_unik_antal.append(x_ny.count(i))
#plotfunktionen
plt.xticks(x_unik, x_unik)
plt.bar(x_unik,x_unik_antal, width=0.8)
plt.title("Kontinuert data")
plt.show()