Рубрики
Без рубрики

Вычисление среднего, медианы и режима в Python

В этом уроке мы узнаем, как вычислить среднее, медиану и режим в Python с нуля и с помощью модуля статистики Python.

Автор оригинала: Leodanis Pozo Ramos.

Вступление

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

В этом уроке мы узнаем, как найти или вычислить среднее значение, медиану и режим в Python. Сначала мы закодируем функцию Python для каждой меры, а затем используем модуль Python statistics для выполнения той же задачи.

С этими знаниями мы сможем быстро взглянуть на наши наборы данных и получить представление об общей тенденции данных.

содержание

  • Вычисление среднего значения выборки
    • Вычисление Среднего Значения С помощью Python
    • Использование среднего значения Python()
  • Нахождение медианы выборки
    • Поиск Медианы С Помощью Python
    • Использование медианы Python()
  • Нахождение режима выборки
    • Поиск режима с помощью Python
    • Использование режима Python()

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

Если у нас есть выборка числовых значений, то ее среднее или среднее – это общая сумма значений (или наблюдений), деленная на количество значений.

Скажем, у нас есть образец [4, 8, 6, 5, 3, 2, 8, 9, 2, 5] . Мы можем вычислить его среднее значение, выполнив операцию:

(4 + 8 + 6 + 5 + 3 + 2 + 8 + 9 + 2 + 5)/.2

Среднее (среднее арифметическое) – это общее описание наших данных. Предположим, вы покупаете 10 фунтов помидоров. Когда вы пересчитываете помидоры дома, вы получаете 25 помидоров. В этом случае можно сказать, что средний вес помидора составляет 0,4 фунта. Это было бы хорошим описанием ваших помидоров.

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

Насколько хорошо или плохо среднее описывает выборку, зависит от того, насколько разбросаны данные. В случае с помидорами они имеют почти одинаковый вес, и среднее значение является хорошим их описанием. В случае с собаками нет никакой актуальной собаки. Они могут варьироваться от крошечного чихуахуа до гигантского немецкого мастифа. Таким образом, среднее само по себе не является хорошим описанием в данном случае.

Теперь пришло время начать действовать и узнать, как мы можем вычислить среднее значение с помощью Python.

Вычисление Среднего Значения С помощью Python

Чтобы вычислить среднее значение выборки числовых данных, мы будем использовать две встроенные функции Python. Один-для вычисления общей суммы значений, а другой-для вычисления длины выборки.

Первая функция – sum() . Эта встроенная функция принимает итерацию числовых значений и возвращает их общую сумму.

Вторая функция – len() . Эта встроенная функция возвращает длину объекта. len() может принимать в качестве аргумента последовательности (строка, байт, кортеж, список или диапазон) или коллекции (словарь, набор или замороженный набор).

Вот как мы можем вычислить среднее значение:

>>> def my_mean(sample):
...     return sum(sample) / len(sample)
...

>>> my_mean([4, 8, 6, 5, 3, 2, 8, 9, 2, 5])
5.2

Сначала мы суммируем значения в sample с помощью sum() . Затем мы делим эту сумму на длину sample , которая является результирующим значением len(sample) .

Использование среднего значения Python()

Поскольку вычисление среднего значения является обычной операцией, Python включает эту функцию в модуль statistics . Он предоставляет некоторые функции для вычисления базовой статистики по наборам данных. Функция statistics.mean() берет выборку числовых данных (любую итерацию) и возвращает ее среднее значение.

Вот как работает Python mean() :

>>> import statistics

>>> statistics.mean([4, 8, 6, 5, 3, 2, 8, 9, 2, 5])
5.2

Нам просто нужно импортировать модуль statistics , а затем вызвать mean() с нашим образцом в качестве аргумента. Это вернет среднее значение выборки. Это быстрый способ найти среднее значение с помощью Python.

Нахождение медианы выборки

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

Чтобы найти медиану, нам нужно:

  1. Сортировка образец
  2. Найдите значение в середине отсортированной выборки

