2

我有一个用 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

直方图

4

1 回答 1

1

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

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

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

直方图

于 2013-03-04T08:11:31.493 回答