我正在尝试学习SQL,所以请耐心等待。我正在使用PostgreSQL 9.3
我想根据日期窗口对一列进行平均。我能够编写窗口函数来完成一个集合,interval
但是我希望能够随着不断增长做到这一点interval
。我的意思是:
average values from date_0 to date_1
average values from date_0 to date_2
average values from date_0 to date_3
..... so date date_0 stays the same and date_x grows and creates a larger sample
我假设有一个比对我要平均的每个范围运行查询更好的方法。任何建议表示赞赏。谢谢你。
我正在尝试创建均匀分布的垃圾箱,以用于汇总表的值。
我的间隔是:
(MAX(date) - MIN(date)) / bins
这里date
是一个表的列
并且 bins
是并列我想表分成数。
date_0
= MIN(日期)
date_n
= MIN(日期)+(间隔* n)
我建议使用方便的功能
width_bucket()
:
要获取每个时间段(“ bin”)的平均值:
SELECT width_bucket(extract(epoch FROM t.the_date)
, x.min_epoch, x.max_epoch, x.bins) AS bin
, avg(value) AS bin_avg
FROM tbl t
, (SELECT extract(epoch FROM min(the_date)) AS min_epoch
, extract(epoch FROM max(the_date)) AS max_epoch
, 10 AS bins
FROM tbl t
) x
GROUP BY 1;
要获得(逐步)增长时间间隔内的“运行平均值”:
SELECT bin, round(sum(bin_sum) OVER w /sum(bin_ct) OVER w, 2) AS running_avg
FROM (
SELECT width_bucket(extract(epoch FROM t.the_date)
, x.min_epoch, x.max_epoch, x.bins) AS bin
, sum(value) AS bin_sum
, count(*) AS bin_ct
FROM tbl t
, (SELECT extract(epoch FROM min(the_date)) AS min_epoch
, extract(epoch FROM max(the_date)) AS max_epoch
, 10 AS bins
FROM tbl t
) x
GROUP BY 1
) sub
WINDOW w AS (ORDER BY bin)
ORDER BY 1;
使用the_date
而不是date
作为列名,避免使用保留字作为标识符。
由于width_bucket()
目前仅针对double precision
和实现numeric
,因此我从中提取历元值the_date
。此处的详细信息:
在PostgreSQL中聚集(x,y)坐标点云
取一定时间内的平均值 用法 Your browser does not support the video tag. 案例:数据变化趋势 功能:加入平均值和不加平均值的折线图形成对比,显示数字改变的规律 工作原理 结果将会是一段时间段输入的平均值。你可以设置配置项中的时间段长度(工程师叫它采样窗) 提示 短的采样窗意为着输出对输入变化的反应更敏感。
问题内容: 我无法获得熊猫列的平均值或均值。有一个数据框。我在下面尝试的任何事情都没有给我该列的平均值 以下返回几个值,而不是一个: 这样: 问题答案: 如果您只想要列的均值,请选择列(这是一个系列),然后调用:
我不能得到熊猫的平均值或平均值。有一个数据框。下面我尝试的东西都没有给我列的平均值 以下内容返回多个值,而不是一个值: 这也是:
Python是否有一个SciPy函数或NumPy函数或模块来计算给定特定窗口的一维数组的运行平均值?
我想计算两个相关数组的许多连续间隔的均值和标准偏差(如下所示),其中前两列分别是(比方说)时间和距离。第三、四、五是平均时间(中心)、平均距离和偏差标准。(实际上这是我亲手做的)。在这个例子中,平均值和标准差是为每三个连续的间隔做出的(但通常可以超过4×4,10×10,以此类推)。 所以,我有类似的长列表,我想计算(可能用PANDAS,NUMPY和/或SCIPY)类似的东西,做一些循环,创建平均时
然后我需要一个得到平均高点的函数。下面是我做的: 但当我测试它时,我得到的回答不是平均值。我做错了什么?有人能提供线索吗?