statistics

Podstawowe statystyki bez zewnętrznych bibliotek: średnia, mediana, dominanta, odchylenie standardowe i kwantyle.

Na tej stronie

Przykład

#
Python
import statistics

scores = [72, 95, 64, 88, 72, 100, 58]

print(round(statistics.mean(scores), 1))
print(statistics.median(scores))
print(statistics.mode(scores))
print(round(statistics.stdev(scores), 1))
Wynikzapisany wynik, możesz go sprawdzić
78.4
72
72
16.0

Definicja i zastosowanie

#

Moduł statistics liczy podstawowe miary statystyczne dla list liczb, bez instalowania pandas czy NumPy. Funkcja mean() zwraca średnią arytmetyczną, median() medianę, czyli wartość środkową, a mode() dominantę, czyli wartość najczęstszą. To wystarczy do analizy wyników testów, czasu nauki czy liczby rozwiązanych zadań.

Mediana jest odporna na wartości skrajne. Jeden bardzo wysoki wynik mocno podnosi średnią, a medianę zmienia niewiele, dlatego przy czasach, cenach czy zarobkach warto patrzeć na obie miary. Przy parzystej liczbie danych median() zwraca średnią dwóch środkowych wartości.

Rozrzut danych opisują stdev() i variance(), czyli odchylenie standardowe i wariancja. Dwie grupy mogą mieć tę samą średnią, a zupełnie inny rozrzut wyników. quantiles() dzieli dane na równe części i zwraca punkty podziału, np. kwartyle. Pusta lista zgłasza StatisticsError, a odchylenie z próby wymaga co najmniej dwóch wartości.

Składnia

#
Składnia
import statistics

statistics.mean(dane)
statistics.median(dane)
statistics.mode(dane)
statistics.stdev(dane)
statistics.quantiles(dane, n=4)

Najważniejsze funkcje

#
  • mean()

    średnia

    Średnia arytmetyczna. Dla liczb całkowitych zwraca int, gdy wynik wychodzi równy.
  • fmean()

    średnia

    Szybsza średnia, zawsze zwraca float. Od Pythona 3.11 przyjmuje też wagi (weights).
  • median()

    mediana

    Wartość środkowa po posortowaniu. Przy parzystej liczbie danych średnia dwóch środkowych.
  • mode()

    dominanta

    Najczęstsza wartość. Przy remisie zwraca tę, która pojawiła się pierwsza. Działa też na napisach.
  • multimode()

    dominanty

    Lista wszystkich najczęstszych wartości, w kolejności pierwszego wystąpienia.
  • stdev()

    odchylenie

    Odchylenie standardowe z próby. Dla danych o całej grupie służy pstdev().
  • variance()

    wariancja

    Wariancja z próby, czyli kwadrat odchylenia standardowego. Dla całej grupy służy pvariance().
  • quantiles()

    kwantyle

    Punkty podziału danych na n równych części, domyślnie kwartyle (n=4). Zwraca listę.

Więcej przykładów

#
Średnia a mediana przy wartości skrajnej
Python
import statistics

minutes = [25, 30, 20, 35, 30, 240]

print(round(statistics.mean(minutes), 1))
print(statistics.median(minutes))
Wynikzapisany wynik, możesz go sprawdzić
63.3
30.0

Jedna czterogodzinna sesja podniosła średnią ponad dwukrotnie, a mediana nadal pokazuje typowy czas nauki. Przy parzystej liczbie danych mediana jest średnią dwóch środkowych wartości, stąd 30.0.

Ta sama średnia, inny rozrzut
Python
import statistics

group_a = [70, 72, 74, 76, 78]
group_b = [50, 62, 74, 86, 98]

print(statistics.mean(group_a), statistics.mean(group_b))
print(round(statistics.stdev(group_a), 1), round(statistics.stdev(group_b), 1))
print(statistics.quantiles(group_b, n=4))
Wynikzapisany wynik, możesz go sprawdzić
74 74
3.2 19.0
[56.0, 74.0, 92.0]

mean() zwraca int, gdy średnia liczb całkowitych wychodzi równa, dlatego widać 74, a nie 74.0.

Dominanty i pusta lista
Python
import statistics

answers = ["B", "A", "B", "C", "A"]
print(statistics.mode(answers))
print(statistics.multimode(answers))

try:
    statistics.mean([])
except statistics.StatisticsError as error:
    print(error)
Wynikzapisany wynik, możesz go sprawdzić
B
['B', 'A']
mean requires at least one data point

Dobre praktyki

#
  • Przy danych z wartościami skrajnymi, takich jak czas, ceny czy zarobki, podawaj medianę obok średniej. Lepiej oddaje typową wartość.
  • Dla dużych list liczb zmiennoprzecinkowych fmean() jest wyraźnie szybsze od mean().
  • stdev() liczy odchylenie z próby, czyli dzieli przez n - 1. Gdy masz dane o całej grupie, a nie tylko o próbce, użyj pstdev().

Powiązane hasła

#

Widzisz błąd albo brakuje przykładu? Napisz do nas.