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