Вычисление Взвешенного Среднего в Pandas и Python
Last updated
Last updated
В этом руководстве вы узнаете, как рассчитать взвешенное среднее с использованием Pandas и Python. Взвешенные средние учитывают "веса" заданных значений, что делает их более репрезентативными для фактического среднего. Это имеет множество практических применений, включая расчет прогнозов продаж или оценку эффективности за разные периоды времени.
Хотя Pandas оснащён множеством полезных встроенных функций, таких как чрезвычайно простой способ вычисления среднего значения столбца, в нём нет встроенной функции для расчёта средневзвешенного значения. Однако это не проблема, так как Pandas позволяет легко определить функцию для выполнения этой задачи.
В конце этого учебного материала вы узнаете, что такое взвешенное среднее и чем оно отличается от обычного арифметического среднего, как рассчитать взвешенное среднее столбца в Pandas, а также как вычислить его на основе двух различных списков.
Краткий ответ: Используйте Pandas
Оглавление
Термин взвешенное среднее относится к среднему значению, которое учитывает различные степени важности чисел в наборе данных. Поэтому взвешенное среднее, вероятно, будет отличаться от значения, рассчитанного с использованием арифметического среднего.
Формула для вычисления взвешенного среднего выглядит следующим образом:
Эта формула представляет собой сумму каждого элемента, умноженного на его вес, делённую на количество элементов.
Давайте посмотрим, как это сравнивается с примерами данных. Рассмотрим следующую таблицу, где мы хотим вычислить среднюю оценку по каждому курсу.
3
90
2
85
4
95
6
85
2
70
Если бы мы рассчитывали обычное среднее, его можно было бы вычислить так:
( 90 + 85 + 95 + 85 + 70 ) / 5
Тем не менее, это может создать некоторые проблемы из-за различий в количестве курсов. Если мы действительно хотим посчитать среднюю оценку за курс, нам стоит рассмотреть расчет взвешенного среднего.
Этот расчет будет выглядеть
( 90×3 + 85×2 + 95×4 + 85×4 + 70×2 ) / (3 + 2 + 4 + 6 + 2 )
Это может дать нам гораздо более репрезентативную оценку за курс
Давайте посмотрим, как мы можем разработать пользовательскую функцию для вычисления взвешенного среднего в Pandas.
В этом разделе вы узнаете, как использовать Python для создания пользовательской функции, чтобы рассчитать средневзвешенное значение в DataFrame Pandas. Хотя в Pandas есть встроенный метод mean()
, нам потребуется разработать пользовательскую функцию. Это потому, что средневзвешенное значение фактически зависит от нескольких переменных: одной, которая определяет вес, и другой, содержащей фактические значения.
Давайте загрузим наш пример таблицы сверху как датафрейм, который мы можем использовать на протяжении всего руководства:
Мы можем разработать настраиваемую функцию, которая вычисляет взвешенное среднее, передавая два аргумента: столбец, содержащий веса, и столбец, содержащий оценки.
Давайте посмотрим, как будет выглядеть
Давайте разберемся, что мы здесь сделали:
Мы создали функцию, которая принимает на вход DataFrame и два столбца: один для значений, другой для весов.
Затем мы вводим формулу, которая вычисляет сумму весов, умноженных на значения, деленную на сумму значений
В следующем разделе вы научитесь использовать метод groupby()
для вычисления средневзвешенного в Pandas.
Бывают случаи, когда у вас есть третья переменная, по которой вы хотите разделить ваши данные. Например, если наши данные также разбиты по годам, мы захотим рассчитать взвешенное среднее по каждому году. Вот где метод .groupby()
вступает в игру.
Давайте добавим столбец с годом в наш датафрейм и посмотрим, как можно вычислить средневзвешенное значение для каждого года:
Здесь мы сначала используем метод .groupby()
, чтобы сгруппировать наши данные по годам. Затем мы применяем функцию и передаем в неё два столбца. Это возвращает напечатанную серию данных.
В следующем разделе вы узнаете, как использовать numpy для вычисления взвешенного среднего.
Библиотека numpy имеет функцию average()
, которая позволяет передавать необязательный аргумент для указания весов значений. Функция принимает массив в аргументе a=
, и другой массив для весов в аргументе weights=
.
Посмотрим, как мы можем вычислить средневзвешенное значение Pandas Dataframe с использованием numpy:
Это более аккуратный способ расчета взвешенного среднего значения в DataFrame Pandas. Важно учитывать читаемость при написании кода – вы хотите, чтобы ваш код был интуитивно понятным. Если это требует импорта другой функции из модуля, то это может быть стоящим компромиссом.
В следующем разделе вы узнаете, как вычислить взвешенное среднее из двух списков, используя функцию zip
в Python.
В этом разделе вы узнаете, как вычислить средневзвешенное двух списков с помощью функции zip
в Python. Хотя этот метод может быть не таким практичным, как другие описанные выше методы, он может пригодиться на собеседованиях по программированию.
Предположим, у вас есть два списка: один содержит веса, а другой содержит фактические значения.
Мы можем вычислить средневзвешенное значение списка значений, используя следующий подход:
В приведенном выше примере мы разработали новую функцию, которая принимает два списка в качестве параметров. Функция создает новый список, затем выполняет итерацию по zip-объекту, возвращенному из двух списков. Значения перемножаются и суммируются, затем делятся на сумму весов.
В этом учебнике вы узнали, как рассчитать средневзвешенное значение в Pandas, включая использование Pandas, пользовательской функции, numpy и функции zip. Умение рассчитывать средневзвешенное значение имеет множество практических применений, включая использование в бизнесе и науке.
Чтобы узнать больше о функции average
в numpy, ознакомьтесь с .