【问题标题】:Pandas Histogram - y axis in timePandas 直方图 - 时间的 y 轴
【发布时间】:2013-01-12 13:32:46
【问题描述】:

我有一个使用 DateTime 索引的 DataFrame,并在直方图上显示计数。每个计数为 20 秒。
如何更改 y 轴以显示分钟、小时或天,而不是计数?

这是我的 DataFrame 的前五行:

from pandas.lib import Timestamp
df = pd.DataFrame({'A': {Timestamp('2013-01-20 00:00:16.726000'): 0.14746094,
                         Timestamp('2013-01-20 00:00:36.726002'): 0.13964844,
                         Timestamp('2013-01-20 00:00:56.726004'): 0.13574219,
                         Timestamp('2013-01-20 00:01:16.725997'): 0.14355469,
                         Timestamp('2013-01-20 00:01:36.725999'): 0.14746094},
                   'B': {Timestamp('2013-01-20 00:00:16.726000'): 3.5716574,
                         Timestamp('2013-01-20 00:00:36.726002'): 3.5716574,
                         Timestamp('2013-01-20 00:00:56.726004'): 3.5716574,
                         Timestamp('2013-01-20 00:01:16.725997'): 3.5716574,
                         Timestamp('2013-01-20 00:01:36.725999'): 3.5716574}})
df.plot()

matplotlib v1.2.0 熊猫 0.10.1

【问题讨论】:

  • 能否提供df.head().to_dict()的输出
  • 我在上面添加了 df.head().to_dict()
  • 目前创建我的时间轴我使用以下:x = mdates.num2date(x, tz=None)x = [dt.replace(tzinfo=None) for dt in x]
  • 您使用的是什么版本的 pandas/matplotlib?当你说“计数”时,不清楚你的意思是什么,它看起来对我来说没问题(00:00:26、00:00:36,...作为 x-ticks)。
  • 像安迪一样,我对你想要做的事情感到困惑。直方图的点不是在 y 轴上显示计数吗?您可能试图强制使用hist ...考虑退后一步构建条形图。

标签: matplotlib pandas histogram


【解决方案1】:

使用您的示例, df.plot 不会显示直方图(即值的分布),而是显示由时间戳索引的值的演变曲线。

以下 sn-p 显示值的直方图,使用的不是“计数”,而是间隔持续时间作为 y 轴权重(全部等于您指定的 20 秒秒,但每个值可能不同)。

import numpy as np
import matplotlib.pyplot as plt
df.hist(weights=np.repeat(20,5))
plt.ylabel('Cumulated intervals duration [sec]')

【讨论】:

    猜你喜欢
    • 2021-10-24
    • 2016-11-20
    • 2017-11-17
    • 1970-01-01
    • 1970-01-01
    • 2018-08-01
    • 2015-01-07
    • 2017-08-31
    • 1970-01-01
    相关资源
    最近更新 更多