【问题标题】:Interpreting percentile values for a 2D array解释二维数组的百分位值
【发布时间】:2019-03-01 14:48:29
【问题描述】:

我在 3 个不同的时间收集了数据点 -

最新合集

    receivedtime    newCol
0   1.536596e+12    43.000000
1   1.536596e+12    100.000000
2   1.536596e+12    180.000000
3   1.536596e+12    50.000244
4   1.536596e+12    3792.999756
5   1.536596e+12    897.000000
6   1.536596e+12    11343.000000
7   1.536596e+12    374.000000
8   1.536596e+12    690.000000
9   1.536596e+12    1.000000

旧收藏

    receivedtime    newCol
0   1.536597e+12    1080.0
1   1.536597e+12    1.0

最古老的收藏

    receivedtime    newCol
0   1.536596e+12    43.000000
1   1.536596e+12    100.000000
2   1.536596e+12    180.000000
3   1.536596e+12    50.000244
4   1.536596e+12    3792.999756
5   1.536596e+12    897.000000
6   1.536596e+12    11343.000000
7   1.536596e+12    374.000000
8   1.536596e+12    690.000000
9   1.536596e+12    492206.000000
10  1.536596e+12    420.000000
11  1.536596e+12    37.000244
12  1.536596e+12    509.999756
13  1.536596e+12    497.000000
14  1.536596e+12    436.000000
15  1.536596e+12    130.000000
16  1.536596e+12    1.000000

receivedTime 列是 timestamp 并且始终是唯一的。 newCol 是 2 个相邻观测值之间的时间差。

np.percentile 在这些数据点上的结果是 -

最新合集

np.percentile(latest, [25, 50, 75])
array([3.25500000e+02, 7.68298069e+11, 1.53659614e+12])

旧收藏

np.percentile(old, [25, 50, 75])
array([8.10250000e+02, 7.68298490e+11, 1.53659698e+12])

最古老的收藏

np.percentile(oldest, [25, 50, 75])
array([4.24000000e+02, 7.68298062e+11, 1.53659613e+12])

为什么第一个四分位数的波动比第二个和第三个四分位数的波动大得多?第二个和第三个似乎接近相同的值,但第一个不是。

【问题讨论】:

  • 我认为 stats.stackexchange.com 是一个更适合这个问题的论坛。

标签: numpy statistics percentile


【解决方案1】:

您没有指定np.percentileaxis 参数。在这种情况下,它计算 flattened 数组的百分位数,这意味着将两列放在一起。当然,这没什么意义,因为“newCol”中的数字具有不同的含义。由于“newCol”数字都小于“receivedTime”数字,所以会发生以下情况:

  • 第 25 个百分位是“newCol”的中位数。这在数据集之间有很大差异。
  • 第 50 个百分位介于最大的“newCol”条目和最小的“receivedTime”条目之间。由于“newCol”与“receivedTime”相比很小,这基本上是最小“receivedTime”的 1/2。
  • 第 75 个百分位是“receivedTime”的中位数,所有“receivedTime”都差不多。

实际结论:要么提取你想要百分位数的列:

np.percentile(old[:, 0], [25, 50, 75])

或指定axis=0 以获取每列中的百分位数。

np.percentile(old, [25, 50, 75], axis=0)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-02-16
    • 1970-01-01
    • 2014-04-12
    • 2017-12-28
    • 1970-01-01
    • 2016-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多