Операции с данными (объединение, применение функций)

В Pandas операции с данными, такие как объединение и применение функций, позволяют эффективно работать с различными источниками данных и выполнять сложные манипуляции. Вот подробное руководство по этим операциям:

Объединение данных

Объединение данных в Pandas включает в себя несколько ключевых операций: объединение (merge), объединение по ключу (join), и конкатенация (concat).

Объединение (Merge)

Метод merge() позволяет объединять два DataFrame по ключевым столбцам. Это похоже на SQL JOIN.

import pandas as pd

# Создание двух DataFrame
df1 = pd.DataFrame({
    'ID': [1, 2, 3],
    'Name': ['Alice', 'Bob', 'Charlie']
})

df2 = pd.DataFrame({
    'ID': [1, 2, 4],
    'Age': [25, 30, 40]
})

# Объединение по столбцу 'ID'
merged_df = pd.merge(df1, df2, on='ID', how='inner')  # 'inner', 'left', 'right', 'outer'
print(merged_df)

Параметры pd.merge():

  • left: Левый DataFrame.

  • right: Правый DataFrame.

  • on: Столбец или индексы, по которым производится объединение.

  • how: Тип объединения ('inner', 'left', 'right', 'outer').

Объединение по индексу (Join)

Метод join() позволяет объединять DataFrame по индексам.

# Создание двух DataFrame с индексами
df1 = pd.DataFrame({
    'Name': ['Alice', 'Bob', 'Charlie']
}, index=[1, 2, 3])

df2 = pd.DataFrame({
    'Age': [25, 30, 40]
}, index=[1, 2, 4])

# Объединение по индексам
joined_df = df1.join(df2, how='inner')  # 'inner', 'left', 'right', 'outer'
print(joined_df)

Конкатенация (Concat)

Метод concat() позволяет объединять DataFrame или Series вдоль определённой оси.

# Создание двух DataFrame
df1 = pd.DataFrame({
    'Name': ['Alice', 'Bob'],
    'Age': [25, 30]
})

df2 = pd.DataFrame({
    'Name': ['Charlie', 'David'],
    'Age': [35, 40]
})

# Конкатенация по строкам (axis=0)
concat_df = pd.concat([df1, df2], axis=0)
print(concat_df)

# Конкатенация по столбцам (axis=1)
concat_df_columns = pd.concat([df1, df2], axis=1)
print(concat_df_columns)

Применение функций

Методы для применения функций позволяют обрабатывать и трансформировать данные в DataFrame и Series.

Применение функций с помощью apply()

Метод apply() позволяет применять функцию к строкам или столбцам.

# Создание DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6]
})

# Применение функции к столбцам
def add_one(x):
    return x + 1

df_applied = df.apply(add_one)
print(df_applied)

Применение функций по строкам и столбцам

Вы можете использовать параметр axis для указания, к каким объектам применять функцию:

# Применение функции по столбцам (по умолчанию axis=0)
col_sum = df.apply(lambda x: x.sum())
print(col_sum)

# Применение функции по строкам
row_sum = df.apply(lambda x: x.sum(), axis=1)
print(row_sum)

Использование map() для Series

Метод map() позволяет применять функцию к значениям Series.

# Создание Series
s = pd.Series([1, 2, 3])

# Применение функции
s_mapped = s.map(lambda x: x ** 2)
print(s_mapped)

Использование applymap() для DataFrame

Метод applymap() позволяет применять функцию ко всем элементам DataFrame.

# Создание DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6]
})

# Применение функции ко всем элементам
df_applymap = df.applymap(lambda x: x * 2)
print(df_applymap)

Использование agg() для агрегирования

Метод agg() позволяет выполнять несколько агрегирующих функций одновременно.

# Создание DataFrame
df = pd.DataFrame({
    'A': [1, 2, 3],
    'B': [4, 5, 6]
})

# Применение нескольких агрегирующих функций
agg_result = df.agg({'A': ['sum', 'mean'], 'B': ['max', 'min']})
print(agg_result)

Примеры полного кода

import pandas as pd

# Объединение DataFrame
df1 = pd.DataFrame({'ID': [1, 2, 3], 'Name': ['Alice', 'Bob', 'Charlie']})
df2 = pd.DataFrame({'ID': [1, 2, 4], 'Age': [25, 30, 40]})
merged_df = pd.merge(df1, df2, on='ID', how='inner')
print('Merged DataFrame:\n', merged_df)

# Конкатенация DataFrame
df1 = pd.DataFrame({'Name': ['Alice', 'Bob'], 'Age': [25, 30]})
df2 = pd.DataFrame({'Name': ['Charlie', 'David'], 'Age': [35, 40]})
concat_df = pd.concat([df1, df2], axis=0)
print('\nConcatenated DataFrame:\n', concat_df)

# Применение функции
df = pd.DataFrame({'A': [1, 2, 3], 'B': [4, 5, 6]})
df_applied = df.apply(lambda x: x + 1)
print('\nApplied Function DataFrame:\n', df_applied)

# Использование map() для Series
s = pd.Series([1, 2, 3])
s_mapped = s.map(lambda x: x ** 2)
print('\nMapped Series:\n', s_mapped)

# Использование applymap() для DataFrame
df_applymap = df.applymap(lambda x: x * 2)
print('\nApplymap DataFrame:\n', df_applymap)

# Использование agg() для агрегирования
agg_result = df.agg({'A': ['sum', 'mean'], 'B': ['max', 'min']})
print('\nAggregation Result:\n', agg_result)

Заключение

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

Last updated