6
respostas

ValueError: Could not interpret input

Olá, estava fazendo a plotagem do meu gráfico mas deu erro.

Antes eu fiz o seguinte: fiz a contagem e alterei o nome da coluna original_language para lingua_original dessa forma:

contagem_de_lingua = tmdb.original_language.value_counts().to_frame().reset_index()
contagem_de_lingua.columns = ["lingua_original", "total"]
contagem_de_lingua.head()

Depois fiz a plotagem com sns que funcionou normal:

sns.barplot(x = "lingua_original", y = "total", data = contagem_de_lingua)

Então ao plotar da forma mais simples sem a indicação de x e y, deu erro:

sns.catplot(x = "lingua_original", kind = "count", data = tmdb)


ValueError                                Traceback (most recent call last)
<ipython-input-58-fad800ee0eee> in <module>
----> 1 sns.catplot(x = "lingua_original", kind = "count", data = tmdb)

/opt/conda/lib/python3.6/site-packages/seaborn/categorical.py in catplot(x, y, hue, data, row, col, col_wrap, estimator, ci, n_boot, units, order, hue_order, row_order, col_order, kind, height, aspect, orient, color, palette, legend, legend_out, sharex, sharey, margin_titles, facet_kws, **kwargs)
   3714     # facets to ensure representation of all data in the final plot
   3715     p = _CategoricalPlotter()
-> 3716     p.establish_variables(x_, y_, hue, data, orient, order, hue_order)
   3717     order = p.group_names
   3718     hue_order = p.hue_names

/opt/conda/lib/python3.6/site-packages/seaborn/categorical.py in establish_variables(self, x, y, hue, data, orient, order, hue_order, units)
    153                 if isinstance(input, string_types):
    154                     err = "Could not interpret input '{}'".format(input)
--> 155                     raise ValueError(err)
    156 
    157             # Figure out the plotting orientation

ValueError: Could not interpret input 'lingua_original'

Ele diaz que não pode interpretar a coluna lingua_original, mas qualquer nome que eu dê acontece a mesma coisa... Como resolver?

6 respostas
print(tmdb.columns)

Veja que você esta mudando o nome no dataset "contagem_de_lingua".

contagem_de_lingua.columns = ["lingua_original", "total"]

E esta tentando usar o mesmo nome em outro dataset:

sns.catplot(x = "lingua_original", kind = "count", data = tmdb)

acredito que o correto seria:

sns.catplot(x = "original_language", kind = "count", data = tmdb)

Realmente funcionou. No entanto eu fiquei sem entender... Por que ao fazer barsplot funcinou para a coluna com o nome alterado e o catplot não? Ao fazer o barsplot:

sns.barplot(x = "lingua_original", y = "total", data = contagem_de_lingua)

funcinou normalmente, e ao fazer o catplot:

sns.catplot(x = "lingua_original", kind = "count", data = tmdb)

Ele não funciona, só funciona com o nome real da coluna, no caso original_language. Tentei renomear na mesma célula, mas também não funciona, só com o nome real mesmo... Queria entender o motivo disso.

Pelos comandos acima apenas o dataset "contagem_de_lingua" teve o nome da coluna atualizado.

Tente executar os comando abaixo:

tmdb.columns = ["budget","genres","homepage","id","keywords","lingua_original","original_title","overview","popularity","production_companies","production_countries","release_date","revenue","runtime","spoken_languages","status","tagline","title","vote_average","vote_count"]

print(tmdb.columns)

sns.catplot(x = "lingua_original", kind = "count", data = tmdb)

Deu certo também, mas é estranho que pro barplot ele plota mesmo atualizando só um nome ou alguns nomes das colunas e já o catplot não. Então sempre que for usar o catplot pra coluna que eu quero com nome que eu quero, eu tenho que fazer a atualizaçãoa pra todas as colunas? É porque conforme o vídeo, eu fiz a criação de uma nova tabela com a contagem de linguas em comum, e dessa contagem, dei título apenas para duas colunas que estava usando: lingua_original e total. E por fim usar o cat para plotar esses dados dessa nova tabela de contagem de línguas. Com o barplot foi tranquilo, já com catplot não, isso é estranho...

Fagner,

Acredito que se você olhar o dataset "contagem_de_lingua " terá apenas duas colunas.

No momento que você alterou o nome executando o código abaixo, você atualiza todo o dataset, pois ele possui apenas 2 colunas.

contagem_de_lingua.columns = ["lingua_original", "total"]

Bem eu nunca tentei atualizar apenas uma unica coluna do dataset para ver qual o resultado, mas realizarei esse teste. Mas toda documentação que já estudei apresenta a atualização de todas as colunas de uma unica vez, até para o pandas saber a ordem que esta sendo alterada.

Entendi Cleiton, todo caso é ficar antenado para a atualização do nome de colunas, até no vídeo ele nem faz essa atualização ao plotar, apenas usa o que já está na tabela, como eu alterei, deu nisso e cai nessa questão que você falou, todo caso agradeço a informação, um aprendizado a mais...