现在,我正在尝试通过处理移动幅度最大(最大)的数据集来找出Matplotlib
和Pandas
的工作方式。我成功地将完整数据集绘制为以x轴作为时间戳的折线图。
但是,当我试图将设置的间隔绘制为条形图(按小时分组)时,matplotlib不再将xaxis
识别为时间戳,因此我无法正确使用格式化程序和定位符(HourLocator
等)。
我的数据帧的索引是一个时间戳,但是当我使用.groupby()
函数时,它似乎失去了它作为时间戳的属性。
newdf = df[date:(date+forward*deltaday)]
bx = newdf['Movements'].groupby(pd.Grouper( freq='H')).sum().plot.bar()
xtick_locator = mdates.AutoDateLocator()
xtick_formatter = mdates.AutoDateFormatter(xtick_locator)
bx.xaxis.set_major_locator(xtick_locator)
bx.xaxis.set_major_formatter(xtick_formatter)
运行此代码时,我收到以下错误消息:
ValueError:观看次数下限最小值-0.5小于1,并且无效 Matplotlib日期值。如果您经过非日期时间,通常会发生这种情况 具有日期时间单位的轴的值”
这表示我的xaxis
不再是datetime
对象。当使用xticks
提取我的xticks()
标签时,我得到以下提示:
Text(0, 0, '2015-02-02 00:00:00')
...
Text(47, 0, '2015-02-03 23:00:00')
它看起来像是一个时间戳,但是matplotlib不会将其识别为一个时间戳。没有任何专业知识,我相信.groupby()
是强盗。
是否有更好的方法绘制条形图,并在设定的时间间隔内每小时绘制df ['Movements']的总和?
({df['Movements']
现在是每分钟的移动次数)