Глава 4 · Python любит числа

statistics, inf и nan

Готовые статистические инструменты — и особые числовые состояния, которые полезно уметь распознавать.

Модуль statistics

Простые статистические расчёты уже есть в стандартной библиотеке — не нужно писать их вручную:

statistics_demo.py
import statistics

scores = [85, 90, 78, 92, 88]

print(statistics.mean(scores))    # 86.6 — среднее
print(statistics.median(scores))  # 88   — медиана (среднее значение по порядку)

Мода и стандартное отклонение

mode_stdev.py
import statistics

scores = [85, 90, 78, 92, 88]

print(statistics.mode(scores))    # самое частое значение
print(statistics.pstdev(scores))  # стандартное отклонение генеральной совокупности

Это лишь маленькая часть модуля statistics — задача этого раздела не превратить курс в курс статистики, а показать: типовые статистические расчёты уже есть готовыми в Python, и не нужно писать формулу среднего вручную каждый раз.

Особые значения: inf и nan

Кроме обычных чисел, float умеет представлять несколько особых состояний:

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
Особые значения float
inf
+∞
бесконечность
math.isinf()
-inf
−∞
минус бесконечность
math.isinf()
nan
не число
not a number
math.isnan()
Три особых состояния, которые может принимать float — проверяются тремя разными функциями
nan не равен даже самому себе
Одно из самых неожиданных свойств nan: сравнение nan == nan возвращает False. Это не ошибка Python, а часть стандарта IEEE 754 (тот же стандарт, что мы упоминали в разделе про float) — nan специально определён как «не равный ничему, включая себя».
nan_sravnenie.py
x = float("nan")
print(x == x)  # False!

Как проверять эти состояния правильно

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 — обычное конечное число

Такие значения не выдумка — они реально появляются в данных и вычислениях: деление, дающее переполнение, отсутствующие данные при анализе, результат неопределённой операции. Полезно уметь распознать их и обработать осознанно, а не удивляться, откуда они взялись.

Практика: statistics, inf и nan
Интерактивный ноутбук прямо в браузере — Python 3.14 через Pyodide, без установки
Открыть практику →