Как заказать гистограмму с накоплением в порядке убывания? - PullRequest
0 голосов
/ 09 ноября 2019

Это мой фрейм данных после группировки по State и Category . Я пытался создать нисходящую гистограмму с накоплением по общему количеству Количество записей (объединяя все три категории) каждого состояния. Я попытался sort_values ​​ перед графиком, так как есть столбец «Всего по штатам». К сожалению, я не смог выработать способ правильно это отсортировать. enter image description here

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

my_df_sort = my_df.groupby(['State','Category']).sum().sort_values(by=['State','Number of Records'])
my_df_sort2= my_df.groupby(['State']).sum().sort_values(by=['Number of Records'], ascending=False)

Мой желаемый результат - этот фрейм данных в том же формате, только с колонкой State, отсортированной по общему количеству записей в порядке убывания. Например, Калифорния оказалась бы на первом месте, так как технология: 359 + мебель: 444 + канцелярские товары: 1198 = 2001 год - самая большая.

(текущая / несортированная столбчатая диаграмма с накоплением выглядела так: enter image description here

1 Ответ

2 голосов
/ 09 ноября 2019

Порядок состояний можно найти, рассчитав сумму для каждого состояния и взяв из этого индекс. Используйте этот порядок, чтобы переиндексировать ваш фрейм данных и затем построить график. Примерно так:

# Create sample data
np.random.seed(0)
index = pd.MultiIndex.from_product([['WA', 'NC', 'NY', 'ME', 'NE', 'SD', 'CA'], ['Furniture', 'Technology', 'Office Supplies']], names=['State', 'Category'])
df = pd.DataFrame(np.random.random(21), index=index, columns=['value'])

# Find order and plot
sort_ix = df.groupby(level='State').sum().sort_values('value', ascending=False).index
df.reindex(sort_ix, level=0).unstack().plot.bar(stacked=True)

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...