Язык программирования Python

Математические модули в Python: Статистика

Статистический анализ данных помогает нам понять смысл информации в целом. Это находит применение во многих областях, таких как биостатистика или аналитика бизнеса.

Вместо того чтобы просматривать каждое значение по отдельности, можно выявить тенденции и особенности, которые мы могли бы пропустить, рассматривая все данные в необработанном виде.

Кроме того, это упрощает и повышает эффективность сравнения двух больших массивов данных.

Учитывая эти задачи, Python предоставляет модуль статистики.

В этом руководстве мы рассмотрим различные способы вычисления средних значений и измерения разброса заданного набора данных.

Если не указано иное, все функции в этом модуле поддерживают в качестве входных данных int, float, десятичные и дробные числа.

Вычисление среднего значения в Python

Вы можете использовать функцию mean(data) для вычисления среднего значения для определенных данных. Этот показатель рассчитывается путем деления суммы всех значений на их количество. Если же данные отсутствуют, система выдаст ошибку StatisticsError.

Вот несколько примеров:

import statistics from fractions import Fraction as F from decimal import Decimal as D statistics.mean([11, 2, 13, 14, 44]) # возвращает 16.8 statistics.mean([F(8, 10), F(11, 20), F(2, 5), F(28, 5)]) # возвращает Fraction(147, 80) statistics.mean([D("1.5"), D("5.75"), D("10.625"), D("2.375")]) # возвращает Decimal('5.0625')
Code language: PHP (php)

Давайте используем генератор случайных чисел их для создания данных. И посмотрим, равно ли итоговое среднее значение тому, что мы ожидаем:

import random import statistics data_points = [ random.randint(1, 100) for x in range(1,1001) ] statistics.mean(data_points) # возвращает 50.618 data_points = [ random.triangular(1, 100, 80) for x in range(1,1001) ] statistics.mean(data_points) # возвращает 59.93292281437689
Code language: PHP (php)

При использовании функции randint() мы ожидаем, что среднее значение будет находиться около середины двух крайних значений, а при треугольном распределении предполагается, что оно будет рядом с high + low + mode / 3. Таким образом, среднее значение в первом и втором случае должно быть 50 и 60,33 соответственно, что близко к тому, что мы получили на самом деле.

Вычисление моды в Python

Бывают ситуации, когда некоторые значения в наборе могут быть далеки от фактического среднего, и таких значений может быть много.

Функция mode() возвращает наиболее часто встречающееся значение из дискретных числовых и нечисловых данных.

Это единственная статистическая функция, которую можно использовать с нечисловыми данными.

import random import statistics data_points = [ random.randint(1, 100) for x in range(1,1001) ] statistics.mode(data_points) # возвращает 94 data_points = [ random.randint(1, 100) for x in range(1,1001) ] statistics.mode(data_points) # возвращает 49 data_points = [ random.randint(1, 100) for x in range(1,1001) ] statistics.mode(data_points) # возвращает 32 mode(["кошка", "собака", "собака", "кошка", "обезьяна", "обезьяна", "собака"]) # возвращает 'собака'
Code language: PHP (php)

Поскольку мы случайным образом генерируем числа в заданном диапазоне, может оказаться, что модой является любое из этих чисел, так как частота появления каждого из них непредсказуема. Три примера в приведенном выше коде доказывают это. Последний пример показывает, как мы можем вычислить моду в нечисловых данных.

Расчет медианы в Python

Полагаясь на режим для расчета центрального значения, можно ошибиться.

Как мы только что видели в предыдущем разделе, это всегда будет самое популярное значение, независимо от всех других.

Другой способ определить центральное значение – использовать функцию median().

Эта функция возвращает медианное значение заданных числовых данных, при необходимости вычисляя среднее из двух медианных значений.

Если количество значений нечетное, возвращается медиана. Если число значений четное, то возвращается среднее значение из двух медианных.

Проблема с функцией median() заключается в том, что конечное значение может не быть реальным, если количество точек данных четное.

В этих случаях для вычисления медианы можно использовать median_low() или median_high().

При четном количестве значений эти функции возвращают соответственно меньшее и большее двух средних точек.

import random import statistics data_points = [ random.randint(1, 100) for x in range(1,50) ] statistics.median(data_points) # возвращает 53 data_points = [ random.randint(1, 100) for x in range(1,51) ] statistics.median(data_points) # возвращает 51.0 data_points = [ random.randint(1, 100) for x in range(1,51) ] statistics.median(data_points) # возвращает 49.0 data_points = [ random.randint(1, 100) for x in range(1,51) ] statistics.median_low(data_points) # возвращает 50 statistics.median_high(data_points) # возвращает 52 statistics.median(data_points) # возвращает 51.0
Code language: PHP (php)

В последнем случае низкая и высокая медианы составили 50 и 52. Это означает, что в нашем наборе данных не было числа со значением 51, но median() вычислила медиану, равную 51,0.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *