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

Uso da função .groupby()

Consegui entender o código na parte de selecionar as médias e as casa decimais, mas não compreendi o uso da função .groupby()

3 respostas
solução!

Oii Lucas, tudo bem contigo?

O groupby vai agrupar os dados para permitir que você execute operações para cada grupo criado. Esse método divide os dados com base na coluna e/ou condição desejada em grupos e aplica a função desejada nesse grupo, combinando o resultado em uma única saída.

Esse método pode envolver uma ou mais das seguintes etapas:

  • Dividir os dados em grupos com base em alguns critérios;
  • Aplicar uma função a cada grupo de forma independente;
  • Combinar os resultados em uma estrutura de dados, geralmente em um DataFrame ou em uma Series.

Destes, a etapa de divisão é a mais direta. Na verdade, em muitas situações, podemos dividir o conjunto de dados em grupos e fazer algo com esses grupos. Na etapa de aplicação, podemos utilizar diferentes recursos:

  • Funções de agregação como soma (sum) ou contagem (count), funções estatísticas como média (mean) ou desvio padrão (std) e funções personalizadas.
  • Funções de transformação: executar alguns cálculos específicos do grupo e retornar uma “lista” de valores. Por exemplo, para preencher Nan's (valores nulos) dentro de um valor específico para cada grupo.
  • Funções de filtrar: selecionar alguns grupos específicos e descartar alguns grupos. Por exemplo, filtrar os outliers com base na soma ou média do grupo.

No caso do exercício em questão nosso intuito é calcular as notas médias dos alunos segundo seu sexo. Para conseguir fazer esse cálculo primeiramente precisamos agrupar todas as colunas do nosso DataFrame de acordo com o sexo, e para isso utilizamos o groupby:

sexo = alunos.groupby('Sexo')

Feito isso, nós podemos aplicar a função mean a esse conjunto de dados agrupados para obtermos a média de cada uma das colunas de acordo com o sexo:

sexo.mean().round(2)

Resultado:

SexoIdadeNotasAprovado
F31.255.820.5
M30.57.120.5

No entanto, o exercício pede apenas um DataFrame com as notas médias de cada aluno segundo seu sexo, e para fazer isso podemos selecionar a coluna "Notas" especificamente, calcular a média e passar para a função que cria um DataFrame, conforme a alternativa correta mostra:

sexo = alunos.groupby('Sexo')
sexo = pd.DataFrame(sexo['Notas'].mean().round(2))
sexo.columns = ['Notas Médias']
sexo

Caso queira saber mais sobre o groupby, nesse link você encontra um guia de usuário do pandas (em inglês) com vários exemplos detalhados utilizando o groupby e aplicando diferentes funções. E nesse artigo (também está em inglês) é apresentado outros exemplos utilizando essa função e também aplicando algumas funções de agregação.

Caso queira acessar a documentação do groupby, basta clicar aqui

Espero que isso te ajude. Agrupamentos também serão abordados nas próximas aulas :)

Qualquer dúvida me avisa.

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

Desculpe, mensagem enviada errada.

Lucas pelo que entendi o GROUP BY: Por exemplo executando: dados['Valor']. mean() o resultado vai ser a média geral de todos os imóveis, agora agrupando por bairro e então aplicando a média: dados. groupby('Bairro')['Valor']. mean() o resultado vai ser as médias do valor para cada bairro.

Espero ter te ajudado.