Как Pythonic/pandas способ сортировки "уровней" в столбце в pandas, чтобы дать конкретное упорядочение баров в гистограмме.
Например, учитывая:
import pandas as pd
df = pd.DataFrame({
'group': ['a', 'a', 'a', 'a', 'a', 'a', 'a',
'b', 'b', 'b', 'b', 'b', 'b', 'b'],
'day': ['Mon', 'Tues', 'Fri', 'Thurs', 'Sat', 'Sun', 'Weds',
'Fri', 'Sun', 'Thurs', 'Sat', 'Weds', 'Mon', 'Tues'],
'amount': [1, 2, 4, 2, 1, 1, 2, 4, 5, 3, 4, 2, 1, 3]})
dfx = df.groupby(['group'])
dfx.plot(kind='bar', x='day')
Я могу сгенерировать следующую пару графиков:
Порядок баров соответствует порядку строк.
Каков наилучший способ переупорядочения данных, чтобы на столбчатых диаграммах были столбцы, упорядоченные Mon-Sun?
ОБНОВЛЕНИЕ: это мусорное решение работает, но оно далеко не элегантно, поскольку использует дополнительную сортировочную колонку:
df2 = pd.DataFrame({
'day': ['Mon', 'Tues', 'Weds', 'Thurs', 'Fri', 'Sat', 'Sun'],
'num': [0, 1, 2, 3, 4, 5, 6]})
df = pd.merge(df, df2, on='day')
df = df.sort_values('num')
dfx = df.groupby(['group'])
dfx.plot(kind='bar', x='day')
ДАЛЬНЕЙШАЯ ОБОБЩЕНИЕ:
Есть ли решение, которое также исправляет порядок баров на "уклоненном" баровом графике:
df.pivot('day', 'group', 'amount').plot(kind='bar')