Python将年中的某天转换为轴上的月份

13s*_*en1 6 python datetime matplotlib pandas

我有一个时间序列,我想逐年绘制。我希望数据是每天的,但轴每个月都显示为“Jan”、“Feb”等。

目前我可以获得每日数据,但轴是 1-366(一年中的一天)。

或者我可以将月轴设为 1、2、3 等(通过将索引更改为 df.index.month),但是数据是每月的。

如何将年轴中的日期转换为月份?或者我该怎么做?

代码显示每日数据,但轴错误:

# import
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt

# create fake time series dataframe
index = pd.date_range(start='01-Jan-2012', end='31-12-2018', freq='D')
data = np.random.randn(len(index))
df = pd.DataFrame(data, index, columns=['Data'])

# pivot to get by day in rows, then year in columns
df_pivot = pd.pivot_table(df, index=df.index.dayofyear, columns=df.index.year, values='Data')
df_pivot.plot()
plt.legend(loc='center left', bbox_to_anchor=(1, 0.5))
plt.show()
Run Code Online (Sandbox Code Playgroud)

以 0、50、100、150 等为轴的图形结果 - 显示日期而不是月份,如 Jan、Feb、Mar 等

Gho*_*ich 7

这可以使用xticks 函数来完成。只需在之前添加以下代码plt.show()

plt.xticks(np.linspace(0,365,13)[:-1], ('Jan', 'Feb' ... 'Nov', 'Dec'))
Run Code Online (Sandbox Code Playgroud)

或者使用以下方法让月份名称出现在月中:

plt.xticks(np.linspace(15,380,13)[:-1], ('Jan', 'Feb' ... 'Nov', 'Dec'))
Run Code Online (Sandbox Code Playgroud)