【问题标题】:pandas timeseries plot xticks second-level granularitypandas timeseries plot xticks 二级粒度
【发布时间】:2013-06-08 01:00:35
【问题描述】:

我有一些 pandas 数据帧,其中的时间序列数据持续时间约为 20 分钟。当我对它们调用 plot 时,一些图将 x-ticks 显示为 hh:mm:ss,而其中一些显示为 hh:mm。

这会在比较输出图表时造成混淆。如何强制 hh:mm 与其他的具有二级粒度?

根据第一个评论者的要求,这是一个生成 hh:mm:ss 格式图的数据框

  In [68]:dfd
  Out[68]:
  <class 'pandas.core.frame.DataFrame'>
  DatetimeIndex: 1193 entries, 2013-05-30 00:00:00 to 2013-05-30 00:19:59
  Data columns:
  disk_util    1193  non-null values
  dtypes: float64(1)

  In [69]:
  dfd.plot()  # this gives hh:mm:ss plot

但是这个给出了 hh:mm 格式的绘图:

    In [63]: dfn
    Out[63]:
    <class 'pandas.core.frame.DataFrame'>
    DatetimeIndex: 1197 entries, 2013-05-30 00:00:00 to 2013-05-30 00:19:56
    Data columns:
    net_util    1197  non-null values
    dtypes: float64(1)

    In [64]: dfn.plot()

【问题讨论】:

  • 贴一些示例代码供我们尝试。
  • 谢谢!我从 csv 文件中读取数据,而不是从代码中读取数据。请参阅nbviewer.ipython.org/urls/raw.github.com/changhiskhan/talks/… Out[20] 以获取以 hh:mm 格式显示 xticks 的图。我们如何让它显示出二级粒度?
  • 发布两个数据帧值进行比较。
  • 我点击了那个链接,并不能轻易地确定我应该复制哪些数据。 (例如,我只看到 filled 的前 20 个结果,数据绘制在 Out[20] 中。)您发布的 DataFrame 描述并不能帮助我们试用您的代码。请发布数据,或者更好的是,发布重现您的问题的一小部分。如果太长,请使用gist

标签: matplotlib pandas


【解决方案1】:

当我绘制给出 hh:mm 格式 x 刻度刻度的数据框的子范围时,我看到它给出了 hh:mm:ss 格式的 x 刻度。这表明 pandas 正在优化超过特定大小时刻度的显示。

我在上面还注意到,上面的 disk_util 数据帧有 1193 个样本,但时间跨度为 2013-05-30 00:00:00 到 2013-05-30 00:19:59,这意味着存在一些时间戳没有读数。这种不完美可能导致 pandas 没有将显示优化为 hh:mm 格式。

而 net_util 1197 个非空值的时间跨度为 2013-05-30 00:00:00 到 2013-05-30 00:19:56,这意味着没有丢失样本,pandas 将显示优化为 hh:mm。

当我从数据帧 (df=df.drop(20)) 中人为地删除一个样本时,它会引入一个缺失的样本,并且图表采用 hh:mm:ss 格式。所以我的问题现在解决了。

【讨论】:

    猜你喜欢
    • 2015-04-03
    • 1970-01-01
    • 2014-12-09
    • 2019-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-03
    • 2014-04-28
    相关资源
    最近更新 更多