Как найти медиану в пайтоне

Введение Когда мы пытаемся описать и обобщить выборку данных, мы, вероятно, начинаем с нахождения среднего [https://en.wikipedia.org/wiki/Mean] (или среднего), медианы [https: // en .wikipedia.org / wiki / Median] и режим [https://en.wikipedia.org/wiki/Mode_(statistics)] данных. Это центральная тенденция [https://en.wikipedia.org/wiki/Central_tendency] меры и часто первый взгляд на набор данных. В этом руководстве мы узнаем, как найти или вычислить среднее значение, медиану,

Вступление

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

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

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

Оглавление

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

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

Если у нас есть выборка числовых значений, то ее среднее или среднее

  • это общая сумма значений (или наблюдений), деленная на количество
    значений.

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

(4 + 8 + 6 + 5 + 3 + 2 + 8 + 9 + 2 + 5) / 10 = 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 mean ()

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

Вот как работает функция mean() Python:

 >>> 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) / 2 = 3.5 .

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

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

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

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

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

Если в выборке есть четное количество наблюдений, нам нужно найти два
средних значения. Скажем, у нас есть образец [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 выполняется, если в выборке есть четное
количество наблюдений. В этом случае мы находим медиану, вычисляя
среднее из двух средних значений.

Обратите внимание, что операция
нарезки
[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 потому что эти значения
появляются чаще и оба появляются одинаковое количество раз.

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

  • логическое значение — может принимать только два значения,
    например true или false , male или female
  • номинальный — может принимать более двух значений, например,
    American - European - Asian - African
  • порядковый — может принимать более двух значений, но значения
    имеют логический порядок, например, few - some - many

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

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

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

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

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

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

Класс Counter предоставляет метод, определенный как
.most_common([n]) . Этот метод возвращает list кортежей из двух
элементов с 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] 

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

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

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

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

Python statistics.mode() принимает некоторые data и возвращает свой
(первый) режим. Посмотрим, как это можно использовать:

 >>> 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 и few . В этих образцах были другие элементы, встречающиеся
такое же количество раз, но они не были включены.

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

Вот пример использования 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] 

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

Заключение

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

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

Sometimes, while working with Python list we can have a problem in which we need to find Median of list. This problem is quite common in the mathematical domains and generic calculations. Let’s discuss certain ways in which this task can be performed.
 Method #1 : Using loop + “~” operator This task can be performed in brute force manner using the combination of above functionalities. In this, we sort the list and the by using the property of “~” operator to perform negation, we access the list from front and rear, performing the required computation required for finding median. 

Python3

test_list = [4, 5, 8, 9, 10, 17]

print("The original list : " + str(test_list))

test_list.sort()

mid = len(test_list) // 2

res = (test_list[mid] + test_list[~mid]) / 2

print("Median of list is : " + str(res))

Output

The original list : [4, 5, 8, 9, 10, 17]
Median of list is : 8.5

Time Complexity: O(n) where n is the number of elements in the list “test_list”. loop + “~” operator performs n number of operations.
Auxiliary Space: O(1), constant extra space is required.

  Method #2 : Using statistics.median() This is the most generic method to perform this task. In this we directly use inbuilt function to perform the median of the list. 

Python3

import statistics

test_list = [4, 5, 8, 9, 10, 17]

print("The original list : " + str(test_list))

res = statistics.median(test_list)

print("Median of list is : " + str(res))

Output

The original list : [4, 5, 8, 9, 10, 17]
Median of list is : 8.5

Using python heapq.nlargest() or heapq.nsmallest()

Explanation: Using python’s heapq module, we can use the nlargest() or nsmallest() function to find the median of a list of numbers. This method is useful when we are working with large amount of data and we want to find median of large dataset with minimum memory footprint.

Python3

import heapq

test_list = [4, 5, 8, 9, 10, 17]

print("The original list : " + str(test_list))

mid = len(test_list) // 2

if len(test_list) % 2 == 0:

    res = (heapq.nlargest(mid, test_list)[-1] + heapq.nsmallest(mid, test_list)[-1]) / 2

else:

    res = heapq.nlargest(mid+1, test_list)[-1]

print("Median of list is : " + str(res))

Output

The original list : [4, 5, 8, 9, 10, 17]
Median of list is : 8.5

Time complexity: O(n log(k)) where k = len(test_list)/2
Auxiliary Space: O(k) where k = len(test_list)/2

Method  : Using sort the list:

