我知道如何绘制这样的东西:
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
代表原始n log n
但制作得更优雅here。
答案 0 :(得分:1)
您要做的是拆开数据框,并更改列的名称。
您可以这样做:
df.unstack()
.rename(columns = {
"2016Q1" : "Season 1",
"2016Q2" : "Season 2",
"2016Q3" : "Season 3",
})
您可以在文档中找到有关unstack的功能及其执行方式的示例。至于rename方法,它需要一个映射才能将您的名字从其他名称转换为其他名称。
我没有尝试使您的示例生效,但是我从上面的unstack文档中举了一个示例。
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上方的“ hi”,但您只需select
,它就会消失。
print( s['hi'] )
Season 1 Season 2
one 1.0 2.0
two 3.0 4.0