Pandas Sum: сложение столбцов и строк DataFrame
В этом руководстве вы научитесь использовать Pandas для вычисления суммы, включая сложение значений по столбцам и строкам DataFrame. Умение складывать значения для расчета общей суммы по столбцам или строкам позволяет получать полезные итоговые статистики.
К концу этого урока вы научитесь:
Вычислить сумму столбца Pandas Dataframe
Вычислить сумму строки Pandas Dataframe
Добавьте столбцы Pandas Dataframe вместе
Добавьте столбцы Pandas Dataframe, которые соответствуют условию
Рассчитать сумму группы Pandas Dataframe
Быстрый ответ: используйте Pandas .sum() для добавления столбцов и строк Dataframe
По столбцам
Добавьте все числовые значения в столбец Pandas или столбцы таблицы данных.
df['column name'].sum()
Построчно
Add все числовые значения в строке Pandas
df.sum(axis=1)
Конкретные столбцы
Добавить значения определенных столбцов
df['column 1'] + df['column 2']
Оглавление
Загрузка образца Pandas Dataframe
Если вы хотите следовать за учебником построчно, скопируйте код ниже. Этот код загружает пример DataFrame в Pandas, на который мы будем ссылаться на протяжении всего учебника. Если у вас есть собственные данные, вы можете использовать их, чтобы следовать, но ваши результаты
# Загрузка примера DataFrame с использованием Pandas
import pandas as pd
df = pd.DataFrame.from_dict({
'Name': ['Nik', 'Kate', 'Kevin', 'Evan', 'Jane', 'Kyra', 'Melissa'],
'January_Sales': [90, 95, 75, 93, 60, 85, 75],
'February_Sales': [95, 95, 75, 65, 50, 85, 100],
'March_Sales': [100, 95, 50, 75, 90, 50, 80]
})
print(df.head())
# Возвращает:
# Name January_Sales February_Sales March_Sales
# 0 Nik 90 95 100
# 1 Kate 95 95 95
# 2 Kevin 75 75 50
# 3 Evan 93 65 75
# 4 Jane 60 50 90
У нас есть четыре колонки: одна содержит имя продавца, и три содержат значения продаж каждого продавца.
В следующем разделе вы узнаете, как использовать Pandas для суммирования всех значений в столбце dataframe.
Вычислить сумму столбца Pandas Dataframe
Обычной задачей может быть сложение всех значений в столбце Dataframe Pandas. К счастью, Pandas упрощает это с помощью метода sum
. Мы можем применить этот метод как к серии Pandas (то есть к столбцу), так и ко всему dataframe.
Начнем с того, как суммировать все значения в столбце Pandas:
# Суммирование всех значений в столбце Pandas
january_sum = df['January_Sales'].sum()
print(january_sum)
# Возвращает: 572
Аналогично, мы можем вычислить сумму всех столбцов в Pandas Dataframe. Для этого просто применяем метод sum
ко всему датафрейму
Давайте попробуем:
# Вычисление суммы всех столбцов в DataFrame Pandas
dataframe_sum = df.sum()
print(dataframe_sum)
# Возвращает:
# Name NikKateKevinEvanJaneKyraMelissa
# January_Sales 573
# February_Sales 565
# March_Sales 540
Это возвращает объект Series из Pandas, с которым легко работать, если мы хотим получить сумму определенного столбца. По умолчанию Pandas будет складывать только числовые столбцы, то есть столбец "Name" не будет учитываться
В следующем разделе вы узнаете, как вычислить сумму строки в DataFrame Pandas.
Вычислить сумму строки Pandas Dataframe
Во многих случаях вам захочется суммировать значения по строкам в DataFrame Pandas. Подобно приведенному выше примеру, мы можем использовать метод .sum
. По умолчанию, Pandas применит аргумент axis=0
, который будет суммировать значения по индексам. Если мы изменим это на axis=1
, значения будут суммироваться по столбцам.
Давайте посмотрим, как можно складывать значения по строкам
# Суммирование строк DataFrame с использованием .sum()
dataframe_sum = df.sum(axis=1, numeric_only=True)
print(dataframe_sum)
# Возвращает:
# 0 285
# 1 285
# 2 200
# 3 233
# 4 200
# 5 220
# 6 255
# dtype: int64
Вы можете задаться вопросом, почему мы применяем здесь аргумент numeric_only=True
. В будущих версиях Pandas будет выдаваться TypeError
, если будут включены нечисловые столбцы.
Что, если мы захотим присвоить индекс, чтобы строки было легче различать? Мы можем сделать это с помощью метода Pandas set_index
. Давайте посмотрим, как это выглядит:
# Суммирование строк DataFrame с использованием .sum()
dataframe_sum = df.sum(axis=1, numeric_only=True)
print(dataframe_sum)
# Возвращает:
# 0 285
# 1 285
# 2 200
# 3 233
# 4 200
# 5 220
# 6 255
# dtype: int64
Этот результат более чистый и позволяет лучше видеть идентификатор строки, который в данном случае является именем продавца.
В следующем разделе вы узнаете, как просто сложить некоторые столбцы DataFrame в Pandas.
Добавьте столбцы Pandas Dataframe вместе
Pandas упрощает сложение различных столбцов выборочно. Если мы хотим сложить только два столбца построчно, а не все, мы можем просто сложить столбцы непосредственно. Преимущество этого подхода в том, что мы можем создать новый столбец для хранения.
Давайте посмотрим, как это выглядит:
# Установка индекса и суммирование всех строк DataFrame
dataframe_sum = df.set_index('Name').sum(axis=1, numeric_only=True)
print(dataframe_sum)
# Возвращает:
# Name
# Nik 285
# Kate 285
# Kevin 200
# Evan 233
# Jane 200
# Kyra 220
# Melissa 255
# dtype: int64
Мы видим, что создали новый столбец, который хранит сумму двух наших столбцов. Прекрасная черта этой операции в том, что она векторизована, что означает ее высокую скорость и возможность эффективно использовать мощь Pandas.
В следующем разделе вы узнаете, как условно добавлять столбцы в датафрейм
Добавьте столбцы Pandas Dataframe, которые соответствуют условию
There may be times when you want to add multiple columns in a dataframe, but not all of them. We can do this by adding Pandas columns conditionally, with the help of a list comprehension.
For this example, let’s modify our dataframe to include an additional numerical column:
# Загрузка и модификация примера DataFrame с использованием Pandas
import pandas as pd
df = pd.DataFrame.from_dict({
'Name': ['Nik', 'Kate', 'Kevin', 'Evan', 'Jane', 'Kyra', 'Melissa'],
'January_Sales': [90, 95, 75, 93, 60, 85, 75],
'February_Sales': [95, 95, 75, 65, 50, 85, 100],
'March_Sales': [100, 95, 50, 75, 90, 50, 80],
'Some Random Number': [1,2,3,4,5,6,7]
})
print(df.head())
# Возвращает:
# Name January_Sales February_Sales March_Sales Some Random Number
# 0 Nik 90 95 100 1
# 1 Kate 95 95 95 2
# 2 Kevin 75 75 50 3
# 3 Evan 93 65 75 4
# 4 Jane 60 50 90 5
Теперь, когда мы складываем значения наших строк, возможно, не имеет смысла включать последний столбец. Допустим, мы хотим включить только те столбцы, которые содержат слово "Sales". Для этого мы можем создать генератор списков, который проверяет, входит ли слово "Sales" в столбец или нет.
Давайте посмотрим, как мы
# Получение списка столбцов, содержащих 'Sales' в названии
sales_columns = [col for col in df.columns if 'Sales' in col]
print(sales_columns)
# Возвращает: ['January_Sales', 'February_Sales', 'March_Sales']
Вы можете узнать больше о том, как это сделать, в этом руководстве, изучив, как итерировать по столбцам и проверять условие. Чтобы это сделать, мы сначала используем Pandas, чтобы получить столбцы нашего DataFrame в виде списка
Вы можете узнать больше о том, как это сделать в этом руководстве, изучив, как перебирать столбцы и проверять условие. Для этого мы сначала используем Pandas, чтобы получить столбцы нашего DataFrame как список
Теперь, когда мы выбрали наши столбцы, мы можем использовать аргумент axis=1
и сложить только те столбцы, которые содержат продажи. Давайте посмотрим, как это выглядит
# Добавление столбца условно в Pandas
sales_columns = [col for col in df.columns if 'Sales' in col]
df['Total Sales'] = df[sales_columns].sum(axis=1)
print(df.head())
# Возвращает:
# Name January_Sales February_Sales March_Sales Some Random Number Total Sales
# 0 Nik 90 95 100 1 285
# 1 Kate 95 95 95 2 285
# 2 Kevin 75 75 50 3 200
# 3 Evan 93 65 75 4 233
# 4 Jane 60 50 90 5 200
Таким образом, мы можем безопасно суммировать значения по строкам, не включая ненужные столбцы.
В следующем разделе вы узнаете, как вычислить сумму в Pandas DataFrame, когда данные сгруппированы с использованием groupby
.
Рассчитать сумму группы Pandas Dataframe
В этом заключительном разделе вы узнаете, как вычислить сумму в Pandas DataFrame при группировке данных с помощью метода groupby
. Для этого мы изменим наш датафрейм, добавив столбец с полом продавца. Это позволит сгруппировать данные по полу и подсчитать итоги по полу.
# Загрузка примера DataFrame с использованием Pandas
import pandas as pd
df = pd.DataFrame.from_dict({
'Name': ['Nik', 'Kate', 'Kevin', 'Evan', 'Jane', 'Kyra', 'Melissa'],
'Gender': ['Male', 'Female', 'Male', 'Male', 'Female', 'Female', 'Female'],
'January_Sales': [90, 95, 75, 93, 60, 85, 75],
'February_Sales': [95, 95, 75, 65, 50, 85, 100],
'March_Sales': [100, 95, 50, 75, 90, 50, 80],
})
print(df.head())
# Возвращает:
# Name Gender January_Sales February_Sales March_Sales
# 0 Nik Male 90 95 100
# 1 Kate Female 95 95 95
# 2 Kevin Male 75 75 50
# 3 Evan Male 93 65 75
# 4 Jane Female 60 50 90
Теперь мы можем группировать наши данные используя метод groupby, чтобы сгруппировать их по полу. Чтобы узнать больше о группировке данных с помощью метода groupby
, посмотрите мое видео здесь:
Сгруппируем наши данные и сложим все числовые столбцы:
# Группировка данных по столбцу 'Gender' и суммирование значений
grouped = df.groupby('Gender').sum()
print(grouped)
# Возвращает:
# January_Sales February_Sales March_Sales
# Gender
# Female 315 330 315
# Male 258 235 225
Мы можем увидеть, что, сначала группируя наши данные по Gender
, а затем суммируя значения в dataframe, получаем сумму по столбцам на основе группировки по полу.
Заключение
В этом уроке вы узнали, как использовать метод суммирования в Pandas для вычисления сумм в датафреймах. Вы научились добавлять значения построчно и поколоночно. Вы также узнали, как добавлять столбцы по условиям и складывать значения в сгруппированном датафрейме.
Чтобы узнать больше о функции sum
в Pandas, ознакомьтесь с официальной документацией здесь.
Дополнительные ресурсы
Ознакомьтесь со ссылками ниже, чтобы узнать о связанных темах:
Функция ранжирования Pandas: ранжирование данных Dataframe (эквивалент SQL row_number)
Pandas Describe: Описательная статистика по вашему фрейму данных
Дисперсия Pandas: расчет дисперсии столбца Pandas Dataframe
Среднее значение Pandas: вычисление среднего значения Pandas для одного или нескольких столбцов
Last updated