#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())