Data Analysis with Pandas

Pandas: Эффективное суммирование столбцов DataFrame

Spread the love

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

Содержание:

  1. Базовое суммирование столбцов Pandas DataFrame
  2. Кумулятивная сумма с groupby()
  3. Условное суммирование на основе значений других столбцов

1. Базовое суммирование столбцов Pandas DataFrame

Простейший способ суммирования столбца Pandas DataFrame — использование метода .sum(). Он напрямую вычисляет сумму всех значений в указанном столбце. Нечисловые значения игнорируются.


import pandas as pd

data = {'A': [1, 2, 3, 4, 5],
        'B': [6, 7, 8, 9, 10],
        'C': [11, 12, 13, 14, 15]}
df = pd.DataFrame(data)

# Сумма столбца 'A'
sum_A = df['A'].sum()
print(f"Сумма столбца A: {sum_A}")  # Вывод: Сумма столбца A: 15

# Сумма столбца 'B'
sum_B = df['B'].sum()
print(f"Сумма столбца B: {sum_B}")  # Вывод: Сумма столбца B: 40

# Сумма всех числовых столбцов
sum_all = df.sum()
print(f"Сумма всех числовых столбцов:n{sum_all}")

2. Кумулятивная сумма с groupby()

Вычисление кумулятивных сумм в группах требует использования метода groupby() в сочетании с .cumsum(). Это позволяет эффективно агрегировать данные по различным категориям.


import pandas as pd

data = {'Group': ['X', 'X', 'Y', 'Y', 'Y'],
        'Value': [10, 20, 30, 40, 50]}
df = pd.DataFrame(data)

# Группировка по 'Group' и вычисление кумулятивной суммы 'Value'
cumulative_sum = df.groupby('Group')['Value'].cumsum()
df['Cumulative Sum'] = cumulative_sum
print(df)

Это выведет DataFrame со столбцом ‘Cumulative Sum’, показывающим кумулятивную сумму для каждой группы.

3. Условное суммирование на основе значений других столбцов

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


import pandas as pd

data = {'Category': ['A', 'B', 'A', 'B', 'A'],
        'Sales': [100, 150, 200, 250, 300]}
df = pd.DataFrame(data)

# Сумма 'Sales', где 'Category' равно 'A'
sum_A = df[df['Category'] == 'A']['Sales'].sum()
print(f"Сумма продаж для категории A: {sum_A}")  # Вывод: Сумма продаж для категории A: 600

# Сумма 'Sales', где 'Sales' больше 200
sum_greater_200 = df[df['Sales'] > 200]['Sales'].sum()
print(f"Сумма продаж больше 200: {sum_greater_200}") # Вывод: Сумма продаж больше 200: 550

Это демонстрирует фильтрацию DataFrame перед суммированием для мощной условной агрегации. Не забудьте адаптировать эти методы к вашим конкретным данным и требованиям. Pandas предоставляет множество инструментов для эффективного анализа данных.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *