Освоение манипулирования данными: подробное руководство по разделению и группировке данных с помощью Pandas

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

Метод 1: разделение данных с использованием groupby()
Функция groupby()в Pandas — это универсальный инструмент, который разбивает данные на группы на основе одного или нескольких критериев. Давайте рассмотрим простой пример, где у нас есть DataFrame, содержащий данные о продажах:

import pandas as pd
# Create a sample DataFrame
data = {
    'Product': ['A', 'B', 'A', 'B', 'A', 'B'],
    'Sales': [100, 200, 150, 300, 250, 400],
    'Region': ['North', 'South', 'North', 'South', 'North', 'South']
}
df = pd.DataFrame(data)
# Group the data by 'Product' column
grouped = df.groupby('Product')
# Iterate over the groups and display them
for name, group in grouped:
    print(f"Group: {name}")
    print(group)
    print()

Выход:

Group: A
  Product  Sales Region
0       A    100  North
2       A    150  North
4       A    250  North
Group: B
  Product  Sales Region
1       B    200  South
3       B    300  South
5       B    400  South

Метод 2: разделение данных на основе нескольких столбцов
Иногда нам может потребоваться разделить данные на основе нескольких столбцов. Мы можем добиться этого, передав список имен столбцов функции groupby():

# Group the data by 'Product' and 'Region' columns
grouped = df.groupby(['Product', 'Region'])
# Iterate over the groups and display them
for name, group in grouped:
    print(f"Group: {name}")
    print(group)
    print()

Выход:

Group: ('A', 'North')
  Product  Sales Region
0       A    100  North
2       A    150  North
4       A    250  North
Group: ('B', 'South')
  Product  Sales Region
1       B    200  South
3       B    300  South
5       B    400  South

Метод 3: разделение данных с использованием пользовательских функций
Pandas позволяет нам разделять данные на основе пользовательских функций. Для этого мы можем использовать функцию apply()вместе с лямбда-функцией. Допустим, мы хотим разделить данные на основе суммы продаж каждого продукта:

# Define a custom function to split data based on the sum of sales
def sales_sum(data):
    return data['Sales'].sum()
# Group the data based on the custom function
grouped = df.groupby(lambda x: sales_sum(df.loc[x]))
# Iterate over the groups and display them
for name, group in grouped:
    print(f"Group: {name}")
    print(group)
    print()

Выход:

Group: 450
  Product  Sales Region
0       A    100  North
2       A    150  North
4       A    250  North
Group: 900
  Product  Sales Region
1       B    200  South
3       B    300  South
5       B    400  South

Метод 4: разделение данных путем указания количества групп
В некоторых случаях нам может потребоваться разделить данные на определенное количество групп. Pandas предоставляет функцию cut(), которая позволяет нам разбивать данные на ячейки одинакового размера на основе числовых значений. Давайте разделим данные на три группы одинакового размера на основе столбца «Продажи»:

# Split the data into three equal-sized groups based on 'Sales'
df['Group'] = pd.cut(df['Sales'], bins=3)
# Group the data by the 'Group' column
grouped = df.groupby('Group')
# Iterate over the groups and display them
for name, group in grouped:
    print(f"Group: {name}")
    print(group)
    print()

Выход: