Olá Matusalem,
Em exemplos mais simples você pode utilizar a primeira maneira que é mais fácil de ententer para quem está lendo o código, pois a diferença de desempenho entre os dois casos é insignificante.
Obs.: Nesse seu exemplo em específico o apply
vai ter um pior desempenho porque vai executar o alunos['Notas'].mean()
várias vezes. Colocando esse valor em uma variável e passando essa variável no seu lugar no apply
o desempenho é melhorado.
Mas existem alguns casos em que é melhor você utilizar o apply
, como por exemplo em uma situação onde muitas alterações sejam feitas, nesse seu exemplo é feito apenas uma subtração e mais nada, mas em alguns casos pode ser necessário realizar muitas operações. o apply
também tem a vantagem de poder ser executado nas linhas ou nas colunas.
Exemplo:
# Criando uma função para gerar um status de cada aluno
def add_obs(aluno):
obs = aluno['Nome'] + ' teve a nota ' + str(aluno['Notas'])
if aluno['Notas'] >= 7:
obs = obs + ' e foi aprovado!'
else:
obs = obs + ' e foi reprovado!'
return obs
# Aplicando a função acima para cada linha do dataframe
# axis=1 indica que queremos executar a função nas linhas
alunos.apply(add_obs, axis=1)
# Resultado:
0 Ary teve a nota 7.5 e foi aprovado!
1 Cátia teve a nota 2.5 e foi reprovado!
2 Denis teve a nota 5.0 e foi reprovado!
3 Beto teve a nota 10.0 e foi aprovado!
4 Bruna teve a nota 8.2 e foi aprovado!
5 Dara teve a nota 7.0 e foi aprovado!
6 Carlos teve a nota 6.0 e foi reprovado!
7 Alice teve a nota 5.6 e foi reprovado!
Espero ter ajudado, qualquer dúvida é só falar!