【问题标题】:Date in form of yyyy-mm in x axis for line plot pandas pythonx轴中yyyy-mm形式的日期,用于线图pandas python
【发布时间】:2020-05-23 12:50:24
【问题描述】:

如何获取 yyyy-mm 格式的日期。我检查了几个链接,但无法获得我的数据框的结果。

df

    [IN]data2=df.ix[:,2]
    [IN]data2 #data2 is series object now, since it is slice of df
    [OUT]
    Date
    2015-01-01     3.2
    2015-02-01     4.6
    2015-03-01     5.9
    ..........................
    2018-01-01    11.3
    2018-02-01    13.4
    Name: Col2, dtype: float64

我的数据框只有一个值对应于每个月-年组合(例如,2015 年 1 月只有一个值,2015 年 2 月只有一个值,依此类推)

日期是数据帧 df 的索引。对于命令 data2.plot()

,我需要 yyyy-mm 形式的 x 轴

电流输出(命令data2.plot())

预期输出(忽略图形的形状,只关注 x 轴)(我在输入 data2.plot() 时需要此输出)

data2.plot() 之前的一些代码已被删除,我们无法检索相同的代码,因此我希望我们应该能够在输入 data2.plot() 后获得输出

【问题讨论】:

标签: python pandas


【解决方案1】:

构造一些样本数据并提取样本系列data2,如您的问题所示:

df = pd.DataFrame(
    data=np.random.rand(20, 3), 
    index=pd.date_range(start='2019-01-01', freq='MS', periods=20))
data2 = df.iloc[:, 2]

假设您像这样使用matplotlib 明确地绘制数据框:

fig, ax = plt.subplots()
ax.plot(data2.index, data2)

您可以使用matplotlib.dates 模块设置刻度:

import matplotlib as mpl

ax.xaxis.set_major_locator(mpl.dates.MonthLocator(interval=3))
ax.xaxis.set_major_formatter(mpl.dates.DateFormatter('%Y-%m'))

ax.tick_params(rotation=30, axis='x')  # rotate xticks

interval=3 每三个月选择一次,日期格式化程序%Y-%m 生成YYYY-MM 格式。

有关日期格式的更多信息,请参阅 matplotlib.dates 模块的文档,特别是在 matplotlib.dates.MonthLocator 中查找月份。

使用 pandas 绘图界面 (f.i. df.plot()) 进行绘图可能需要其他日期格式化方法,因为在 pandas 中转换为轴单位的处理方式不同。因此,我始终建议在绘制日期时明确使用 matplotlib 以获得可重现的结果。

【讨论】:

  • df中有很多列。我正在研究系列对象是有原因的。在这个绘图之后有一个代码需要我使用系列对象'
  • work on data2 仅限data2=df.ix[:,2]
  • 我将绘图函数中的df 替换为data2。但是由于ix 已被弃用并且在pandas 的当前版本中不可用,我将其替换为较新的iloc
猜你喜欢
  • 2018-06-28
  • 1970-01-01
  • 1970-01-01
  • 2023-03-15
  • 1970-01-01
  • 2016-01-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多