Boa noite, conforme pedido no exercício, cheguei a mesma conclusão com uma forma um pouco diferente:
dados = alunos.groupby('Sexo')
for i, j in dados:
  print('Sexo {} a média é {}'.format(i, round(j['Notas'].mean(), 2)))
Boa noite, conforme pedido no exercício, cheguei a mesma conclusão com uma forma um pouco diferente:
dados = alunos.groupby('Sexo')
for i, j in dados:
  print('Sexo {} a média é {}'.format(i, round(j['Notas'].mean(), 2)))
Oii Danival, como você está?
Existem várias formas de resolução e fico feliz que você tenha encontrado uma diferente da que foi proposta e obrigada por compartilhar essa forma conosco. Não há problemas quanto a resolver de forma diferente, o único ponto de atenção, é que o exercício pede para criarmos um novo dataFrame com as médias e partindo da forma como você fez, uma maneira de fazermos isso é salvarmos o resultado em uma lista de dicionários e após isso, passarmos o valor para o dataFrame. Veja como fica em código:
dados = alunos.groupby('Sexo')
valores = []
for i, j in dados:
  valores.append({
      "Sexo": i,
      "Nota Média": round(j['Notas'].mean(), 2)
  })
df = pd.DataFrame(valores)Resultado:
 
 
E caso queira utilizar o Sexo como índice do dataframe, basta utilizarmos a função set_index, como mostro abaixo:
df = pd.DataFrame(valores)
df.set_index("Sexo", inplace=True)Resultado:
 
  
Qualquer dúvida fico à disposição.
Grande abraço!