4
respostas

Como fazer para ordenar as médias dos filmes pelo valor da média

Como fazer para ordenar as médias dos filmes pelo valor da média (e não por filmeId).

O código abaixo apresenta as médias por filme, ordenando por filmeId:

medias_por_filme = notas.groupby("filmeId").mean()["nota"]
medias_por_filme.head()

Como fazer para ordenar da maior média para a menor?

E se for possível, como fazer isto apresentando o gênero do filme ao lado da média?

4 respostas

Olá Dênis,

Para ordenar os dados de medias_por_filme você pode utilizar a função sort_values com o parámetro ascending igual a False:

medias_por_filme.sort_values(ascending=False)

Já para mostrar o gênero junto da nota média pode ser feito assim:

# Separa os gêneros em uma variável utilizando o filmeId como index
generos = filmes.set_index('filmeId')["generos"]

# Faz a união das médias com os gêneros
media_generos = pd.concat([medias_por_filme, generos], axis=1)

# Por fim ordena os valores pela média
media_generos.sort_values(by="nota", ascending=False, inplace=True)

Seria isso mesmo? Qualquer dúvida ou se eu tiver entendido errado a pergunta é só falar!

Oi, Lucas.

Muito obrigado pela sua resposta. A ordenação das médias deu certo.

Eu não expliquei muito bem parte do que eu pedi neste post do fórum.

Eu gostaria de ver a média das notas por filme ordenados pela média (que foi o que você resolveu na primeira parte da sua resposta). Gostaria que no final mostrasse uma tabela com a médias das notas do filme, nome do filme e o gênero na mesma linha.

Não sei se é possível porque essa solução une informações dos dois arquivos csv.

Lucas,

Se não for possível fazer o que eu perguntei, como faço para exportar o resultado da linha abaixo em um arquivo csv?

medias_por_filme.sort_values(ascending=False)

Olá Denis, é possível sim juntar em um único DataFrame essas informações, mesmo vindo de arquivos diferentes.

Perceba que em medias_por_filme o index (índice) é o filmeId, assim se configurarmos o DataFrame filmes para também utilizar o filmeId como índice podemos fazer a união facilmente:

# Cria uma cópia de filmes
filmes_media = filmes.copy()

# Define a coluna filmeId como o index
filmes_media.set_index('filmeId', inplace=True)

# Adiciona a coluna com as médias
filmes_media['nota_media'] = medias_por_filme

# Agora já temos uma lista com o filme e a sua nota média
# A partir daqui você pode reordenar como quiser
filmes_media

O pandas já faz a união baseada no índice, então o filme com o filmeId igual a 1 vai receber a média onde o filmeId é igual a 1 em medias_por_filme

Resultado:


E só para completar, você pode sim salvar o seu DataFrame atual em um novo arquivo csv, é só fazer:

filmes_media.to_csv('nome_do_arquivo.csv')

Seguindo os cursos de Data Science você vai encontrar mais informações sobre essas operações e muitas outras.