标签: quantile

计算大数据的分位数

我有大约 300 个文件,每个文件包含 1000 个时间序列实现(每个文件约 76 MB)。

我想计算全套 300000 个实现中每个时间步的分位数 (0.05、0.50、0.95)。

我无法将 1 个文件中的实现合并在一起,因为它会变得太大。

做到这一点最有效的方法是什么?

每个矩阵都是通过运行模型生成的,但是这里是包含随机数的样本:

x <- matrix(rexp(10000000, rate=.1), nrow=1000)
Run Code Online (Sandbox Code Playgroud)

r large-data quantile

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

SQL 查询中的四分位数

我有一个非常简单的表格:

CREATE TABLE IF NOT EXISTS LuxLog (
  Sensor TINYINT,
  Lux INT,
  PRIMARY KEY(Sensor)
)
Run Code Online (Sandbox Code Playgroud)

它包含来自不同传感器的数千个日志。

我希望所有传感器都有 Q1 和 Q3。

我可以对每个数据进行一次查询,但最好对所有传感器进行一次查询(从一次查询中获取 Q1 和 Q3)

我认为这将是一个相当简单的操作,因为四分位数被广泛使用并且是频率计算中的主要统计变量之一。事实是,我发现了大量过于复杂的解决方案,而我希望找到一些简洁明了的解决方案。

任何人都可以给我一个提示?

编辑:这是我在网上找到的一段代码,但它对我不起作用:

SELECT  SUBSTRING_INDEX(
        SUBSTRING_INDEX(
            GROUP_CONCAT(                 -- 1) make a sorted list of values
                Lux
                ORDER BY Lux
                SEPARATOR ','
            )
        ,   ','                           -- 2) cut at the comma
        ,   75/100 * COUNT(*)        --    at the position beyond the 90% portion
        )
    ,   ','                               -- 3) cut at the comma
    ,   -1                                --    right after …
Run Code Online (Sandbox Code Playgroud)

mysql sql percentile quantile

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

如何使用python计算相对于另一列的数据列的百分位数排名

我有两列代表相同数量的数据; 一列来自我的训练数据,另一列来自我的验证数据.

我知道如何使用以下方法有效地计算训练数据的百分位数排名:

pandas.DataFrame(training_data).rank(pct = True).values
Run Code Online (Sandbox Code Playgroud)

我的问题是,如何有效地获得对于训练数据列的验证数据列的类似百分位数排名?也就是说,对于验证数据列中的每个值,我如何找到其百分位数相对于训练数据列中所有值的排名?

我试过这样做:

def percentrank(input_data,comparison_data):
    rescaled_data = np.zeros(input_data.size)
    for idx,datum in enumerate(input_data):
        rescaled_data[idx] =scipy.stats.percentileofscore(comparison_data,datum)
    return rescaled_data/100
Run Code Online (Sandbox Code Playgroud)

但是我不确定这是否是正确的,并且最重要的是它非常慢,因为它正在对for循环中的每个值进行大量冗余计算.

任何帮助将不胜感激!

python percentile quantile pandas

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

如何在多列上使用Spark QuantumDiscretizer

所有,

我有一个毫升管道设置如下

import org.apache.spark.ml.feature.QuantileDiscretizer
import org.apache.spark.sql.types.{StructType,StructField,DoubleType}    
import org.apache.spark.ml.Pipeline
import org.apache.spark.rdd.RDD
import org.apache.spark.sql._
import scala.util.Random

val nRows = 10000
val nCols = 1000
val data = sc.parallelize(0 to nRows-1).map { _ => Row.fromSeq(Seq.fill(nCols)(Random.nextDouble)) }
val schema = StructType((0 to nCols-1).map { i => StructField("C" + i, DoubleType, true) } )
val df = spark.createDataFrame(data, schema)
df.cache()

//Get continuous feature name and discretize them
val continuous = df.dtypes.filter(_._2 == "DoubleType").map (_._1)
val discretizers = continuous.map(c => new QuantileDiscretizer().setInputCol(c).setOutputCol(s"${c}_disc").setNumBuckets(3).fit(df))
val pipeline = new …
Run Code Online (Sandbox Code Playgroud)

dictionary pipeline scala quantile apache-spark

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

pandas: qcut error: ValueError: Bin edges must be unique:

I am trying to compute percentile of two columns using the pandas qcut method like below:

my_df['float_col_quantile'] = pd.qcut(my_df['float_col'], 100, labels=False)
my_df['int_col_quantile'] = pd.qcut(my_df['int_col'].astype(float), 100, labels=False)
Run Code Online (Sandbox Code Playgroud)

The column float_col_quantile works fine, but the column int_col_quantile has the following error. Any idea what I did wrong here? And how can I fix this problem? Thanks!


ValueError                                Traceback (most recent call last)
<ipython-input-19-b955e0b00953> in <module>()
      1 my_df['float_col_quantile'] = pd.qcut(my_df['float_col'], 100, labels=False)
----> 2 my_df['int_col_quantile'] = pd.qcut(my_df['int_col'].astype(float), 100, labels=False)


/usr/local/lib/python3.4/dist-packages/pandas/tools/tile.py in qcut(x, q, …
Run Code Online (Sandbox Code Playgroud)

quantile dataframe python-3.x pandas

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

xarray数据集groupby的分位数方法

我有一个经典的 xarray 数据集。这些是月度数据(38 年的月度数据)。

\n\n

我有兴趣分别计算每个月的分位数值。

\n\n
<xarray.Dataset>\nDimensions:        (lat: 26, lon: 71, time: 456)\nCoordinates:\n  * lat            (lat) float32 25.0 26.0 27.0 28.0 29.0 30.0 31.0 32.0 ...\n  * lon            (lon) float32 -130.0 -129.0 -128.0 -127.0 -126.0 -125.0 ...\n  * time           (time) datetime64[ns] 1979-01-31 1979-02-28 1979-03-31 ...\nData variables:\n    var1         (time, lat, lon) float32 nan nan nan nan nan nan nan nan ...\n    var2         (time, lat, lon) float32 nan nan nan nan nan nan nan nan ...\n    var3         (time, lat, lon) float32 …
Run Code Online (Sandbox Code Playgroud)

quantile python-xarray pandas-groupby

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

Pandas:groupby 然后检索 IQR

我对 Pandas 很陌生,我正在尝试做以下事情:

我有两个数据框commsarts看起来像这样(除了它们与其他列的广告更长的事实)

通讯:

ID    commScore           
10       5                
10       3                  
10      -1                 
11       0                
11       2              
12       9      
13      -2     
13      -1     
13       1      
13       4
Run Code Online (Sandbox Code Playgroud)

艺术:

ID    commNumber
10        3 
11        2    
12        1
13        4      
Run Code Online (Sandbox Code Playgroud)

我需要comms按 ID 进行分组,然后保存(显然在正确的 ID 行中)每个 ID 的 commScore 分布的arts四分位数范围 ( IQR )。

我已经尝试过使用groupby,aggmap ,但由于我的概念pandas非常有限,所以我无法做我正在寻找的事情。

有没有人有办法解决吗?

谢谢

安德里亚

python quantile dataframe pandas pandas-groupby

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

使用scipy和matplotlib绘制分位数,中位数和传播

我是matplotlib的新手,我想创建一个情节,其中包含以下信息:

  1. 连接大约200个可变长度向量的中位数的行(输入)
  2. 连接这些矢量的相应分位数的线.
  3. 连接相应展开的线(最大和最小点).

所以基本上,它有点像一个连续的盒子情节.

谢谢!

python matplotlib scipy quantile boxplot

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

将整数量化为离散桶

我有一个约7500项的列表,它们都有类似的签名:

{
    revenue: integer,
    title: string,
    sector: string
}
Run Code Online (Sandbox Code Playgroud)

收入将在0到10亿之间.我想构建一个规模,以便给定一个特定公司的收入......它返回相对于以下"桶"的位置:

$0-5 Million
$5-10 Million
$10-25 Million
$25-50 Million
$50-100 Million
$100-250 Million
> $250 Million
Run Code Online (Sandbox Code Playgroud)

我相信我应该能够用d3中的量化或分位数量表来实现这一目标,但是在获得预期结果方面遇到了困难.到目前为止,我有类似的东西:

var max_rev = 1000000000 // 1 Billion
scale = d3.scale.quantize().domain(_.range(max_rev)).range([5000000, 10000000, 25000000, 50000000, 100000000, 250000000])
Run Code Online (Sandbox Code Playgroud)

一个显而易见的问题是调用_.range(max_rev)创建一个10亿个项目的数组,所以我想知道如何更有效地做这个(类似.domain([0,1000000000])?)

定义此比例的最佳方法是什么,scale(75000000)将返回50000000.一旦我有了,我可以检查它对一个哈希并返回正确的标签:

{
    ...
    ...
    50000000: "$50-100 Million",
    100000000: "$100-250 Million",
    ...
Run Code Online (Sandbox Code Playgroud)

}

非常感谢!如果我能提供任何其他信息,请告诉我.

charts quantization quantile d3.js

3
推荐指数
1
解决办法
1527
查看次数

考虑到数据的子集,如何获得每个数据帧行的百分位数值?

我有一个包含145个rowns和1000多列的数据框.

对于每一行,我想提取第95百分位数的值,但仅计算大于或等于1的数据.

考虑到所有数据,我设法计算每一行的值,如下所示:

p95.obs <- apply(obs,1,quantile,probs=c(.95))
Run Code Online (Sandbox Code Playgroud)

包括我尝试的大于选项

p95.obs <- apply(obs>=1,1,quantile,probs=c(.95))
Run Code Online (Sandbox Code Playgroud)

但是这样我每行只获得1.

r quantile dataframe

3
推荐指数
1
解决办法
3258
查看次数