Чтобы найти 1%-квантиль выручки, выполните процедуру Bootstrap с 1000 повторений.
Сохраните список оценок из бутстрепа в переменной values, а 0.01-квантиль — в переменной lower. Код выведет на экран среднюю выручку и 0.01-квантиль.
import pandas as pd
import numpy as np
# открываем файлы
# возьмём индекс '0', чтобы перевести данные в pd.Series
target = pd.read_csv('/datasets/eng_target.csv')['0']
probabilities = pd.read_csv('/datasets/eng_probabilities.csv')['0']
def revenue(target, probabilities, count):
probs_sorted = probabilities.sort_values(ascending=False)
selected = target[probs_sorted.index][:count]
return 1000 * selected.sum()
state = np.random.RandomState(12345)
values = []
for i in range(1000):
target_subsample = target.sample(n=25, replace=True, random_state=state)
probs_subsample = probabilities[target_subsample.index]
values.append(revenue(target_subsample, probs_subsample, 10))
values = pd.Series(values)
lower = values.quantile(0.01)
mean = values.mean()
print("Средняя выручка:", mean)
print("1%-квантиль:", lower)
Результат
Средняя выручка: 9167.0
1%-квантиль: 6000.0