gpt4 book ai didi

Python 相当于 Excel 的 PERCENTILE.EXC

转载 作者:太空宇宙 更新时间:2023-11-03 14:10:30 24 4
gpt4 key购买 nike

我正在使用 Pandas 计算一些财务风险分析,包括风险值(value)。简而言之,要计算风险值(value) (VaR),您需要一系列时间序列的模拟投资组合值(value)变化,然后计算特定的尾部百分位数损失。例如,95% VaR 是该时间序列中的第 5 个百分位数。

我在 Pandas 数据框中有我的时间序列,目前正在使用 pd.quantile() 函数来计算百分位数。 I () 作品。 Pandas quantile() 的工作方式类似于 Excel 的 PERCENTILE.INC() 的工作方式 - 它包括指定的百分位数。我已经搜索了几个 python 数学包以及这个论坛,寻找一个 python 解决方案,它使用与 Excel 中的 PERCENTILE.EXC() 相同的方法,但没有运气。我希望这里有人可以提出建议?

这里是示例代码。

import pandas as pd
import numpy as np

test_pd = pd.Series([15,14,18,-2,6,-78,31,21,98,-54,-2,-36,5,2,46,-72,3,-2,7,9,34])
test_np = np.array([15,14,18,-2,6,-78,31,21,98,-54,-2,-36,5,2,46,-72,3,-2,7,9,34])

print 'pandas: ' + str(test_pd.quantile(.05))
print 'numpy: '+ str(np.percentile(test_np,5))

我要找的答案是-77.4

谢谢,

瑞安

最佳答案

它不会像 Pandas 自己的百分位数那样高效,但它应该可以工作:

def quantile_exc(ser, q):
ser_sorted = ser.sort_values()
rank = q * (len(ser) + 1) - 1
assert rank > 0, 'quantile is too small'
rank_l = int(rank)
return ser_sorted.iat[rank_l] + (ser_sorted.iat[rank_l + 1] -
ser_sorted.iat[rank_l]) * (rank - rank_l)

ser = pd.Series([15,14,18,-2,6,-78,31,21,98,-54,-2,-36,5,2,46,-72,3,-2,7,9,34])

quantile_exc(ser, 0.05)
Out: -77.400000000000006

quantile_exc(ser, 0.1)
Out: -68.399999999999991

quantile_exc(ser, 0.3)
Out: -2.0

请注意,Excel 对于较小的百分位数会失败;这不是错误。这是因为低于最小值的等级不适合插值。因此,您可能想在 quantile_exc 函数中检查 rank 是否 > 0(请参阅断言部分)。

关于Python 相当于 Excel 的 PERCENTILE.EXC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38596100/

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