Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

Erro ao calcular a mediana - TypeError: unsupported operand type(s) for /: 'str' and 'int'

*Olá a todos, *

Praticamente todo o código esteve sem erros, porém na hora de realizar uma operação matemática para realizar o cálculo o erro apareceu.

Pelo o que entendi não posso realizar uma operação matemática em um objeto, mas não sei o que devo fazer para que funcione.

Esse é o DataFrame:

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)
df

Calculo para a mediana:

notas_beltrano = df.Beltrano.sample(6, random_state = 101)
notas_beltrano

notas_beltrano = notas_beltrano.sort_values()
notas_beltrano

notas_beltrano = notas_beltrano.reset_index()
notas_beltrano

n = notas_beltrano.shape[0]
n

meio = int (n / 2) - 1
meio

elemento_md = notas_beltrano.iloc[meio]
elemento_md_mais_um = notas_beltrano.iloc[meio + 1]

elemento_md = notas_beltrano.iloc[meio]
elemento_md_mais_um = notas_beltrano.iloc[meio + 1]

Md = (elemento_md + elemento_md_mais_um) / 2
Md

Alguém poderia me ajudar?

Agradeço desde já!

2 respostas
solução!

Olá, Matheus, tudo bem?

Esse erro ocorreu porque você usou usou o método reset_index() em notas_beltrano .

O que isso significa?

O notas_beltrano no nosso exemplo é um Data Series e ele tem duas características, o index são as matérias e os valores as notas de cada matéria. Quando você usa o reset_index(), como o nome diz ele "reseta" o index e muda para valores de 0 a 5, no nosso exemplo.

Mas o que acontece com as nossas matérias?

Elas se tornam um nova coluna e o nosso Data Series é transformado em um DataFrame com 2 colunas (index - que tem as nossas matérias e Beltrano - que tem as notas de cada matéria). Como a coluna index, com as nossas matérias, tem valores do tipo str, quando tentamos realizar uma conta como Md = (elemento_md + elemento_md_mais_um) / 2 é reportado um erro, pois ele não tenta executar essa ação só na coluna onde tem valores númericos, mas também na que contem os valores no formato de string.

Para corrigir, basta apenas retirar o trecho de código notas_beltrano = notas_beltrano.reset_index() e rodá-lo novamente.

Espero ter ajudado e qualquer dúvida é só chamar!

Forte abraço!

Caso este post tenha lhe ajudado, por favor, marcar como solucionado ✓.Bons Estudos!

*Afonso, *

Apliquei o que você ensinou e deu certo. Obrigado pelo apoio.