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

Erro ao importar matplotlib.plyplot

Boa tarde, Eu estava seguindo o conteudo do curso através do Jupyter e apartir do momento que escrevi a linha de codigo

import matplotlib.pyplot as plt

o Jupyter parou de dar out, e na linha de entrada aparece um asterisco: Entrada [*]:

Parece que o notebook parou de funcionar e rodar o codigo, não sei porque. Qualquer outra linha que escrevo fica o mesmo * e não da Out

3 respostas

Uma atualização, andei pesquisando na internet e o problema ta relacionado mesmo à biblioteca matplotlib.pyplot, e o erro se da porque ela esta demasiadamente devagar para gerar o grafico através do codigo:

plt.hist(media_filme)

A soluções proposta no foruns é de mudar a configuração de onde o grafico é plotado através de umas das seguintes opções:

%matplotlib inline
%matplotlib notebook
%matplotlib tk  

inline como imagem dentro do notebook, notebook como grafico interativo e tk como imagem fora do notebook.

Infelizmente nenhuma das opções aumentou a velocidade de plotagem.

Eu também notei que ao rodar o codigo com um numero de rows menor o grafico é gerado:

plt.hist(media_filme.head())

Por alguma razão, a biblioteca plt esta extremamente lenta ao gerar o grafico, e por isso não consegue plotar para o DataFrame media_filme. Alguma luz?

Descobri o que estava dando erro! Eu havia transformado a variavel media_filme em um DataFrame através de

media_filme = notas.groupby("filmeID").mean()[['nota']]

Enquanto o professor havia escrito a linha de codigo

media_filme = notas.groupby("filmeID").mean()['nota']

Então quando fui passar para a função

plt.hist(media_filme)

Não passei uma Series, mas sim um DataFrame. Por isso não rodava nunca. Quando mudei para Series o grafico foi gerado automaticamente.

Isso me gerou a seguinte duvida: porque o pyplot.hist bugou ao passar um DataFrame mas funcionou perfeitamente ao passar Series, enquanto as outras formas de se gerar graficos funcionaram perfeitamente usando DataFrame:

media_filme.plot(kind='hist') 
sns.distplot(media_filme, bins=10)

Alguem saberia responder?

solução!

Olá Ricardo,

Isso aconteceu porque quando é passado um DataFrame e não um Series o plt.hist vai gerar um histograma diferente para cada linha do DataFrame. Assim você não está gerando apenas um histograma, e sim milhares de histogramas dentro do mesmo gráfico.

Você pode ver que é gerado um histograma para cada linha voltando para o seu teste com plt.hist(medias_por_filme.head()) nesse gráfico você pode ver os 5 diferentes histogramas separados por cor.

Espero ter ajudado, qualquer dúvida é só falar!