numpy - 解释二维数组的百分位值
问题描述
我在 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
列是 atimestamp
并且始终是唯一的。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])
为什么与第二和第三四分位数相比,第一四分位数的波动要大得多?第二个和第三个似乎接近相同的值,但第一个不是。
解决方案
您没有指定axis
的参数np.percentile
。在这种情况下,它计算展平数组的百分位数,这意味着将两列放在一起。当然,这没什么意义,因为“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)
推荐阅读
- oracle - 如何转义字符串中的单引号?
- python-3.x - 如何从不和谐服务器获取所有用户?
- postgresql - 在选定的时间间隔来自 PostgreSQL 数据库的数据
- python - 代码未执行,但也未显示任何错误
- eclipse-rcptt - 在 RCPTT 中使用数据绑定时,单击单选按钮不会更新布局
- python - IOError:[Errno 13] 权限被拒绝 Pandas
- c++ - MSB6006:“CL.exe”在使用 openMP 时以代码 2 退出
- sql-server - 将单行拆分为多行 - SQL Server Management Studio 2018
- solr - 即使没有为 solrQuery 找到单个结果,也显示构面结果
- flutter - 水平滚动与 WebView 结合时的滚动优先级