pandas.DataFrame.quantile#

DataFrame.quantile(q=0.5, axis=0, numeric_only=False, interpolation='linear', method='single')[源代码][源代码]#

返回在请求轴上的给定分位数的返回值。

参数:
q浮点数或类似数组的对象,默认值为0.5(50%分位数)

值在 0 <= q <= 1 之间,要计算的分位数。

{0 或 ‘index’, 1 或 ‘columns’},默认 0

0 或 ‘index’ 表示按行,1 或 ‘columns’ 表示按列。

numeric_onlybool, 默认为 False

仅包含 float, intboolean 数据。

在 2.0.0 版本发生变更: numeric_only 的默认值现在是 False

插值{‘linear’, ‘lower’, ‘higher’, ‘midpoint’, ‘nearest’}

这个可选参数指定当所需的分位数位于两个数据点 ij 之间时要使用的插值方法:

  • 线性:i + (j - i) * fraction,其中 fraction 是被 ij 包围的索引的小数部分。

  • 小写: i.

  • 更高:j

  • nearest: ij 哪个最近。

  • 中点: (i + j) / 2.

方法{‘single’, ‘table’}, 默认 ‘single’

是否按列计算分位数(’single’)或在所有列上计算(’table’)。当为’table’时,唯一允许的插值方法是’nearest’、’lower’和’higher’。

返回:
Series 或 DataFrame
如果 q 是一个数组,将返回一个 DataFrame

索引是 q,列是 self 的列,值是分位数。

如果 q 是一个浮点数,将返回一个 Series

index 是 self 的列,值是分位数。

参见

core.window.rolling.Rolling.quantile

滚动分位数。

numpy.percentile

用于计算百分位数的 Numpy 函数。

例子

>>> df = pd.DataFrame(
...     np.array([[1, 1], [2, 10], [3, 100], [4, 100]]), columns=["a", "b"]
... )
>>> df.quantile(0.1)
a    1.3
b    3.7
Name: 0.1, dtype: float64
>>> df.quantile([0.1, 0.5])
       a     b
0.1  1.3   3.7
0.5  2.5  55.0

指定 method=’table’ 将计算所有列的分位数。

>>> df.quantile(0.1, method="table", interpolation="nearest")
a    1
b    1
Name: 0.1, dtype: int64
>>> df.quantile([0.1, 0.5], method="table", interpolation="nearest")
     a    b
0.1  1    1
0.5  3  100

指定 numeric_only=False 还将计算日期时间和时间增量数据的百分位数。

>>> df = pd.DataFrame(
...     {
...         "A": [1, 2],
...         "B": [pd.Timestamp("2010"), pd.Timestamp("2011")],
...         "C": [pd.Timedelta("1 days"), pd.Timedelta("2 days")],
...     }
... )
>>> df.quantile(0.5, numeric_only=False)
A                    1.5
B    2010-07-02 12:00:00
C        1 days 12:00:00
Name: 0.5, dtype: object