更改 Pandas/Matplotlib 直方图中标签的 x 轴顺序?

sta*_*010 1 python matplotlib pandas

假设我有一列中包含离散值的 Pandas 数据框。

import pandas as pd

data = ['A']*2 + ['C']*3 + ['B']* 1
print(data)
# ['A', 'A', 'C', 'C', 'C', 'B']

my_df = pd.DataFrame({'mycolumn': data})
print(my_df)
#   mycolumn
# 0        A
# 1        A
# 2        C
# 3        C
# 4        C
# 5        B
Run Code Online (Sandbox Code Playgroud)

然后我创建一个直方图,显示这些值的频率。我使用 Pandas 内置函数hist(),它又依赖于 Matplotlib 直方图函数。

my_df.mycolumn.hist()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

现在,如何更改 X 轴上标签的顺序以具有特定顺序?例如,我希望 x 轴具有特定顺序的标签:C, A, B,而不是A, C, B如图所示。

另外,如何将 y 轴更改为整数而不是浮点数?频率值是离散计数。

Myk*_*tko 5

您可以使用value_counts,loc来定义顺序和bar绘图:

my_df.mycolumn.value_counts().loc[['C', 'A', 'B']].plot.bar()
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明

在 y 轴上使用整数的解决方案

from matplotlib.ticker import MaxNLocator

ax = my_df.mycolumn.value_counts().loc[['C', 'A', 'B']].plot.bar()

ax.yaxis.set_major_locator(MaxNLocator(integer=True))
Run Code Online (Sandbox Code Playgroud)

在此处输入图片说明