python - 滚动平均计算降雨强度

标签 python average rolling-computation

我有一些记录为日期和时间的真实降雨数据,以及翻斗式雨量计上的累积提示数。翻斗代表 0.5 毫米的降雨量。 我想循环浏览文件并确定强度的变化(降雨量/时间) 所以我需要多个固定时间范围内的滚动平均值: 所以我想累积降雨,直到累积 5 分钟的降雨并确定以毫米/小时为单位的强度。因此,如果在 5 分钟内记录 3 毫米,则等于 3/5*60 = 36 毫米/小时。 10 分钟内的相同降雨量将是 18 毫米/小时...

因此,如果我在几个小时内降雨,我可能需要按几个标准间隔进行检查,例如:5、10、15、20、25、30、45、60 分钟等... 此外,数据在原始文件中以相反的顺序记录,所以最早的时间在文件的末尾,后来和最后的时间步首先出现在标题之后: 看起来...(此处 975 - 961 = 14 个提示 = 7 毫米降雨量)平均强度 1.4 毫米/小时 但是在 16:27 和 16:34 之间 967-961 = 6 个尖端 = 7 分钟内 3 毫米 = 27.71 毫米/小时

7424 Figtree (O'Briens Rd)
DATE     :hh:mm Accum Tips
8/11/2011 20:33     975
8/11/2011 20:14     974
8/11/2011 20:04     973
8/11/2011 20:00     972
8/11/2011 19:35     971
8/11/2011 18:29     969
8/11/2011 16:44     968
8/11/2011 16:34     967
8/11/2011 16:33     966
8/11/2011 16:32     965
8/11/2011 16:28     963
8/11/2011 16:27     962
8/11/2011 15:30     961

有什么建议吗?

最佳答案

我不完全确定你有什么问题。

你知道如何读出文件吗?你可以这样做:

data = [] # Empty list of counts

# Skip the header
lines = [line.strip() for line in open('data.txt')][2::]

for line in lines:
    print line
    date, hour, count = line.split()
    h,m = hour.split(':')
    t = int(h) * 60 + int(m)      # Compute total minutes
    data.append( (t, int(count) ) ) # Append as tuple

data.reverse()

由于你的数据是累积的,你需要每两个条目减去,这就是 python 的列表理解非常好。

data = [(t1, d2 - d1) for ((t1,d1), (t2, d2)) in zip(data, data[1:])]
print data

现在我们需要遍历并查看最近 x 分钟内有多少条目。

timewindow = 10
for i, (t, count) in enumerate(data):
    # Find the entries that happened within the last [...] minutes
    withinwindow = filter( lambda x: x[0] > t - timewindow, data )
    # now you can print out any kind of stats about this "within window" entries
    print sum( count for (t, count) in withinwindow )

关于python - 滚动平均计算降雨强度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8294602/

相关文章:

python - 平均 Python Pandas 日期格式

python - 如何使用另一列的滚动平均值创建新列 - Python

arrays - 使用滑动窗口查看 Julia 数组

Python - 运行代码(迭代?)只能运行一次

python - 动态访问实例方法

c - 将变化的数字分配给单个变量

在 data.table 中的两列上滚动一个函数

python - 使用 Anaconda 安装 Scran 包时出错

python - 使 Tkinter Notebook 可拖动到另一个 View

php - mysql显示所有行的计算平均值