我是python的新手,我正在研究pandas。我有一个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值是正确的,但显示了一个不连续的线,尽管我有整个时期的测量值。他们看起来像这样
请帮忙!
答案 0 :(得分:0)
为什么不将Date
和time
作为单独的列,然后在groupby
上执行Date
并使用np.mean
汇总每个组?这将生成仅包含平均值的Date
索引的结果。并且可以使用相同的方法按time
进行分组,并获取各个日期的平均值,以便您可以轻松查看所有15:00
观察值的平均值。例如。
df.groupby("Date").agg(np.mean)
可以忽略time
列的平均值,也可以省略该列。