Как выполнить бинирование данных в Python (с примерами)


Вы можете использовать следующий базовый синтаксис для выполнения бинирования данных в pandas DataFrame:

import pandas as pd

#perform binning with 3 bins
df['new_bin'] = pd.qcut(df['variable_name'], q= 3 )

В следующих примерах показано, как использовать этот синтаксис на практике со следующими пандами DataFrame:

import pandas as pd

#create DataFrame
df = pd.DataFrame({'points': [4, 4, 7, 8, 12, 13, 15, 18, 22, 23, 23, 25],
 'assists': [2, 5, 4, 7, 7, 8, 5, 4, 5, 11, 13, 8],
 'rebounds': [7, 7, 4, 6, 3, 8, 9, 9, 12, 11, 8, 9]})

#view DataFrame
print(df)

 points assists rebounds
0 4 2 7
1 4 5 7
2 7 4 4
3 8 7 6
4 12 7 3
5 13 8 8
6 15 5 9
7 18 4 9
8 22 5 12
9 23 11 11
10 23 13 8
11 25 8 9

Пример 1. Выполнение базового бинирования данных

В следующем коде показано, как выполнить бинирование данных для переменной points с помощью функции qcut() с определенными метками разрыва:

#perform data binning on *points* variable
df['points_bin'] = pd.qcut(df['points'], q= 3 )

#view updated DataFrame
print(df)

 points assists rebounds points_bin
0 4 2 7 (3.999, 10.667]
1 4 5 7 (3.999, 10.667]
2 7 4 4 (3.999, 10.667]
3 8 7 6 (3.999, 10.667]
4 12 7 3 (10.667, 19.333]
5 13 8 8 (10.667, 19.333]
6 15 5 9 (10.667, 19.333]
7 18 4 9 (10.667, 19.333]
8 22 5 12 (19.333, 25.0]
9 23 11 11 (19.333, 25.0]
10 23 13 8 (19.333, 25.0]
11 25 8 9 (19.333, 25.0]

Обратите внимание, что каждая строка фрейма данных была помещена в одну из трех ячеек в зависимости от значения в столбце точек.

Мы можем использовать функцию value_counts() , чтобы узнать, сколько строк было помещено в каждую ячейку:

#count frequency of each bin
df['points_bin']. value_counts ()

(3.999, 10.667] 4
(10.667, 19.333] 4
(19.333, 25.0] 4
Name: points_bin, dtype: int64

Мы видим, что каждый бин содержит 4 наблюдения.

Пример 2. Выполнение бинирования данных с определенными квантилями

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

#perform data binning on *points* variable with specific quantiles
df['points_bin'] = pd.qcut(df['points'], q=[0, .2, .4, .6, .8, 1])

#view updated DataFrame
print(df)

 points assists rebounds points_bin
0 4 2 7 (3.999, 7.2]
1 4 5 7 (3.999, 7.2]
2 7 4 4 (3.999, 7.2]
3 8 7 6 (7.2, 12.4]
4 12 7 3 (7.2, 12.4]
5 13 8 8 (12.4, 16.8]
6 15 5 9 (12.4, 16.8]
7 18 4 9 (16.8, 22.8]
8 22 5 12 (16.8, 22.8]
9 23 11 11 (22.8, 25.0]
10 23 13 8 (22.8, 25.0]
11 25 8 9 (22.8, 25.0]

Пример 3. Выполнение бинирования данных с помощью меток

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

#perform data binning on *points* variable with specific quantiles and labels
df['points_bin'] = pd.qcut(df['points'],
 q=[0, .2, .4, .6, .8, 1],
 labels=['A', 'B', 'C', 'D', 'E'])

#view updated DataFrame
print(df)

 points assists rebounds points_bin
0 4 2 7 A
1 4 5 7 A
2 7 4 4 A
3 8 7 6 B
4 12 7 3 B
5 13 8 8 C
6 15 5 9 C
7 18 4 9 D
8 22 5 12 D
9 23 11 11 E
10 23 13 8 E
11 25 8 9 E

Обратите внимание, что каждой строке был назначен бин на основе значения столбца точек , а бины были помечены буквами.

Дополнительные ресурсы

В следующих руководствах объясняется, как выполнять другие распространенные задачи в pandas:

Pandas: как использовать функцию value_counts()
Pandas: как создать сводную таблицу с подсчетом значений
Pandas: как подсчитать вхождения определенного значения в столбце

Замечательно! Вы успешно подписались.
Добро пожаловать обратно! Вы успешно вошли
Вы успешно подписались на кодкамп.
Срок действия вашей ссылки истек.
Ура! Проверьте свою электронную почту на наличие волшебной ссылки для входа.
Успех! Ваша платежная информация обновлена.
Ваша платежная информация не была обновлена.