如何在熊猫中使用日期时间索引对数据系列进行重采样



在熊猫中使用日期时间索引对数据系列进行重采样

我是蟒蛇的新手,我正在研究熊猫。我有一个GW2test.csv文件,其中包含日期,时间和其他列,每30分钟收集一次数据。我需要对每日平均值的数据进行重新采样。CVS 如下所示:

Date        time     P    P3W   P3W1      P2W
04/18/12    15:00   0   1.334           1.006
04/18/12    15:30   0   1.336           1.003
04/18/12    16:00   0   1.323           0.985
04/18/12    16:30   0   1.316           0.977
04/18/12    17:00   0   1.312  1.231    0.97

P是降水,并不总是零,P3W有一些非测量值。我所做的是:

'

import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import pylab as pl
df = pd.read_csv('GW2test.csv', parse_dates=[['Date','time']])
f = pd.DataFrame(df, columns=[ 'Date_time','P','P3E','P1W1', 'P1W', 'P2W'])
f.describe()
df1 = df.set_index('Date_time')
Daily= df1.resample('D', how=np**.mean)
Sel = Daily.ix[0:,['P']]
Sel.plot()
Sel = Daily.ix[0:,['P3W1']]
Sel.plot()

'

到目前为止一切顺利,我的图在 X 中显示日频率,但 Y 中的值是错误的。降水量应该高达 140,它只达到 3.5(作为 30 分钟值),我的 P3W 值是正确的,但显示一条不连续线,尽管我有整个时期的测量值。他们看起来像这样

请帮忙!

为什么不将Datetime保留为单独的列,然后对Date执行groupby并使用np.mean聚合每个组?这将生成仅通过包含平均值的Date编制索引的结果。同样的方法可以用来按time分组,并取跨日期的平均值,因此您可以轻松查看所有15:00观测值的平均值。

df.groupby("Date").agg(np.mean) 

可以忽略time列的平均值,也可以省略该列。

相关内容