Oi Marcelo,
Lembre-se que vimos que quando n for par, a posição do elemento mediano será obtida da seguinte forma:
elemento_md = n / 2
E que a mediana neste caso é obtida da seguinte forma:
Mediana = ( X[elemento_md] + X[elemento_md + 1] ) / 2
Como em Python a indexação começa no 0 (zero), precisamos fazer uma pequena modificação na fórmula acima para obtermos o valor correto:
Mediana = ( X[elemento_md - 1] + X[elemento_md] ) / 2
Isso mostra que a mediana é a média aritmética entre os dois valores centrais da distribuição.
No seu notebook ficaria da seguinte forma:
import pandas as pd
df = pd.DataFrame(data = {'Fulano': [8, 10, 4, 8, 6, 10, 8],
'Beltrano': [10, 2, 0.5, 1, 3, 9.5, 10],
'Sicrano': [7.5, 8, 7, 8, 8, 8.5, 7]},
index = ['Matemática', 'Português', 'Inglês', 'Geografia', 'História', 'Física', 'Química'])
df.rename_axis('Matérias', axis = 'columns', inplace = True)
# Amostra para obtermos apenas 6 registros
notas_beltrano = df.Beltrano.sample(6, random_state = 101)
# Ordenação das notas em ordem crescente
notas_beltrano = notas_beltrano.sort_values()
# Transformando o index em uma variável do DataFrame
notas_beltrano = notas_beltrano.reset_index()
# Obtenção do elemento mediano
n = notas_beltrano.shape[0]
elemento_md = n / 2
# Cálculo da mediana. Como n é par a mediana é a média
# aritmética dos dois elementos centrais da distribuição
(notas_beltrano.Beltrano.loc[elemento_md - 1] + notas_beltrano.Beltrano.loc[elemento_md]) / 2
Valeu e bons estudos