Категоризация данных и разбиение на интервалы

Категоризация данных и разбиение на интервалы являются важными техниками в анализе данных, особенно когда необходимо преобразовать числовые значения в категориальные или упрощить работу с непрерывными переменными. В pandas для этого существуют несколько методов, таких как pd.cut и pd.qcut.

Категоризация данных

Категоризация данных используется для преобразования числовых значений в категориальные (группы или метки). Это может быть полезно, например, для преобразования возраста в возрастные группы или оценки в рейтинг.

Использование pd.cut

Функция pd.cut позволяет разбиение данных на интервалы и назначение меток этим интервалам.

Пример

Предположим, у нас есть DataFrame с возрастом, и мы хотим разбить его на возрастные группы:

import pandas as pd

# Пример данных
data = {
    'Возраст': [22, 45, 37, 62, 29, 51, 40, 18, 25]
}
df = pd.DataFrame(data)

# Определяем интервалы и метки
bins = [0, 18, 35, 50, 100]
labels = ['0-18', '19-35', '36-50', '51+']

# Применяем pd.cut
df['Возрастная группа'] = pd.cut(df['Возраст'], bins=bins, labels=labels, right=False)

print(df)

Объяснение

  • bins: список границ интервалов. Интервалы будут [0, 18), [18, 35), [35, 50), [50, 100).

  • labels: метки для интервалов. Эти метки будут присвоены каждой возрастной группе.

  • right=False: означает, что правый край интервала не включается (интервал будет закрыт слева и открыт справа).

Разбиение на интервалы

Интервалы полезны, когда нужно разложить данные по диапазонам значений, а затем анализировать или визуализировать их. Это часто используется в задачах, где данные имеют диапазон значений и их нужно сгруппировать по интервалам.

Использование pd.qcut

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

Пример

Предположим, у нас есть DataFrame с данными о доходах, и мы хотим разбить их на квартели:

import pandas as pd

# Пример данных
data = {
    'Доход': [5000, 7000, 8000, 12000, 15000, 18000, 25000, 30000, 35000, 40000]
}
df = pd.DataFrame(data)

# Разбиваем данные на 4 квартеля
df['Квартель'] = pd.qcut(df['Доход'], q=4, labels=['Q1', 'Q2', 'Q3', 'Q4'])

print(df)

Объяснение

  • q=4: указывает, что данные нужно разбить на 4 интервала (квартели).

  • labels=['Q1', 'Q2', 'Q3', 'Q4']: задает метки для интервалов.

Итоговый пример

Давайте объединим оба подхода. Предположим, у нас есть DataFrame с доходами и возрастом, и мы хотим сделать их как по интервалам, так и по квантилям.

import pandas as pd

# Пример данных
data = {
    'Возраст': [22, 45, 37, 62, 29, 51, 40, 18, 25],
    'Доход': [5000, 7000, 8000, 12000, 15000, 18000, 25000, 30000, 35000, 40000]
}
df = pd.DataFrame(data)

# Разбиваем возраст на интервалы
bins = [0, 18, 35, 50, 100]
labels = ['0-18', '19-35', '36-50', '51+']
df['Возрастная группа'] = pd.cut(df['Возраст'], bins=bins, labels=labels, right=False)

# Разбиваем доход на квартели
df['Квартель дохода'] = pd.qcut(df['Доход'], q=4, labels=['Q1', 'Q2', 'Q3', 'Q4'])

print(df)

Результат

   Возраст  Доход Возрастная группа Квартель дохода
0       22   5000             19-35              Q1
1       45   7000             36-50              Q1
2       37   8000             36-50              Q1
3       62  12000             51+               Q2
4       29  15000             19-35              Q2
5       51  18000             51+               Q3
6       40  25000             36-50              Q3
7       18  30000             0-18               Q4
8       25  35000             19-35              Q4
9       40  40000             36-50              Q4

Таким образом, мы успешно категоризировали данные и разбили их на интервалы, что может быть полезно для последующего анализа и визуализации.

Last updated