Python - 使用列表、字典理解和映射来更改情节顺序

Python - Using a List, Dict Comprehension, and Mapping to Change Plot Order

我对 Python、Pandas 和绘图比较陌生。我希望在 pandas 绘图中使用列表、映射并将它们发送到绘图函数来创建自定义排序顺序。

我不是 "solid" 映射或字典理解。我在 Google 上四处看了看,没有发现任何真正清楚的东西 - 所以任何有用的参考资料都将不胜感激。

我有一个数据框,它是 groupby 的结果:

Exchange
AMEX       267
NYSE      2517
Nasdaq    2747
Name: Symbol, dtype: int64

数值列为'Symbol',交易所列表为索引

当我做一个直截了当的pandas情节

my_plot = Exchange['Symbol'].plot(kind='bar')

我明白了:

这些列按照数据框中的行顺序排列(美国证券交易所、纽约证券交易所、纳斯达克),但我想从左到右展示纽约证券交易所、纳斯达克和美国证券交易所。所以 "sort" 将不起作用。

还有一个post:

Sorting the Order of Bars

明白了 - 但我就是想不通。

我觉得解决方案是我力所能及的一步。我认为这是一个非常重要的概念,因为它会极大地帮助我可视化数据,其中需要在图表中显示自定义行的情况并不少见。我也希望这里的讨论可以帮助我更好地理解映射,因为它在许多情况下似乎非常有用,但我似乎无法找到合适的在线资源来清楚地解释它。

提前致谢。

您的问题的解决方案是将输出数据帧按所需顺序排列:

order = [1,2,0] # the desired order
Exchange['Symbol'].iloc[order]

NYSE      2517
Nasdaq    2747
AMEX       267
Name: Symbol, dtype: int64

只要你有正确排序的数据,你就可以绘制它:

Exchange['Symbol'].iloc[order].plot(kind='bar');