尝试对Pandas进行上采样以获取每分钟的数据

时间:2016-06-21 14:13:00

标签: python pandas

我有一个数据库,包含每分钟,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') 

认为这会填充原始文件中的所有数据点......但它不起作用。

有什么建议吗? 谢谢!

2 个答案:

答案 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分钟就会有点稀疏......因为你得到了缺失点,你要么必须使用你拥有的数据(使用ffillbfill),或插入缺失的数据。

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)