2015-08-14 2 views
0

Я использую следующий код для создания штабелированного штрихового графика из кадра данных pandas в Python (data - это объект DataFrame).Изменить порядок столбцов в таблице с разбивкой по строкам

data.plot(kind='bar', stacked=True, figsize=(15, 10), x='Species', fontsize=16, rot=0) 

an IPython Notebook для контекста.

Я хочу изменить порядок столбцов. Функция seaborn.barplot имеет аргумент x_order, который делает именно то, что я хотел бы. Тем не менее, он не поддерживает многострочные графики, как функция pandas.DataFrame.plot. Каков самый простой способ изменить порядок столбцов?

ответ

1

Вы можете вручную изменить порядок строк, перебирая числовые индексы, например, ответ, заданный @iayork, или, альтернативно, вы можете установить индекс вашего фрейма данных как столбец Species.

species = ['A', 'B', 'H', 'S', 'P', 'N'] 

data2 = data.set_index(['Species']) 
data2.reindex(species).plot(kind='bar', stacked=True, figsize=(15, 10), fontsize=16, rot=0) 

Устанавливая индекс data, как Species, теперь вы можете переставить строки их строковых меток, вместо числовых индексов.

+0

Незначительная точка, вам не нужно указывать индекс «Виды» для перестановки по метке. В моем ответе индексы фактически упорядочиваются по метке, а не по индексу, потому что я использую «.loc» вместо «.iloc»; это только тот ярлык, который был связан с индексом для начала. Согласились, что результат может быть запутанным. – iayork

1

Простейший способ, вероятно, перестроить ваш индекс.

data2 = data.loc[[5,4,3,2,1,0]] 

отменяет заказ в области данных и участка.

Смежные вопросы