熊猫在从另一列进行排序/保留排序顺序时转为条形图

时间:2019-05-06 18:26:45

标签: python pandas

我有一个熊猫数据框,如下所示:

df.pivot(index='Value', columns='Player', values='FG').T.plot(kind='bar', stacked=True)

我想构建一个堆叠条形图,使用“值”作为堆栈的图例(堆叠条形的不同部分),使用“ FG”作为值(堆栈的每个部分的大小),使用“ Player”作为要绘制的每个项目的x轴标签,然后按“ PTS”对这些项目进行排序。

我已经能够透视这些数据并以多种不同的方式从中构建条形图,但是没有一种能够正确排序。如果我先进行排序,则排序顺序会丢失。我一直无法找到一种方法来将“ PTS”列合并到数据透视表中,而又不会破坏我的工作。

这将构建我想要的条形图,但尚未排序(还不是很漂亮,我以后可以处理):

id: 3745        contact_id: ae456-78ef
Id: 3746        contact_id: oi958=34hb

enter image description here

1 个答案:

答案 0 :(得分:1)

请考虑创建一个播放器列表,然后再按groupby汇总计算出的 PTS 总数进行降序排列。然后在数据透视表上的列reindex调用中使用此列表:

# AGGREGATE POINTS --> SORT --> RETRIEVE INDEX VALUES
sort_list = df.groupby('Player').sum().sort_values('PTS', ascending=False).index

# PIVOT --> REINDEX COLUMNS --> TRANSPOSE & PLOT
(df.pivot(index='Value', columns='Player', values='FG')
   .reindex(sort_list, axis='columns')                     # USING ABOVE SORTED PLAYER LIST
   .T
   .plot(kind='bar', stacked=True)
)