在熊猫中使用日期时间索引对数据系列进行重采样
我是蟒蛇的新手,我正在研究熊猫。我有一个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 值是正确的,但显示一条不连续线,尽管我有整个时期的测量值。他们看起来像这样
请帮忙!
为什么不将Date
和time
保留为单独的列,然后对Date
执行groupby
并使用np.mean
聚合每个组?这将生成仅通过包含平均值的Date
编制索引的结果。同样的方法可以用来按time
分组,并取跨日期的平均值,因此您可以轻松查看所有15:00
观测值的平均值。
df.groupby("Date").agg(np.mean)
可以忽略time
列的平均值,也可以省略该列。