Boas Danival! Tudo bem? Espero que sim!
Realizei alguns testes reproduzindo ambos os códigos e cheguei a seguinte conclusão:
Os testes foram feitos no Google Collab, usando a função do próprio Colab time
, que faz a contagem do tempo que a célula demorou a ser excecutada.
Como cada vez que você faz login no Collab você aloca uma máquina diferente, os resultados podem ser diferentes, mas veja os meus resultados abaixo:
Usando o código descrito pelo professor:
time dataset.groupby(['Sexo']).std().loc['M']
Houve o retorno:
CPU times: user 3.87 ms, sys: 1.19 ms, total: 5.05 ms
Wall time: 6.53 ms
Idade 16.64532
Name: M, dtype: float64
Enquanto usando o seu código:
time dataset['Idade'].groupby(dataset['Sexo']=='M').std()
O retorno foi:
CPU times: user 1.62 ms, sys: 123 µs, total: 1.74 ms
Wall time: 1.99 ms
Sexo
False 11.898879
True 16.645320
Name: Idade, dtype: float64
O que significa que o seu código foi mais rápido, pois não teve que realizar as buscas, e fez a o std baseado em valores booleanos, que são processados de forma mais rápida que o loc, que traabalha com strings, nesse caso.
Esse processo de buscar a solução mais eficiente em tempo muitas vezes é chamada de "escovar os bits". De maneira geral, não é necessário se preocupar com isso, a não ser que:
- A quantidade de dados seja imensamente grande; ou
- O tempo de excecução seja crucial para o programa.
Espero ter ajudado!
Bons estudos!