Сложенные графики из многоиндексных данных - PullRequest
0 голосов
/ 07 декабря 2018

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

               SEASON1  SEASON2  SEASON3
area                                    
A   299.0  2.0  257.0
B   13.0  33.0  198.0
C   22044.0  2.0  22.0

Использование

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

В результате:

сложено

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

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

1 Ответ

0 голосов
/ 07 декабря 2018

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

Вы можете сделать это, выполнив:

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

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

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

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

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

print( s['hi'] )
     Season 1  Season 2
one       1.0       2.0
two       3.0       4.0
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...