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