В мире анализа и обработки данных 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()
Выход: