我有一个数据库,包含每分钟,5分钟和每小时的数据点: 我的目标是获得10分钟的数据平均值,但是我认为这是缺少数据点,而写入的CSV文件是从每个数据点写入到每小时)
输出看起来像
2005-03-01 17:00:00,3.25
2005-03-01 17:10:00,-5.75
2005-03-01 17:20:00,-6.0
2005-03-01 17:30:00,
2005-03-01 17:40:00,
2005-03-01 17:50:00,
2005-03-01 18:00:00,2.3
2005-03-01 18:10:00,
2005-03-01 18:20:00,
2005-03-01 18:30:00,
2005-03-01 18:40:00,
2005-03-01 18:50:00,
2005-03-01 19:00:00,2.8
原始输入,如下所示:
01-mar-05 17:10, 1.6, 7.9, 0.0214, 1.3536, 0.0214, 1.6726, 1.00,30.567
01-mar-05 17:15, -13.1, 7.9, 0.0214, 1.3540, 0.0214, 1.6729, 1.00,30.550
01-mar-05 17:20, 3.2, 7.9, 0.0214, 1.3542, 0.0214, 1.6731, 1.00,30.554
01-mar-05 17:25, -15.2, 7.9, 0.0214, 1.3544, 0.0214, 1.6731, 1.00,30.534
01-mar-05 18:00, 2.3, 8.0, 0.0214, 1.8276, 0.0214, 1.6932, 1.00, 0.034
01-mar-05 19:00, 2.8, 8.0, 0.0214, 1.8312, 0.0214, 1.6973, 1.00, 0.081
01-mar-05 20:00, 6.8, 8.0, 0.0214, 1.8313, 0.0214, 1.6993, 1.00, .192
我使用的代码是:
names= ['Date','Conc','Flow','SZ','SB','RZ','RB','Fraction','Attenuation']
df = pd.read_csv('Output13.csv', index_col=0, names=names, parse_dates=True)
df1 = df[['Conc']].resample('10min').mean()
我试过
df=df.resample('1min',fill_method='bfill')
认为这会填充原始文件中的所有数据点......但它不起作用。
有什么建议吗? 谢谢!
答案 0 :(得分:1)
是你想要的吗?
In [57]: df.resample('T').ffill()
Out[57]:
Conc Flow SZ SB RZ RB Fraction Attenuation
Date
2005-03-01 17:10:00 1.6 7.9 0.0214 1.3536 0.0214 1.6726 1.0 30.567
2005-03-01 17:11:00 1.6 7.9 0.0214 1.3536 0.0214 1.6726 1.0 30.567
2005-03-01 17:12:00 1.6 7.9 0.0214 1.3536 0.0214 1.6726 1.0 30.567
2005-03-01 17:13:00 1.6 7.9 0.0214 1.3536 0.0214 1.6726 1.0 30.567
2005-03-01 17:14:00 1.6 7.9 0.0214 1.3536 0.0214 1.6726 1.0 30.567
2005-03-01 17:15:00 -13.1 7.9 0.0214 1.3540 0.0214 1.6729 1.0 30.550
2005-03-01 17:16:00 -13.1 7.9 0.0214 1.3540 0.0214 1.6729 1.0 30.550
2005-03-01 17:17:00 -13.1 7.9 0.0214 1.3540 0.0214 1.6729 1.0 30.550
2005-03-01 17:18:00 -13.1 7.9 0.0214 1.3540 0.0214 1.6729 1.0 30.550
2005-03-01 17:19:00 -13.1 7.9 0.0214 1.3540 0.0214 1.6729 1.0 30.550
2005-03-01 17:20:00 3.2 7.9 0.0214 1.3542 0.0214 1.6731 1.0 30.554
2005-03-01 17:21:00 3.2 7.9 0.0214 1.3542 0.0214 1.6731 1.0 30.554
2005-03-01 17:22:00 3.2 7.9 0.0214 1.3542 0.0214 1.6731 1.0 30.554
2005-03-01 17:23:00 3.2 7.9 0.0214 1.3542 0.0214 1.6731 1.0 30.554
2005-03-01 17:24:00 3.2 7.9 0.0214 1.3542 0.0214 1.6731 1.0 30.554
2005-03-01 17:25:00 -15.2 7.9 0.0214 1.3544 0.0214 1.6731 1.0 30.534
2005-03-01 17:26:00 -15.2 7.9 0.0214 1.3544 0.0214 1.6731 1.0 30.534
2005-03-01 17:27:00 -15.2 7.9 0.0214 1.3544 0.0214 1.6731 1.0 30.534
2005-03-01 17:28:00 -15.2 7.9 0.0214 1.3544 0.0214 1.6731 1.0 30.534
2005-03-01 17:29:00 -15.2 7.9 0.0214 1.3544 0.0214 1.6731 1.0 30.534
2005-03-01 17:30:00 -15.2 7.9 0.0214 1.3544 0.0214 1.6731 1.0 30.534
2005-03-01 17:31:00 -15.2 7.9 0.0214 1.3544 0.0214 1.6731 1.0 30.534
2005-03-01 17:32:00 -15.2 7.9 0.0214 1.3544 0.0214 1.6731 1.0 30.534
2005-03-01 17:33:00 -15.2 7.9 0.0214 1.3544 0.0214 1.6731 1.0 30.534
2005-03-01 17:34:00 -15.2 7.9 0.0214 1.3544 0.0214 1.6731 1.0 30.534
2005-03-01 17:35:00 -15.2 7.9 0.0214 1.3544 0.0214 1.6731 1.0 30.534
2005-03-01 17:36:00 -15.2 7.9 0.0214 1.3544 0.0214 1.6731 1.0 30.534
2005-03-01 17:37:00 -15.2 7.9 0.0214 1.3544 0.0214 1.6731 1.0 30.534
2005-03-01 17:38:00 -15.2 7.9 0.0214 1.3544 0.0214 1.6731 1.0 30.534
2005-03-01 17:39:00 -15.2 7.9 0.0214 1.3544 0.0214 1.6731 1.0 30.534
答案 1 :(得分:1)
如果你每小时只读一次读数,你的数据每10分钟就会有点稀疏......因为你得到了缺失点,你要么必须使用你拥有的数据(使用ffill
或bfill
),或插入缺失的数据。
df['Conc'].plot(label='original')
df['Conc'].resample('10T').ffill().plot(label='ffill')
df['Conc'].resample('10T').bfill().plot(label='bfill')
df['Conc'].resample('10T').mean().interpolate(method='linear').plot(label='linear interpolation')
df['Conc'].resample('10T').mean().interpolate(method='cubic').plot(label='cubic interpolation')
plt.legend(loc=4)