Как сгруппировать условие в категорию «Другое»

#python-3.x #pandas #matplotlib #charts

Вопрос:

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

Штрих-карта:

введите описание изображения здесь

данные:

             Numbers
Target A    34
Target B    22
Target C    13
Target P    13
Target D    7
Target E    6
Target F    4
Target G    2
Target H    2
Target I    1
Target J    1
Target K    1
Target L    1
Target M    1
Target N    1
Target O    1
 

Комментарии:

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

Ответ №1:

Это должно сработать, возможно, вам потребуется сбросить индекс, просто Labels замените его именем столбца.

 # values under threshold
other = df.loc[df['Numbers'] < 5]['Numbers'].sum()

new_row = {'Labels': 'Other', 'values': other}
df[df['Numbers'] >= 5].append(new_row, -1)
 

Ответ №2:

Сбросьте индекс в Target formation столбец. Затем для строк , где Numbers < 5 , измените их Target formation на «Другие».:

 df = df.rename_axis('Target formation').reset_index()
df.loc[df.Numbers < 5, 'Target formation'] = 'Other'

#    Target formation  Numbers
# 0          Target A       34
# 1          Target B       22
# 2          Target C       13
# 3          Target P       13
# 4          Target D        7
# 5          Target E        6
# 6             Other        4
# 7             Other        2
# 8             Other        2
# 9             Other        1
# 10            Other        1
# 11            Other        1
# 12            Other        1
# 13            Other        1
# 14            Other        1
# 15            Other        1
 

Затем используйте groupby.sum , который объединит «Другое» в одну запись:

 (df.groupby('Target formation').Numbers
   .sum().sort_values(ascending=False)
   .plot.barh())
 

сгруппированная гистограмма с агрегированным quot;другимquot;