Olá Breno, tudo bem?
Essa função stats.percentileofscore() realmente pode parecer meio estranha no começo, mas a lógica dela fica mais clara quando você pensa que ela está dizendo “qual a posição desse valor dentro do conjunto”.
Quando você usa stats.percentileofscore([1, 2, 3, 3, 4], 3) e recebe 70.0, isso quer dizer que 70% dos valores da lista são menores ou iguais a 3. Nesse caso, temos quatro valores que atendem a isso (1, 2, 3, 3) dentro de um total de cinco, o que leva a esse percentual.
Já quando você usa kind='mean', a função muda um pouco o critério para lidar com os valores repetidos. Em vez de considerar só os menores ou iguais, ela faz uma média entre duas situações: a porcentagem de valores estritamente menores que 3 (1 e 2 → 40%) e a porcentagem de valores menores ou iguais a 3 (1, 2, 3, 3 → 80%). A média entre 40% e 80% resulta nos 60% que você viu.
Essas variações no parâmetro kind existem justamente para tratar empates de formas diferentes. Em cenários com muitos valores repetidos, usar mean pode dar uma visão mais equilibrada da posição do valor no conjunto.
Para saber mais: Sugestão de conteúdo:
O link está em inglês, mas você poderá utilizar a tradução automática do navegador
Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!
Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓. Bons Estudos!