python - 根据一列的计数对数据框进行排序并绘图
问题描述
我的数据框中有两列:
winner opening_shortname
0 White Slav Defense
1 Black Nimzowitsch Defense
2 White King's Pawn Game
3 White Queen's Pawn Game
4 White Philidor Defense
... ... ...
20053 White Dutch Defense
20054 Black Queen's Pawn
20055 White Queen's Pawn Game
20056 White Pirc Defense
20057 Black Queen's Pawn Game
我想创建下面的图,前 10 名开场及其获胜者颜色比例 (%)。
解决方案
topk = 10
z = df.groupby(['opening_shortname', 'winner']).size().unstack()
ax = z.loc[z.sum(1).sort_values().tail(topk).index].plot.barh(color=['black', 'white'], edgecolor='black')
ax.xaxis.set_visible(False)
这按开放的普遍性和对顶部的限制k
(例如 OP 问题中的 10 个)进行排序。问题中提到的“比例(%)”是模棱两可的:提供的图清楚地显示了从顶部开口到下一个开口的总数递减,并且水平轴被移除。
无论如何,在您提供的示例数据上:
推荐阅读
- firebase - 在 Firebase 中选择分析位置
- c# - 使用 .Split 拆分字符串并返回第一个整数值(不使用 LINQ)
- clojure - Clojure - 递归使用地图
- rust - 克隆 HashMap
作为 HashMap - unity3d - Library\ScriptAssemblies\Unity.Mathematics.pdb:复制文件失败 - unity 3d
- routes - Here Maps Navigation & Graphhopper 路由引擎
- c# - 如何从多点触控屏幕确认第二次触控选择?
- laravel - Laravel:获取自定义 PostgreSQL 模式的最后一个 id
- r - 如何在一个系列下找到不同的日期并仅选择 r 中每个系列的第一个日期?
- visual-studio-code - VSCode 扩展的问题