При обнаружении числа в середине отсортированной выборки мы можем столкнуться с двумя видами ситуаций:

  1. Если выборка имеет нечетное число наблюдений , то среднее значение в отсортированной выборке является медианой
  2. Если выборка имеет четное число наблюдений , то нам нужно будет вычислить среднее из двух средних значений в отсортированной выборке

Если у нас есть образец [3, 5, 1, 4, 2] и если мы хотим найти его медиану, то сначала сортируем выборку по [1, 2, 3, 4, 5] . Медиана будет равна 3 так как это значение находится посередине.

С другой стороны, если у нас есть образец [1, 2, 3, 4, 5, 6] , тогда его медиана будет (3 + 4)/.5 .

Давайте посмотрим, как мы можем использовать Python для вычисления медианы.

Поиск Медианы С Помощью Python

Чтобы найти медиану, нам сначала нужно отсортировать значения в нашей выборке . Мы можем добиться этого с помощью встроенной функции sorted () . sorted() принимает итерацию и возвращает отсортированный список , содержащий те же значения исходной итерации.

Второй шаг состоит в том, чтобы найти значение, которое лежит в середине отсортированной выборки. Чтобы найти это значение в выборке с нечетным числом наблюдений, мы можем разделить число наблюдений на 2. Результатом будет индекс значения в середине отсортированной выборки.

