使用Pandas在特定小时刻绘制均值和标准差

1 投票
1 回答
1263 浏览
提问于 2025-04-18 09:57

我有一个Pandas的数据表,格式如下:

                       Ozone  CellT  CellP  FlowRate
Date/Time
10/06/14 15:49:57   40.4   32.6  978.6      2297
10/06/14 15:54:57   44.0   32.7  978.6      2267
10/06/14 15:59:57   44.7   32.8  978.6      2249
10/06/14 16:04:57   45.0   32.9  978.6      2262
10/06/14 16:09:57   45.0   32.9  978.6      2286

我想把它画成一个图,显示每小时的臭氧平均值和时间戳,并且在图上加上标准差的上下范围。

现在,当我查看当前的臭氧读数时,x轴(时间戳)上显示的时间是随机的,比如“10/06/14 15:49:57”。我希望每个x轴的刻度标记都显示在每天的12:00:00。

我该怎么做才能把过去一小时的平均值和时间戳画出来,并且在每天的12:00:00处有刻度标记呢?

编辑:
以下的代码可以用来计算每小时的平均值和标准差。现在我想做的是填充这些值,并且用正确的刻度标记来绘图。

df['OzoneHourlyMean'] = df.Ozone.resample('H', how='mean')
df['OzoneHourlyStd'] = df.Ozone.resample('H', how='std')

上面的命令生成的数据格式如下:

2014-06-10 15:00:00    43.033333
2014-06-10 16:00:00    44.291667
2014-06-10 17:00:00    44.691667
2014-06-10 18:00:00    45.175000
2014-06-10 19:00:00    44.433333

1 个回答

0

针对这个问题,我觉得这是编辑后剩下的内容。

我该如何绘制过去一小时的平均值与每天中午12点的时间戳的关系图?

我觉得你只需要在每天中午12点设置刻度标记。你可以自己生成一个刻度的列表,然后使用这些刻度。使用pandas可能会影响x轴的刻度,所以我建议直接使用matplotlib。对你来说,可能可以这样做:

tickv = pd.date_range('10/06/2014 12:00:00', periods=5, freq = 'D')
plt.plot(df.index, df['OzoneHourlyMean'])
plt.xticks(tickv)

撰写回答