Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用月平均值填补数据空白(Python)_Python_For Loop_Pandas_Average_Interpolation - Fatal编程技术网

用月平均值填补数据空白(Python)

用月平均值填补数据空白(Python),python,for-loop,pandas,average,interpolation,Python,For Loop,Pandas,Average,Interpolation,我有一个非常长的时间序列超过10年的半小时测量作为Csv文件。测量设备时不时地出现故障。我想用月平均值或移动平均值(忽略缺失值)来插值这一差距。我想我需要一个for循环来完成这项工作,但我不知道该怎么做。有人能帮我吗? 我的数据如下所示: 10-Oct-2010 21:15 0.00271 10-Oct-2010 21:45 0.00408 10-Oct-2010 22:15 -0.00228 10-Oct-2010 22:45 0.00433 10-Oct-2010 23:15

我有一个非常长的时间序列超过10年的半小时测量作为Csv文件。测量设备时不时地出现故障。我想用月平均值或移动平均值(忽略缺失值)来插值这一差距。我想我需要一个for循环来完成这项工作,但我不知道该怎么做。有人能帮我吗? 我的数据如下所示:

10-Oct-2010 21:15   0.00271
10-Oct-2010 21:45   0.00408
10-Oct-2010 22:15   -0.00228
10-Oct-2010 22:45   0.00433
10-Oct-2010 23:15   0.00421
10-Oct-2010 23:45   0.00224
11-Oct-2010 00:15   -0.01678
11-Oct-2010 00:45   -0.00059
11-Oct-2010 01:15   -0.00371
11-Oct-2010 01:45   0.01353
11-Oct-2010 02:15   0.00108
11-Oct-2010 02:45   0.00101
11-Oct-2010 03:15   -0.00159
11-Oct-2010 03:45   0.0011
我目前的代码是:

import pandas as pd
ts = pd.read_csv('C:\Python27\Scripts\ET_T_2000.csv', sep=';', parse_dates=[['date', 'time']])
ts1 = ts.set_index('date_time')['ET'].resample('D', how='sum')
ts1.to_csv('sum.csv')

所以我得到了蒸发数据的每日总和。我也可以对每月-每日平均值进行重采样,但我不知道如何告诉Python它需要为每个间隔使用这个特定月份的平均值。

如果您在元组的列表(唉,您没有说明您的数据结构)
(时间戳,值)


如果您在元组的列表(唉,您没有说明您的数据结构)中有您的值
(时间戳,值)


如果您在元组的列表(唉,您没有说明您的数据结构)中有您的值
(时间戳,值)


如果您在元组的列表(唉,您没有说明您的数据结构)中有您的值
(时间戳,值)


注意:这应该是一个评论,但我没有它的代表:)


Pandas在序列和数据帧上都有一个很好的“插值”函数:()。我将建议,特别是如果您有“几天”的数据丢失,您只需将值保留为NaNs()。Pandas非常支持使用NA值的绘图,看到具有正确测量值的绘图,然后“间隙”很容易解释。此外,这种方法还提供了额外的信息,比如说,您正在查看图表,您看到周末的间隙比其他日子多,这可能表明测量设备在周末(或其他任何时候)不太稳定。

注意:这应该是一个评论,但我没有代表:)


Pandas在序列和数据帧上都有一个很好的“插值”函数:()。我将建议,特别是如果您有“几天”的数据丢失,您只需将值保留为NaNs()。Pandas非常支持使用NA值的绘图,看到具有正确测量值的绘图,然后“间隙”很容易解释。此外,这种方法还提供了额外的信息,比如说,您正在查看图表,您看到周末的间隙比其他日子多,这可能表明测量设备在周末(或其他任何时候)不太稳定。

注意:这应该是一个评论,但我没有代表:)


Pandas在序列和数据帧上都有一个很好的“插值”函数:()。我将建议,特别是如果您有“几天”的数据丢失,您只需将值保留为NaNs()。Pandas非常支持使用NA值的绘图,看到具有正确测量值的绘图,然后“间隙”很容易解释。此外,这种方法还提供了额外的信息,比如说,您正在查看图表,您看到周末的间隙比其他日子多,这可能表明测量设备在周末(或其他任何时候)不太稳定。

注意:这应该是一个评论,但我没有代表:)


Pandas在序列和数据帧上都有一个很好的“插值”函数:()。我将建议,特别是如果您有“几天”的数据丢失,您只需将值保留为NaNs()。Pandas非常支持使用NA值的绘图,看到具有正确测量值的绘图,然后“间隙”很容易解释。另外,这种方法提供了额外的信息,比如说,你正在查看图表,你看到周末的间隙比其他日子多,这可能表明测量设备在周末(或其他任何时候)不太稳定。

由于缺失值的间隙如此之大,我想你最好将它们保留为NaN,并调整您的计算,使其能够处理丢失的数据。看起来你正在用它进行金融模拟,从长远来看,如果你修改实际的原始数据,它总是会适得其反。如果您使用Numpy进行计算,则会添加一组修改过的函数,这些函数会跳过数组中的NAN值,例如,在计算平均值等时。最好继续

有这么大的缺失值的差距,我想你真的更好了,把它们保留为NaN,调整你的计算,让它们能够处理缺失的数据。看起来你正在用它进行金融模拟,从长远来看,如果你修改实际的原始数据,它总是会适得其反。如果您使用Numpy进行计算,则会添加一组修改过的函数,这些函数会跳过数组中的NAN值,例如,在计算平均值等时。最好继续

有这么大的缺失值的差距,我想你真的更好了,把它们保留为NaN,调整你的计算,让它们能够处理缺失的数据。看起来你正在用它进行金融模拟,从长远来看,如果你修改实际的原始数据,它总是会适得其反。如果您使用Numpy进行计算,则会添加一组修改过的函数,这些函数会跳过数组中的NAN值,例如,在计算平均值等时。最好继续

有这么大的缺失值的差距,我想你真的更好了,把它们保留为NaN,调整你的计算,让它们能够处理缺失的数据。看起来你正在用它进行金融模拟,从长远来看,如果你修改实际的原始数据,它总是会适得其反。如果您使用Numpy进行计算,则会添加一组修改过的函数,这些函数会跳过数组中的NAN值,例如,在计算平均值等时。最好继续

无论做什么,都要更改源数据:始终保持原始数据的原样

然后,数据的任何使用者都可以决定特定的i
data = [ (1, 3.), (2, 5.), (3, 0.), (6, 3.), (7, 3.), (9, 2.), (10, 0.) ]
timestampDistance = 1

def interpolateGap(ts0, v0, ts1, v1):
  count = (ts1 - ts0) / timestampDistance
  return [ (ts0 + i * timestampDistance, v0 + (v1 - v0) * i / count)
    for i in range(1, count) ]

def fillGap(data, pos, ts0, v0, ts1, v1):
  data[pos+1:pos] = interpolateGap(ts0, v0, ts1, v1)

for i in range(len(data)-1, 1, -1):
  timestamp, value = data[i]
  previousTimestamp, previousValue = data[i-1]
  if previousTimestamp + timestampDistance < timestamp:
    fillGap(data, i-1, previousTimestamp, previousValue, timestamp, value)

print data
[(1, 3.0), (2, 5.0), (3, 0.0), (4, 1.0), (5, 2.0), (6, 3.0), (7, 3.0), (8, 2.5), (9, 2.0), (10, 0.0)]