Я пытаюсь создать сводную таблицу из набора данных о морских рейсах. Когда я прихожу, чтобы сделать сводную таблицу для тепловой карты, столбец индекса упорядочивается в алфавитном порядке, когда я хочу упорядочить его в хронологическом порядке с января по декабрь. Кто-нибудь знает, как это сделать? Я удалил значения в сводной таблице, чтобы она выглядела аккуратнее при копировании и вставке из блокнотов Jupyter.
import pandas as pd
import seaborn as sns
#Loading dataset
flights = sns.load_dataset('flights')
#Calling dataset
flights
year month passengers
0 1949 January 112
1 1949 February 118
2 1949 March 132
3 1949 April 129
4 1949 May 121
... ... ... ...
139 1960 August 606
140 1960 September 508
141 1960 October 461
142 1960 November 390
143 1960 December 432
flights.pivot_table(values='passengers',index='month',columns='year')
year 1949 1950 1951 1952 1953 1954 1955 1956 1957 1958 1959 1960
month
April Values.....
August
December
February
January
July
June
March
May
November
October
September
^^^ Редактировать: похоже, проблема может заключаться в версии морского происхождения (не панд), на которой вы находитесь, из ответа StupidWolf. Попробуйте обновиться до последней версии Seaborn, если можете.
Одним из способов было бы просто переиндексировать и предоставить список индексов следующим образом:
Код :
import calendar
month_names = [calendar.month_name[i] for i in range(1,13)]
# ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']
newdf = df.reindex(month_names)
Я нахожусь в морской версии «0.10.1», и если вы посмотрите на данные, они будут категоричными и отсортированы в правильном порядке:
flights.month.dtype
CategoricalDtype(categories=['January', 'February', 'March', 'April', 'May', 'June',
'July', 'August', 'September', 'October', 'November',
'December'],
ordered=False)
Если вы делаете поворот, он должен быть отсортирован правильно. В противном случае вы установите его как категорию:
flights['month'] = pd.Categorical(flights['month'], categories=flights.month.unique())
какая у вас версия панды
pd.__version__
. У меня нет этой проблемы на1.1.3
.