如何在熊猫中编辑情节的轴标签

时间:2019-06-26 00:20:22

标签: python pandas

现在我使用这些代码在(x轴上的年,月)日期有一个非常简单的直方图图:

#!/usr/bin/python
import pandas as pd
import matplotlib.pyplot as plt

file = 'dates.txt'

df = pd.read_csv("dates.txt", header=None)
df["dates"] = pd.to_datetime(df[0])
grouped = df["dates"].groupby([df["dates"].dt.year, df["dates"].dt.month]).count().plot(kind="bar")
plt.show()

看起来像这样: enter image description here

我希望将月份的数字表示形式替换为相应的月份缩写。例如(2015,7)->(2015,7月)。因此,我在下面的脚本中尝试了以下代码apply(lambda x: calendar.month_abbr[x])

#!/usr/bin/python
import pandas as pd
import matplotlib.pyplot as plt
import calendar

file = 'dates.txt'

df = pd.read_csv("dates.txt", header=None)
df["dates"] = pd.to_datetime(df[0])
#print(df["dates"])
#df.groupby(df["dates"].dt.month).count().plot(kind="bar")
graph = df["dates"].groupby([df["dates"].dt.year, df["dates"].dt.month.apply(lambda x: calendar.month_abbr[x])]).count().plot(kind="bar", y="Calls")
graph.set_ylabel("Call Volume")
graph.set_xlabel("Date")
plt.show()

但这给了我一些意想不到的输出。几个月已转换,但现在它们出现了故障。

enter image description here

1 个答案:

答案 0 :(得分:1)

您可以尝试按月份分组,并手动重新标记刻度线:

new_df = df["dates"].groupby(df.dates.dt.to_period('M')).count()

# new label
labels = new_df.index.strftime("%Y-%b")

# plot and re-label:
fig, ax = plt.subplots(figsize=(16,9))
new_df.plot(kind="bar", ax=ax)
ax.set_xticklabels(labels)
plt.show()

输出:

enter image description here