Python3

test_list = [4, 5, 8, 9, 10, 17]

print("The original list : " + str(test_list))

test_list.sort()

n = len(test_list)

if n % 2 == 0:

    median = (test_list[n//2 - 1] + test_list[n//2]) / 2

else:

    median = test_list[n//2]

print("Median of list is : " + str(median))

Output

The original list : [4, 5, 8, 9, 10, 17]
Median of list is : 8.5

Time complexity: O(n log n)
Auxiliary Space: O(n) 

Last Updated :
12 Apr, 2023

Like Article

Save Article

Медиана (среднее значение) числовой последовательности.

Синтаксис:

import statistics

statistics.median(data)

Параметры:

  • data — данные, последовательность или итерация.

Возвращаемое значение:

  • медиану (среднее значение) числовой последовательности data.

Описание:

Функция median() модуля statistics возвращает медиану (среднее значение) числовой последовательности data, используя общий метод “среднее из двух средних”.

Аргумент данных data может быть последовательностью или итерацией. Если последовательность data пуста, то возникает ошибка StatisticsError.

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

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

>>> import statistics
>>> statistics.median([1, 3, 5])
# 3

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

>>> import statistics
>>> statistics.median([1, 3, 5, 7])
# 4.0

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

Если данные являются порядковыми (поддерживает операции с порядком), но не числовыми (не поддерживает сложение), рассмотрите возможность использования функции statistics.median_low() или statistics.median_high().

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

Эти три меры являются основными Главная тенденция. Центральная тенденция позволяет нам узнать «нормальные» или «средние» значения набора данных. Если вы только начинаете заниматься наукой о данных, это руководство для вас.

К концу этого урока вы:

  • Понимание понятия среднего, медианы и моды
  • Уметь создавать свои собственные функции среднего, медианы и режима в Python.
  • Используйте модуль статистики Python, чтобы быстро начать использовать эти измерения.

Если вам нужна загружаемая версия следующих упражнений, не стесняйтесь проверить Репозиторий GitHub.

Давайте рассмотрим различные способы вычисления среднего значения, медианы и моды.

иметь в виду или среднее арифметическое является наиболее часто используемой мерой центральной тенденции.

Помните, что центральная тенденция является типичным значением набора данных.

Набор данных — это набор данных, поэтому набор данных в Python может быть любой из следующих встроенных структур данных:

  • Списки, кортежи и наборы: коллекция объектов
  • Строки: набор символов
  • Словарь: набор пар ключ-значение

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

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

[1, 2, 3, 4, 5, 6]

Среднее значение будет 3,5, потому что сумма списка равна 21, а его длина равна 6. Двадцать один разделить на шесть равно 3,5. Вы можете выполнить этот расчет с помощью следующего расчета:

(1 + 2 + 3 + 4 + 5 + 6) / 6 = 21

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

Создание пользовательской функции среднего

Начнем с расчета среднего (среднего) возраста игроков баскетбольной команды. Название команды будет «Pythonic Machines».

pythonic_machine_ages = [19, 22, 34, 26, 32, 30, 24, 24]

def mean(dataset):
    return sum(dataset) / len(dataset)

print(mean(pythonic_machine_ages))

Разбираем этот код:

  • «pythonic_machine_ages» — это список возрастов баскетболистов.
  • Мы определяем функцию mean(), которая возвращает сумму данного набора данных, деленную на его длину.
    • Функция sum() возвращает общую сумму (по иронии судьбы) значений итерируемого объекта, в данном случае списка. Попробуйте передать набор данных в качестве аргумента, он вернет 211
    • Функция len() возвращает длину итерации, если вы передадите ей набор данных, вы получите 8
  • Мы передаем возраст баскетбольной команды в функцию mean() и печатаем результат.

Если вы проверите вывод, вы получите:

26.375
# Because 211 / 8 = 26.375

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

Использование mean() из статистического модуля Python

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

Поскольку это часть Стандартная библиотека Python вам не нужно будет устанавливать какой-либо внешний пакет с PIP.

Вот как вы используете этот модуль:

from statistics import mean

pythonic_machine_ages = [19, 22, 34, 26, 32, 30, 24, 24]

print(mean(pythonic_machine_ages))

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

26.375

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

Нахождение медианы в Python

медиана является средним значением отсортированного набора данных. Он используется — опять же — для предоставления «типичного» значения определенного Население.

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

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

  • Нечетный: медиана — это среднее значение набора данных.
  • Четное: медиана представляет собой сумму двух средних значений, деленную на два.

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

[181, 187, 196, 196, 198,  203, 207, 211, 215]
# Since the dataset is odd, we select the middle value
median = 198

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

Нам нужно будет вычислить медиану, взяв два средних значения набора данных.

[181, 187, 196, 198, 203, 207, 211, 215] 
# We select the two middle values, and divide them by 2
median = (198 + 203) / 2
median = 200.5

Создание пользовательской медианной функции

Давайте реализуем описанную выше концепцию в функции Python.

Помните три шага, которые нам нужно выполнить, чтобы получить медиану набора данных:

  • Сортировка набора данных: мы можем сделать это с помощью функции sorted()
  • Определите, является ли он нечетным или четным: мы можем сделать это, получив длину набора данных и используя оператор по модулю (%)
  • Верните медиану на основе каждого случая:
    • Нечетный: вернуть среднее значение
    • Даже: возвращает среднее значение двух средних значений.

Это приведет к следующей функции:

pythonic_machines_heights = [181, 187, 196, 196, 198, 203, 207, 211, 215]
after_retirement = [181, 187, 196, 198, 203, 207, 211, 215]

def median(dataset):
    data = sorted(dataset)
    index = len(data) // 2
    
    # If the dataset is odd  
    if len(dataset) % 2 != 0:
        return data[index]
    
    # If the dataset is even
    return (data[index - 1] + data[index]) / 2

Печать результата наших наборов данных:

print(median(pythonic_machines_heights))
print(median(after_retirement))

Выход:

198
200.5

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

Индекс сохраняет среднее значение — или верхне-среднее значение — набора данных с помощью оператора целочисленного деления. Например, если бы мы передавали список «pythonic_machine_heights», он имел бы значение 4.

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

Затем мы проверяем, является ли длина набора данных нечетной, сравнивая результат операции по модулю с любым значением, отличным от нуля. Если условие истинно, мы возвращаем средний элемент, например, со списком «pythonic_machine_heights»:

>>> pythonic_machine_heights[4]
# 198

С другой стороны, если набор данных четный, мы возвращаем сумму средних значений, деленную на два. Обратите внимание, что данные[index -1] дает нам нижнюю среднюю точку набора данных, а данные[index] дает нам верхнюю среднюю точку.

Использование median() из статистического модуля Python

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

Лично для меня, если бы что-то уже было определено, я бы использовал это из-за принципа DRY — Don’t Repeat Yourself (в данном случае — не повторять чужой код).

Вы можете вычислить медиану предыдущих наборов данных с помощью следующего кода:

from statistics import median

pythonic_machines_heights = [181, 187, 196, 196, 198, 203, 207, 211, 215]
after_retirement = [181, 187, 196, 198, 203, 207, 211, 215]

print(median(pythonic_machines_heights))
print(median(after_retirement))

Выход:

198
200.5

Вычисление режима в Python

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

Примером режима могут быть ежедневные продажи в магазине техники. Режим этого набора данных будет самым продаваемым продуктом за определенный день.

['laptop', 'desktop', 'smartphone', 'laptop', 'laptop', 'headphones']

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

Преимущество режима в том, что набор данных не должен быть числовым. Например, мы можем работать со строками.

Проанализируем продажи другого дня:

['mouse', 'camera', 'headphones', 'usb', 'headphones', 'mouse']

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

Что, если мы не сможем найти моду в наборе данных, как показано ниже?

['usb', 'camera', 'smartphone', 'laptop', 'TV']

Это называется равномерное распределениепо сути, это означает, что в наборе данных нет моды.

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

Создание функции пользовательского режима

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

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

Чтобы сначала найти моду, нам нужно создать словарь частот с каждым из значений, присутствующих в наборе данных, затем получить максимальную частоту и вернуть все элементы с этой частотой.

Переведем это в код:

points_per_game = [3, 15, 23, 42, 30, 10, 10, 12]
sponsorship = ['nike', 'adidas', 'nike', 'jordan',
               'jordan', 'rebook', 'under-armour', 'adidas']

def mode(dataset):
    frequency = {}

    for value in dataset:
        frequency[value] = frequency.get(value, 0) + 1

    most_frequent = max(frequency.values())

    modes = [key for key, value in frequency.items()
                      if value == most_frequent]

    return modes

Проверка результата с передачей двух списков в качестве аргументов:

print(mode(points_per_game))
print(mode(sponsorship))

Выход:

[10]
['nike', 'adidas', 'jordan']

Как видите, первый оператор печати дал нам один режим, а второй вернул несколько режимов.

Объяснение более глубокого кода выше:

  • Объявляем частотный словарь
  • Мы перебираем набор данных, чтобы создать гистограмма — статистический термин для набора счетчиков (или частот) —
    • Если ключ найден в словаре, то он добавляет единицу к значению
    • Если он не найден, мы создаем пару ключ-значение со значением один
  • Переменная most_frequent хранит, по иронии судьбы, самое большое значение (не ключ) частотного словаря.
  • Мы возвращаем переменную режимов, которая состоит из всех ключей в частотном словаре с наибольшей частотой.

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

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

И снова модуль статистики предоставляет нам быстрый способ выполнения основных операций со статистикой.

Мы можем использовать две функции: Режим() а также многомодовый().

from statistics import mode, multimode

points_per_game = [3, 15, 23, 42, 30, 10, 10, 12]
sponsorship = ['nike', 'adidas', 'nike', 'jordan',
               'jordan', 'rebook', 'under-armour', 'adidas']

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

Вот небольшое отличие: функция mode() возвращает первый обнаруженный режим, а multimode() возвращает список с наиболее часто встречающимися значениями в наборе данных.

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

print(mode(points_per_game))
print(mode(sponsorship))

Выход:

10
nike

Примечание. В Python 3.8 и более поздних версиях функция mode() возвращает первый найденный режим. Если у вас более старая версия, вы получите СтатистикаОшибка.

Использование функции multimode():

print(multimode(points_per_game))
print(multimode(sponsorship))

Выход:

[10]
['nike', 'adidas', 'jordan']

Подводить итоги

Поздравляем! Если вы дочитали до этого момента, вы научились вычислять среднее значение, медиану и моду, основные измерения центральной тенденции.

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

Затем прочитайте дружественное введение в анализ данных в Python.

  • Редакция Кодкампа

17 авг. 2022 г.
читать 1 мин


Вы можете использовать функцию median() , чтобы найти медиану одного или нескольких столбцов в кадре данных pandas:

#find median value in specific column
df['column1']. median ()

#find median value in several columns
df[['column1', 'column2']]. median ()

#find median value in every numeric column
df.median ()

В следующих примерах показано, как использовать эту функцию на практике со следующими пандами DataFrame:

#create DataFrame
df = pd.DataFrame({'player': ['A', 'B', 'C', 'D', 'E', 'F', 'G', 'H'],
 'points': [25, pd.NA , 15, 14, 19, 23, 25, 29],
 'assists': [5, 7, 7, 9, 12, 9, 9, 4],
 'rebounds': [11, 8, 10, 6, 6, 5, 9, 12]})

#view DataFrame
df

 player points assists rebounds
0 A 25 5 11
1 B NA 7 8
2 C 15 7 10
3 D 14 9 6
4 E 19 12 6
5 F 23 9 5
6 G 25 9 9
7 H 29 4 12

Пример 1: найти медиану одного столбца

В следующем коде показано, как найти медианное значение одного столбца в кадре данных pandas:

#find median value of *points* column
df['points']. median ()

23.0

Среднее значение в столбце очков равно 23 .

Обратите внимание, что по умолчанию функция median() игнорирует любые отсутствующие значения при вычислении медианы.

Пример 2: найти медиану нескольких столбцов

В следующем коде показано, как найти медианное значение нескольких столбцов в кадре данных pandas:

#find median value of *points* and *rebounds* columns
df[['points', 'rebounds']]. median ()

points 23.0
rebounds 8.5
dtype: float64

Пример 3. Найдите медиану всех числовых столбцов

В следующем коде показано, как найти медианное значение всех числовых столбцов в кадре данных pandas:

#find median value of all numeric columns
df.median ()

points 23.0
assists 8.0
rebounds 8.5
dtype: float64

Дополнительные ресурсы

Как рассчитать среднее значение столбцов в Pandas
Как рассчитать сумму столбцов в Pandas
Как найти максимальное значение столбцов в Pandas

Понравилась статья? Поделить с друзьями:
  • Как найти площадь треугольника если известны точки
  • Как найти показания вольтметра в физике
  • Как найти фотографию по образцу
  • Как найти выражение которое принимает наибольшее значение
  • Общение в сети как найти свое