我在熊猫中遇到了一个名为quantile()
的函数。有人可以帮我解释一下这个函数是如何工作的以及它的作用吗?一个例子将不胜感激。 我正在编写一个示例代码来帮助您更好地理解此功能
到目前为止,我拥有的代码:
def get_quantile_based_buckets(feature_values, num_buckets):
quantiles = feature_values.quantile([(i+1.)/(num_buckets+1.) for i in list(range(num_buckets))])
print(quantiles)
return [quantiles[q] for q in quantiles.keys()]
这里feature_values
是一个pandas DataFrame()
. 下面是一个解释此函数的示例:
>>> df = pd.DataFrame(np.array([[1, 1], [2, 10], [3, 100], [4, 100]]),
columns=['a', 'b'])
>>> df.quantile(.1)
a 1.3
b 3.7
dtype: float64
>>> df.quantile([.1, .5])
a b
0.1 1.3 3.7
0.5 2.5 55.0
如果有人能解释上面的例子,那就太好了。 欲了解更多信息和问题清晰度,请在评论部分注明。
考虑一个简单的例子,其中给定的值集是{1,8,9,4,2}
步骤1:首先按升序对给定的值进行排序,即{1,2,4,8,9}
步骤2:设N为集合中值的总数,Q为分位数。 计算温度 = (n-1(*q。 这里假设 q=0.3(30%( 和 n=5,所以温度 = (5-1(*0.3 = 1.2。
步骤3:您需要检查索引地板(温度(和CEIL(温度( 在排序集中。请注意,元素的索引从 0 开始。
步骤4:所以这里考虑索引为 1 和 2 的值,即 2 和 4 现在在熊猫提供的分位数函数中,有线性、低、高等各种插值。 对于线性,您可以通过执行 i+(j-i(*q.其中 i 是带索引 floor(temp( 的 no,j 是带索引 ceil(temp( 的 no。 所以这里 i=2,j=4。 所以分位数 = 2+(4-2(*0.3 = 2.6