python - Python在轴上将一年中的日期转换为月份
问题描述
我有一个时间序列,我想逐年绘制。我希望数据是每天的,但轴每个月显示为“一月”、“二月”等。
目前我可以获得每日数据,但轴为 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()
解决方案
这可以使用xticks 函数来完成。只需在之前添加以下代码plt.show()
:
plt.xticks(np.linspace(0,365,13)[:-1], ('Jan', 'Feb' ... 'Nov', 'Dec'))
或以下使月份名称出现在月中:
plt.xticks(np.linspace(15,380,13)[:-1], ('Jan', 'Feb' ... 'Nov', 'Dec'))
推荐阅读
- php - Laravel,为什么在路由文件(web.php)中使用 Auth::id() 返回 null?
- javascript - 云功能执行成功,但用户未收到通知?
- python - Python CSV读取带嵌入式分隔符的引用字段
- javascript - 离线 DynamoDB + Serverless + Lambda ResourceNotFoundException
- pandas - 使用 pandas 将一行中的多个值拆分为多行
- vue.js - 在 nativescript-vue 应用程序中在哪里安装 axios?
- c++ - 错误的数组新长度
- python - 如何找到在 auto_arima() Python 中选择的 p,d,q 值?
- javascript - Moment js 添加月份
- validation - 如何在 Access Query 中使用 CDATE 在转换前验证/清理文本日期