Добавление столбца в pandas по нескольким условиям

Пройдите тест, узнайте какой профессии подходите

Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Введение

Работа с данными в pandas часто требует добавления новых столбцов на основе существующих данных. В этой статье мы рассмотрим, как добавлять столбцы в DataFrame по нескольким условиям. Это полезный навык для анализа данных и подготовки их к дальнейшей обработке. Понимание того, как эффективно манипулировать данными, позволяет ускорить процесс анализа и сделать его более точным.

Кинга Идем в IT: пошаговый план для смены профессии

Основы pandas и DataFrame

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

Python
Скопировать код
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 для применения функции к каждому элементу столбца.

Python
Скопировать код
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' в противном случае.

Python
Скопировать код
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' в противном случае.

Python
Скопировать код
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' в противном случае.

Python
Скопировать код
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' в противном случае.

Python
Скопировать код
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.

Python
Скопировать код
df_filtered = df[(df['A'] > 2) & (df['B'] < 30)]
print(df_filtered)

Фильтрация данных по нескольким условиям позволяет выделить только те строки, которые соответствуют заданным критериям. Это полезно для анализа данных и подготовки их к дальнейшей обработке.

Заключение

Добавление столбцов по нескольким условиям в pandas — это важный навык для анализа данных. Мы рассмотрели несколько методов, включая использование numpy.where и метода apply с пользовательской функцией. Эти подходы помогут вам эффективно обрабатывать и анализировать данные в ваших проектах. Понимание того, как эффективно манипулировать данными, позволяет ускорить процесс анализа и сделать его более точным.

Читайте также