在熊猫中绘制timedelta与时间的关系图

时间:2017-07-18 13:14:17

标签: python pandas plot

           Distance Speed   Heart Rate  Pace
Timestamp               
00:00:00    5.03    2.249   138 00:07:25
00:00:09    26.33   2.575   138 00:06:28
00:00:17    47.53   2.659   139 00:06:16
00:00:25    69.52   2.687   138 00:06:12

我有这个数据框,我想用df.plot(subplots=True)

绘制它

当我绘制它时,绘制距离,速度和心率,但不是Pace。 如果有帮助的数据类型:

Distance              float64
Speed                 float64
Heart Rate              int64
Pace          timedelta64[ns]
dtype: object

问题似乎是你无法绘制timedelta与时间的关系。 我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:1)

您可以将速度转换为秒:

df['Pace'] = df['Pace'].dt.total_seconds()

如果您不想更改原始列,可以将其分配给临时数据帧:

df.assign(Pace=df['Pace'].dt.total_seconds()).plot(subplots=True)

修改:为了覆盖刻度标签:

首先,定义格式化程序函数

import matplotlib.ticker as tkr
import datetime

def func(x, pos):
    return str(datetime.timedelta(seconds=x))
pace_format = tkr.FuncFormatter(func)

其次,将其应用于您的图表(我假设'Pace'以秒为单位):

ax = df['Pace'].plot()
ax.xaxis.set_major_formatter(pace_format);

使用子图时,您需要“到达”正确的ax对象。