Объединение столбца в DataFrame в 10 процентилей - PullRequest
1 голос
/ 18 октября 2019

Я хочу вырезать или вырезать столбец «Количество» в ячейки по 10 процентилей. По существу, описать функцию (), но с 0-10%, 11-20%, 21-30%, 31-40%, 41-50%, 51-60%, 61-70%, 71-80%, 81-90%, 91-100% вместо.

После биннинга я хотел бы создать столбец, который показывает 1-10, указывая на бин, в котором находится конкретное количество.

У меня естьпопробовал использовать этот код ниже, однако я не верю, что он добивается того, чего я хочу.

groups = df.groupby(pd.cut(df['Amount'], 10)).size()

Вот мой DataFrame!

df.shape
Out[5]: (1385, 2)

df.head(10)
Out[6]: 
   Amount         New or Repeat Customer
0  23044                    New
1  15509                    New
2   6184                    New
3   6184                    New
4   5828                    New
5   5461                    New
6   5143                    New
7   5027                    New
8   4992                    New
9   4698                 Repeat

1 Ответ

1 голос
/ 19 октября 2019

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

# Sample data
size = 100
df = pd.DataFrame({
    'Amount': np.random.randint(5000, 20000, size),
    'CustomerType': np.random.choice(['New', 'Repeat'], size)
})

# Binning
labels = ['0% to 10%'] + [f'{i+1}% to {i+10}%' for i in range(10, 100, 10)]
df['Bin'] = pd.qcut(df['Amount'], 10, labels=labels)

Результат:

   Amount CustomerType          Bin
0   15597       Repeat   61% to 70%
1   14498          New   51% to 60%
2    6373       Repeat    0% to 10%
3    9901       Repeat   21% to 30%
4   18450       Repeat  91% to 100%
5    9337       Repeat   21% to 30%
6   19310       Repeat  91% to 100%
7   11198          New   31% to 40%
8   12485          New   41% to 50%
9   11130          New   31% to 40%
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...