标签: median

计算 AWS Athena 表中每个组的中位数

以下是 athena 表的架构

在此输入图像描述

我希望通过 standard_lab_parameter_name 和单位计算“parameter_value”组的中位数。为此,我遵循了链接: https: //docs.aws.amazon.com/redshift/latest/dg/r_MEDIAN.html 但是在运行查询时

select median(parameter_value) from table_name group by standard_lab_parameter_name, units
Run Code Online (Sandbox Code Playgroud)

它抛出错误

 SYNTAX_ERROR: line 1:8: Function median not registered
Run Code Online (Sandbox Code Playgroud)

有什么帮助吗?或者如果有一些替代查询会很棒

sql group-by median amazon-web-services amazon-athena

5
推荐指数
1
解决办法
1万
查看次数

你如何使用R找到2列的中位数?

我试图s用列A1和计算数据集的中值向量B1.中值向量是来自两个列的每个观察的中值.

我试图这样做但它不起作用.

median(s[c("A1","B1")])
Run Code Online (Sandbox Code Playgroud)

还有另一种方法吗?

r median

4
推荐指数
2
解决办法
9701
查看次数

如何计算最接近中位数的k?

我有一个n个成对不同元素的数组和一个数字k,其中1 <= k <= n.

现在我正在寻找一种算法,计算k数字与数字数组的中位数的最小绝对差值.我需要线性复杂度(O(n)).

我的方法:

我找到了中位数:

  • 我把数字排序
  • 我得到了中间元素,或者如果元素的数量为id,那么中间和圆形中的两个元素的平均值.

之后:

  • 我拿每个数字,找到距离中位数的绝对距离.这些结果我保存在不同的数组中
  • 我对新获得的数组进行排序.
  • 我取结果数组的前k个元素,我就完成了.

我不知道我的解决方案是否存在O(n),我是否对这个想法是对的.有人可以验证吗?有人能告诉我如何在O(n)中解决它吗?

arrays algorithm median

4
推荐指数
1
解决办法
3665
查看次数

从AVL树获得中位数?

如果你有一个AVL树,从中获得中位数的最佳方法是什么?中位数将被定义为排序列表中具有索引ceil(n/2)(索引以1开头)的元素.

所以,如果列表是

1 3 5 7 8
Run Code Online (Sandbox Code Playgroud)

中位数是5.如果列表是

1 3 5 7 8 10

中位数是5.

如果你可以扩充树,我认为最好让每个节点知道子树的大小(节点数),(即1 + left.size + right.size).使用这个,我能想到的最好方法是中位数搜索O(lg n)时间,因为你可以通过比较索引进行遍历.

有没有更好的办法?

algorithm performance avl-tree median data-structures

4
推荐指数
1
解决办法
1977
查看次数

在使用numpy.median之前对数据进行排序

我正在使用Python测量数据样本的中位数和百分位数.

import numpy as np
xmedian=np.median(data)
x25=np.percentile(data, 25)
x75=np.percentile(data, 75)
Run Code Online (Sandbox Code Playgroud)

np.sort()在测量中位数之前,我是否必须在数据上使用该功能?

python numpy median percentile

4
推荐指数
1
解决办法
8476
查看次数

在python中删除了NaN值的列表的中位数

是否有可能在没有明确删除NaN的情况下计算列表的中位数,而是忽略它们?

我想median([1,2,3,NaN,NaN,NaN,NaN,NaN,NaN])成为2,而不是NaN.

python numpy median pandas

4
推荐指数
1
解决办法
6340
查看次数

使用NA计算列中值

我试图计算R中各列的中位数,然后用列中的每个值减去中值.我在这里遇到的问题是我在我的专栏中有N/A,我不想删除但只返回它们而不减去中位数.例如

ID <- c("A","B","C","D","E") 
Point_A <- c(1, NA, 3, NA, 5) 
Point_B <- c(NA, NA, 1, 3, 2)

df <- data.frame(ID,Point_A ,Point_B)
Run Code Online (Sandbox Code Playgroud)

是否可以计算具有N/A的柱的中值?我的结果是

+----+---------+---------+
| ID | Point_A | Point_B |
+----+---------+---------+
| A  | -2      | NA      |
| B  | NA      | NA      |
| C  | 0       | -1      |
| D  | NA      | 1       |
| E  | 2       | 0       |
+----+---------+---------+
Run Code Online (Sandbox Code Playgroud)

r median na

4
推荐指数
1
解决办法
218
查看次数

使用滚动中位数过滤掉Pandas数据框中的异常值

我试图从带有日期的GPS高程位移的散点图中滤除一些异常值

我正在尝试使用df.rolling来计算每个窗口的中位数和标准偏差,如果它大于3个标准差,则删除该点.

但是,我无法找到一种方法来遍历列并比较滚动计算的中值.

这是我到目前为止的代码

import pandas as pd
import numpy as np

def median_filter(df, window):
    cnt = 0
    median = df['b'].rolling(window).median()
    std = df['b'].rolling(window).std()
    for row in df.b:
      #compare each value to its median




df = pd.DataFrame(np.random.randint(0,100,size=(100,2)), columns = ['a', 'b'])

median_filter(df, 10)
Run Code Online (Sandbox Code Playgroud)

如何循环并比较每个点并将其删除?

median outliers pandas rolling-computation

4
推荐指数
1
解决办法
4306
查看次数

如果方法是常量,如何找到向量的中位数?

我创建了一个名为Collect的方法,该方法将一堆值添加到向量中(如下所示)

void Median::Collect(double datum)
{
  myVector.push_back(datum);
}
Run Code Online (Sandbox Code Playgroud)

我需要创建一种方法来计算我在上述方法中的向量中收集的所有值的中位数。函数定义如下

/* Calculates the median of the data (datum) from the Collect method.
 */
 double Median::Calculate() const
{

}
Run Code Online (Sandbox Code Playgroud)

所以我知道我首先需要对向量进行排序才能找到中位数。以下是我的尝试:

    double Median::Calculate() const
  {
    std::sort(myVector.begin(), myVector.end());
    double median;
    if (myVector.size() % 2 == 0)
    {// even
        median = (myVector[myVector.size() / 2 - 1] + myVector[myVector.size() / 2]) / 2;
    }
    else
    {// odd
        median = myVector[myVector.size() / 2];
    }
    return median;
  }
Run Code Online (Sandbox Code Playgroud)

但是我意识到这不是编译的,因为方法是const,所以对向量的值进行排序会改变向量,这在const函数中是不允许的。那么我应该为这种方法做什么?

c++ sorting algorithm const median

4
推荐指数
1
解决办法
220
查看次数

Pandas: increase speed of rolling window (apply a custom function)

I'm using this code to apply a function (funcX) on my data-frame using a rolling window. The main issue is that the size of this data-frame (data) is very large, and I'm searching for a faster way to do this task.

import numpy as np

def funcX(x):
    x = np.sort(x)
    xd = np.delete(x, 25)
    med = np.median(xd)
    return (np.abs(x - med)).mean() + med

med_out = data.var1.rolling(window = 51, center = True).apply(funcX, raw = True)
Run Code Online (Sandbox Code Playgroud)

The only …

python performance median dataframe rolling-computation

4
推荐指数
1
解决办法
308
查看次数