Подтвердить что ты не робот

Pandas Построение с использованием мультииндекса

После выполнения groupby.sum() на фрейме данных у меня возникли проблемы с попыткой создать мой предполагаемый сюжет.

grouped dataframe with multi-index

Как я могу создать подзаголовок (kind = 'bar') для каждого "Кода", где ось Х - "Месяц", а столбцы - ColA и ColB?

4b9b3361

Ответ 1

Я нашел, что метод unstack (level) работает отлично, что имеет дополнительное преимущество: не требуется априорное знание о том, сколько кодов существует.

summed_group.unstack(level=0).plot(kind='bar', subplots=True)

Ответ 2

Используя следующий DataFrame...

DataFrame

# using pandas version 0.14.1
from pandas import DataFrame
import pandas as pd
import matplotlib.pyplot as plt

data = {'ColB': {('A', 4): 3.0,
('C', 2): 0.0,
('B', 4): 51.0,
('B', 1): 0.0,
('C', 3): 0.0,
('B', 2): 7.0,
('Code', 'Month'): '',
('A', 3): 5.0,
('C', 1): 0.0,
('C', 4): 0.0,
('B', 3): 12.0},
'ColA': {('A', 4): 66.0,
('C', 2): 5.0,
('B', 4): 125.0,
('B', 1): 5.0,
('C', 3): 41.0,
('B', 2): 52.0,
('Code', 'Month'): '',
('A', 3): 22.0,
('C', 1): 14.0,
('C', 4): 51.0,
('B', 3): 122.0}}

df = DataFrame(data)

... вы можете построить следующее (используя поперечное сечение):

f, a = plt.subplots(3,1)
df.xs('A').plot(kind='bar',ax=a[0])
df.xs('B').plot(kind='bar',ax=a[1])
df.xs('C').plot(kind='bar',ax=a[2])

enter image description here

Один для A, один для B и один для C, ось x: "Месяц", полосы - ColA и ColB. Возможно, это то, что вы ищете.