Rozdział 4 · Python lubi liczby

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:

statistics_demo.py
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

mode_stdev.py
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:

inf_nan_demo.py
positive_infinity = float("inf")
negative_infinity = float("-inf")
not_a_number = float("nan")

print(positive_infinity)  # inf
print(not_a_number)       # nan
Szczególne float znaczenia
inf
+∞
nieskończoność
math.isinf()
-inf
−∞
minus nieskończoność
math.isinf()
nan
nie liczba
not a number
math.isnan()
Trzy szczególne stany, które może przyjąć float, są sprawdzane przez trzy różne funkcje
nan nie jest równy nawet samemu sobie
Jedna z najbardziej nieoczekiwanych właściwości 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ą.")
nan_sravnenie.py
x = float("nan")
print(x == x)  # False!

Jak poprawnie sprawdzać te stany

proverki.py
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.

Praktyka: statistics, inf i nan
interaktywny laptop bezpośrednio w przeglądarce – Python 3.14 przez Pyodide, bez instalacji
Otwórz praktykę →