Поскольку оператор деления ( / ) возвращает число с плавающей запятой, нам нужно будет использовать оператор деления floor, ( // ) чтобы получить целое число. Таким образом, мы можем использовать его в качестве индекса в операции индексирования ( [] ).

Если выборка имеет четное число наблюдений, то нам нужно найти два средних значения. Скажем, у нас есть образец [1, 2, 3, 4, 5, 6] . Если мы разделим его длину ( 6 ) по 2 используя деление пола, мы получаем 3 . Это индекс нашего верхнего среднего значения ( 4 ). Чтобы найти индекс нашего нижне-среднего значения ( 3 ), мы можем уменьшить индекс верхнего среднего значения на 1 .

Давайте сложим все это вместе в функцию, которая вычисляет медиану выборки. Вот возможная реализация:

>>> def my_median(sample):
...     n = len(sample)
...     index = n // 2
...     # Sample with an odd number of observations
...     if n % 2:
...         return sorted(sample)[index]
...     # Sample with an even number of observations
...     return sum(sorted(sample)[index - 1:index + 1]) / 2
...

>>> my_median([3, 5, 1, 4, 2])
3

>>> my_median([3, 5, 1, 4, 2, 6])
3.5

Эта функция берет выборку числовых значений и возвращает ее медиану. Сначала мы находим длину образца, n . Затем мы вычисляем индекс среднего значения (или верхне-среднего значения), деля n на 2 .

Оператор if проверяет, имеет ли находящаяся под рукой выборка нечетное число наблюдений. Если это так, то медиана-это значение в index .

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

Обратите внимание, что операция slicing | [index – 1:index + 1] получает два значения. Значение в index – 1 и значение в index потому что операции среза исключают значение в конечном индексе ( index + 1 ).

Использование медианы Python()

Python statistics.median() берет выборку данных и возвращает ее медиану. Вот как работает этот метод:

>>> import statistics

>>> statistics.median([3, 5, 1, 4, 2])
3

>>> statistics.median([3, 5, 1, 4, 2, 6])
3.5

Обратите внимание, что median() автоматически обрабатывает вычисление медианы для выборок с нечетным или четным числом наблюдений.

Нахождение режима выборки

Режим является наиболее частым наблюдением (или наблюдениями) в выборке. Если у нас есть образец [4, 1, 2, 2, 3, 5] , тогда его режим 2 потому что 2 появляется в образце два раза, в то время как другие элементы появляются только один раз.

Режим не обязательно должен быть уникальным. Некоторые образцы имеют более одного режима. Скажем, у нас есть образец [4, 1, 2, 2, 3, 5, 4] . Этот образец имеет два режима – 2 и 4 потому что это значения, которые появляются чаще, и оба появляются одинаковое количество раз.

Этот режим обычно используется для категориальных данных. Наиболее распространенными категориальными типами данных являются:

  • boolean – Может принимать только два значения, как в true или false , male или female
  • номинальный – Может принимать более двух значений, как в Американский - Европейский - Азиатский - Африканский
  • порядковый номер – Может принимать более двух значений, но значения имеют логический порядок, как в немногие - некоторые - многие

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

Мы можем найти образцы, которые не имеют режима. Если все наблюдения уникальны (повторных наблюдений нет), то ваша выборка не будет иметь режима.

Теперь, когда мы знаем основы режима, давайте посмотрим, как мы можем найти его с помощью Python.

Поиск режима с помощью Python

Чтобы найти режим с Python, мы начнем с подсчета количества вхождений каждого значения в рассматриваемом примере. Затем мы получим значение(ы) с большим числом вхождений.

Поскольку подсчет объектов является обычной операцией, Python предоставляет коллекции .Счетчик класс. Этот класс специально разработан для подсчета объектов.

Класс Counter предоставляет метод, определенный как .most_common([n]) . Этот метод возвращает список кортежей из двух элементов с n более распространенными элементами и их соответствующим количеством. Если n опущен или None , то функция .most_common() возвращает все элементы.

Давайте используем Counter и .most_common() для кодирования функции, которая берет образец данных и возвращает его режим.

Вот возможная реализация:

>>> from collections import Counter

>>> def my_mode(sample):
...     c = Counter(sample)
...     return [k for k, v in c.items() if v == c.most_common(1)[0][1]]
...

>>> my_mode(["male", "male", "female", "male"])
['male']

>>> my_mode(["few", "few", "many", "some", "many"])
['few', 'many']

>>> my_mode([4, 1, 2, 2, 3, 5])
[2]

>>> my_mode([4, 1, 2, 2, 3, 5, 4])
[4, 2]

Сначала мы подсчитываем наблюдения в выборке с помощью Счетчика объекта ( c ). Затем мы используем понимание списка для создания списка , содержащего наблюдения, которые появляются в выборке одинаковое количество раз.

Поскольку .most_common(1) возвращает список с одним кортежем формы (наблюдение, подсчет) , нам нужно получить наблюдение по индексу 0 в списке |/а затем элемент в индексе 1 во вложенном кортеже . Это можно сделать с помощью выражения c.most_common(1)[0][1] . Это значение является первым режимом нашей выборки.

Обратите внимание, что условие понимания сравнивает количество каждого наблюдения ( v ) с количеством наиболее распространенного наблюдения ( c.most_common(1)[0][1] ). Это позволит нам получить несколько наблюдений ( k ) с одинаковым количеством в случае многорежимной выборки.

Использование режима Python()

Python statistics.mode() берет некоторые данные и возвращает свой (первый) режим. Давайте посмотрим, как мы можем использовать его:

>>> import statistics

>>> statistics.mode([4, 1, 2, 2, 3, 5])
2

>>> statistics.mode([4, 1, 2, 2, 3, 5, 4])
4

>>> st.mode(["few", "few", "many", "some", "many"])
'few'

В одномодовом примере Python mode() возвращает наиболее распространенное значение, 2 . Однако в следующих двух примерах он вернулся 4 и немногие . В этих образцах были другие элементы, встречающиеся столько же раз, но они не были включены.

Поскольку Python 3.8 мы также можем использовать statistics.multimode () , который принимает итерацию и возвращает список режимов.

Вот пример того, как использовать multimode() :

>>> import statistics

>>> statistics.multimode([4, 1, 2, 2, 3, 5, 4])
[4, 2]

>>> statistics.multimode(["few", "few", "many", "some", "many"])
['few', 'many']

>>> st.multimode([4, 1, 2, 2, 3, 5])
[2]

Примечание: Функция всегда возвращает список , даже если вы передаете однорежимный образец.

Вывод

Среднее (или среднее), медиана и модус обычно являются нашими первыми взглядами на выборку данных, когда мы пытаемся понять центральную тенденцию данных.

В этом уроке мы узнали, как найти или вычислить среднее значение, медиану и режим с помощью Python. Сначала мы шаг за шагом рассмотрели, как создавать наши собственные функции для их вычисления, а затем как использовать модуль Python statistics в качестве быстрого способа поиска этих мер.