statistics, inf i nan
Gotowe narzędzia statystyczne — i specjalne stany liczbowe, które warto umieć rozpoznać.
Moduł statistics
Proste obliczenia statystyczne są już w standardowej bibliotece — nie trzeba ich pisać ręcznie:
import statistics
scores = [85, 90, 78, 92, 88]
print(statistics.mean(scores)) #86.6 — Medium
print(statistics.median(scores)) #88 to mediana (średnia w kolejności)
tryb i odchylenie standardowe
import statistics
scores = [85, 90, 78, 92, 88]
print(statistics.mode(scores)) # Najczęściej stosowana wartość
print(statistics.pstdev(scores)) # odchylenie standardowe populacji
To tylko niewielka część modułu statistics jest zadanie tego
Rozdział nie polega na przekształceniu kursu w statystykę, lecz po to, by pokazać: typowe obliczenia statystyczne
są już gotowe w Python roku i nie musisz za każdym razem ręcznie pisać średniej formuły.
Szczególne znaczenia: inf i nan
Oprócz regularnych liczb, float potrafi reprezentować kilka
specjalnych stanów:
positive_infinity = float("inf")
negative_infinity = float("-inf")
not_a_number = float("nan")
print(positive_infinity) # inf
print(not_a_number) # nan
nan: porównanie nan == nan zwroty False. To nie jest błąd Python, a część standardu IEEE 754 (ten sam standard, o którym wspominaliśmy w rozdziale o float) — nan jest specjalnie zdefiniowany jako „nierówny niczemu, włącznie z samym sobą.")x = float("nan")
print(x == x) # False!
Jak poprawnie sprawdzać te stany
import math
x = float("nan")
y = float("inf")
print(math.isnan(x)) # True
print(math.isinf(y)) # True
print(math.isfinite(5.0)) #True jest regularną liczbą skończoną
Takie wartości nie są wymyślone — naprawdę pojawiają się w danych i obliczeniach: dzielenie, które daje przepełnienie, brakujące dane w analizie, wynik nieokreślonej operacji. Warto umieć je rozpoznać i świadomie obsłużyć, a nie dziwić się, skąd się wzięły.