Добавление столбца в pandas по нескольким условиям
Введение
Работа с данными в pandas часто требует добавления новых столбцов на основе существующих данных. В этой статье мы рассмотрим, как добавлять столбцы в DataFrame по нескольким условиям. Это полезный навык для анализа данных и подготовки их к дальнейшей обработке. Понимание того, как эффективно манипулировать данными, позволяет ускорить процесс анализа и сделать его более точным.
Основы pandas и DataFrame
Pandas — это мощная библиотека для анализа данных в Python. Она предоставляет структуры данных и функции для работы с таблицами и временными рядами. Основной структурой данных в pandas является DataFrame, который представляет собой двумерную таблицу с метками строк и столбцов. DataFrame позволяет легко манипулировать данными, фильтровать их, сортировать и выполнять множество других операций.
import pandas as pd
# Пример создания DataFrame
data = {
'A': [1, 2, 3, 4],
'B': [10, 20, 30, 40]
}
df = pd.DataFrame(data)
print(df)
DataFrame в pandas можно создать из различных источников данных, таких как списки, словари, массивы NumPy, а также из внешних источников, таких как файлы CSV, базы данных и веб-API. Это делает pandas универсальным инструментом для работы с данными.
Добавление столбца по одному условию
Прежде чем перейти к добавлению столбца по нескольким условиям, рассмотрим, как это сделать по одному условию. Например, добавим столбец 'C', который будет содержать значения 'Yes', если значение в столбце 'A' больше 2, и 'No' в противном случае. Это простой пример, который демонстрирует, как можно использовать метод apply
для применения функции к каждому элементу столбца.
df['C'] = df['A'].apply(lambda x: 'Yes' if x > 2 else 'No')
print(df)
Метод apply
позволяет применять функцию к каждому элементу столбца или строки DataFrame. Это мощный инструмент для выполнения различных операций над данными, включая фильтрацию, преобразование и агрегацию.
Добавление столбца по нескольким условиям
Теперь перейдем к более сложной задаче — добавлению столбца по нескольким условиям. Для этого можно использовать функцию numpy.where
или метод apply
с пользовательской функцией. Эти методы позволяют задавать сложные условия и выполнять различные действия в зависимости от их выполнения.
Метод с использованием numpy.where
Функция numpy.where
позволяет задавать условия и возвращать значения в зависимости от их выполнения. Рассмотрим пример, где мы добавим столбец 'D', который будет содержать 'High', если значение в столбце 'A' больше 2 и значение в столбце 'B' больше 20, и 'Low' в противном случае.
import numpy as np
df['D'] = np.where((df['A'] > 2) & (df['B'] > 20), 'High', 'Low')
print(df)
Функция numpy.where
позволяет задавать условия и возвращать значения в зависимости от их выполнения. Это мощный инструмент для выполнения различных операций над данными, включая фильтрацию, преобразование и агрегацию.
Метод с использованием apply и пользовательской функции
Другой способ — использовать метод apply
с пользовательской функцией. Это позволяет более гибко задавать условия и обрабатывать данные. Рассмотрим пример, где мы добавим столбец 'D', который будет содержать 'High', если значение в столбце 'A' больше 2 и значение в столбце 'B' больше 20, и 'Low' в противном случае.
def categorize(row):
if row['A'] > 2 and row['B'] > 20:
return 'High'
else:
return 'Low'
df['D'] = df.apply(categorize, axis=1)
print(df)
Метод apply
позволяет применять функцию к каждому элементу столбца или строки DataFrame. Это мощный инструмент для выполнения различных операций над данными, включая фильтрацию, преобразование и агрегацию.
Примеры и практические задачи
Рассмотрим несколько примеров и практических задач, чтобы закрепить материал. Эти примеры помогут вам лучше понять, как использовать методы numpy.where
и apply
для добавления столбцов по нескольким условиям.
Пример 1: Категоризация по возрасту и доходу
Предположим, у нас есть DataFrame с данными о возрасте и доходе людей. Мы хотим добавить столбец 'Category', который будет содержать 'Senior' для людей старше 60 лет с доходом выше 50000, и 'Junior' в противном случае.
data = {
'Age': [25, 45, 65, 70],
'Income': [30000, 50000, 70000, 80000]
}
df = pd.DataFrame(data)
df['Category'] = np.where((df['Age'] > 60) & (df['Income'] > 50000), 'Senior', 'Junior')
print(df)
Пример 2: Оценка успеваемости студентов
У нас есть данные о студентах и их оценках по двум предметам. Мы хотим добавить столбец 'Performance', который будет содержать 'Excellent', если обе оценки выше 80, и 'Needs Improvement' в противном случае.
data = {
'Math': [90, 85, 70, 60],
'Science': [95, 80, 75, 65]
}
df = pd.DataFrame(data)
df['Performance'] = np.where((df['Math'] > 80) & (df['Science'] > 80), 'Excellent', 'Needs Improvement')
print(df)
Пример 3: Фильтрация данных по нескольким условиям
Иногда требуется не только добавить столбец, но и отфильтровать данные по нескольким условиям. Рассмотрим пример, где мы оставим только те строки, где значения в столбце 'A' больше 2 и значения в столбце 'B' меньше 30.
df_filtered = df[(df['A'] > 2) & (df['B'] < 30)]
print(df_filtered)
Фильтрация данных по нескольким условиям позволяет выделить только те строки, которые соответствуют заданным критериям. Это полезно для анализа данных и подготовки их к дальнейшей обработке.
Заключение
Добавление столбцов по нескольким условиям в pandas — это важный навык для анализа данных. Мы рассмотрели несколько методов, включая использование numpy.where
и метода apply
с пользовательской функцией. Эти подходы помогут вам эффективно обрабатывать и анализировать данные в ваших проектах. Понимание того, как эффективно манипулировать данными, позволяет ускорить процесс анализа и сделать его более точным.