Сложенные графики из многоиндексных данных

1

Я знаю, как построить что-то вроде этого:

               SEASON1  SEASON2  SEASON3
area                                    
A   29839.0  27367.0  25627.0
B   13812.0  12533.0  12598.0
C  22044.0  21700.0  21122.0
D       16682.0  14678.0  13347.0
E     7418.0   6819.0   6276.0
F        23985.0  23135.0  21170.0
G    16653.0  15016.0  13521.0
H    8359.0   7804.0   7712.0
I   21999.0  19799.0  19528.0

С помощью

deaths_season.plot(kind='bar', stacked=True, rot=90, edgecolor='black')
deaths_season.T.plot(kind='bar', stacked=True, rot=0, edgecolor='black')

В результате чего:

сложены

транспонирован с накоплением

Мне трудно получить те же (или даже лучше выглядящие) графики для следующего df который представляет собой оригинальный df но сделан здесь более элегантно.

Теги:
pandas
dataframe
matplotlib
plot

1 ответ

1
Лучший ответ

То, что вы хотите сделать, - это разблокировать ваш фреймворк и изменить название столбцов.

Вы можете сделать это, выполнив следующие действия:

df.unstack()
  .rename(columns = {
            "2016Q1" : "Season 1",
            "2016Q2" : "Season 2",
            "2016Q3" : "Season 3",
        })

Вы можете найти примеры документации о том, что делает стеллаж, и как он это делает. Что касается метода переименования, он принимает сопоставление, чтобы преобразовать ваши имена из чего-то в другое.

Я не пытался заставить ваш пример работать, но я привел пример из вышеперечисленной документации.

index = pd.MultiIndex.from_tuples([('one', 'a'), ('one', 'b'),
                                   ('two', 'a'), ('two', 'b')])

df = pd.DataFrame( np.arange(1.0, 5.0), index=index, columns=['hi'])
print(df)
#         hi
# one a  1.0
#     b  2.0
# two a  3.0
#     b  4.0

df = df.unstack(level = -1)
       .rename(columns = {
            "a" : "Season 1",
            "b" : "Season 2"
        })
print(df)
#           hi         
#     Season 1 Season 2
# one      1.0      2.0
# two      3.0      4.0

Может быть лучший способ обработать "привет" над вашим DataFrame, но вы можете просто select его, и он исчезнет.

print( s['hi'] )
     Season 1  Season 2
one       1.0       2.0
two       3.0       4.0
  • 0
    Сладкий. Проверено. Работает! Итак, я пришел к выводу, что, возможно, лучшая практика - не иметь дело с оригинальным многоиндексным df верно? Если так, я пойду и отмечу ответ как принятый.
  • 0
    @KyleDickson Ну, я не проводил много исследований по этому вопросу, но думал об этом, как правило, это 2D-графики, а DataFrame - 2D-объект. Мультииндекс полезен для обработки 2D + данных. Я не думаю, что мультииндексный pandas обрабатывает графики на трехмерном уровне. Я не думаю, что это связано с лучшей практикой или чем-то там.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню