gpt4 book ai didi

python - Pandas :DataFrame.quantile 轴关键字不起作用

转载 作者:太空宇宙 更新时间:2023-11-04 10:32:28 26 4
gpt4 key购买 nike

知道为什么会出现这种行为吗?

基础数据:

In  [1]: tmc_sum.head(6)
Out [1]: 1 2 3 8 9 10
tmc
110+05759 7469 7243 7307 7347 7271 7132
110P05759 7730 7432 7482 7559 7464 7305
110+05095 7256 6784 6697 6646 6786 6530
110P05095 0 0 0 0 0 0
110+05096 6810 5226 5625 5035 5064 4734
110P05096 6854 5041 5600 5308 5261 4747

序曲:

根据 documentation of quantile ,这可以正常工作:

In  [2]: tmc_sum.quantile(0.05, axis=1)
Out [2]: 1 3347.50
2 1882.40
3 1933.10
8 1755.00
9 1554.15
10 1747.85
dtype: float64

它按列正确计算第 5 个百分位数。 (请注意,有比上面打印的六列更多的列。)

问题:

但这并没有像预期的那样工作:

In  [3]: tmc_sum.quantile(0.05, axis=0)
Out [3]: 1 3347.50
2 1882.40
3 1933.10
8 1755.00
9 1554.15
10 1747.85
dtype: float64

再次按列计算。虽然,根据文档,它应该按行计算。所以我倾向于期待这样的事情:

In  [4]: tmc_sum.apply(lambda x: np.percentile(x, 0.05), axis=1).head(6)
Out [4]: tmc
110+05759 7132.2775
110P05759 7305.3175
110+05095 6530.2900
110P05095 0.0000
110+05096 4734.7525
110P05096 4747.7350

这种行为是预期的吗?我是否遗漏了什么,或者这是一个错误?

最佳答案

这是 0.14.0 中的错误(axis 关键字被忽略)并在 0.14.1 中修复(参见 https://github.com/pydata/pandas/pull/7312)

如果您无法升级,您可以使用 df.T.quantile(0.5) 获得所需的行为。


顺便说一句,axis=1 的情况不正确。 axis=0 的默认值计算不同列的分位数,axis=1 计算每一行的“沿列”。小例子,考虑:

In [3]: df
Out[3]:
a b c
0 0 1 2
1 3 4 5

axis=0的默认值:

In [4]: df.quantile(0.5, axis=0)
Out[4]:
a 1.5
b 2.5
c 3.5
dtype: float64

axis=1:

In [5]: df.quantile(0.5, axis=1)
Out[5]:
0 1
1 4
dtype: float64

关于python - Pandas :DataFrame.quantile 轴关键字不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25586500/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com