1
resposta

[Dúvida] AttributeError: module 'numpy' has no attribute 'float'.

Ontem, quando assisti à essa aula, consegui seguir todos os passos sem problemas. Contudo, hoje, quando fui executar o código novamente e seguir o módulo, todas as células do código que continham o seaborn me devolveram esse erro:

AttributeError: module 'numpy' has no attribute 'float'.
`np.float` was a deprecated alias for the builtin `float`. To avoid this error in existing code, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
    https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations

Em princípio achei que fosse mera questão de atualizar essa biblioteca. Atualizei o numpy, seaborn, matplotlib e o pandas, mas sem nenhum sucesso. Em alguns fóruns encontrei pessoas sugerindo o downgrade do numpy, por isso regredi para o 1.19.5, também sem sucesso. Outra solução sugerida foi deixar de usar o np.float e substituilo pelo np.float32, mas como esse comando não faz parte do código, não sei o que fazer.

Imagino que seja algum tipo de erro de compatibilidade entre o sns e o numpy. Como posso solucionar isso?

Essa é a mensagem de erro completa:

---------------------------------------------------------------------------
AttributeError                            Traceback (most recent call last)
Cell In[100], line 6
      3 ##print(contagem_lingua)
      4 ##plt.hist(contagem_lingua)
      5 plt.figure(figsize=(20,10))
----> 6 sns.barplot(x='língua original', y='total', data = contagem_lingua, palette='viridis')
      7 plt.xticks(fontsize=14)
      8 plt.yticks(fontsize=12)
File c:\Users\gabri\AppData\Local\Programs\Python\Python311\Lib\site-packages\seaborn\categorical.py:3146, in barplot(x, y, hue, data, order, hue_order, estimator, ci, n_boot, units, orient, color, palette, saturation, errcolor, errwidth, capsize, dodge, ax, **kwargs)
   3140 def barplot(x=None, y=None, hue=None, data=None, order=None, hue_order=None,
   3141             estimator=np.mean, ci=95, n_boot=1000, units=None,
   3142             orient=None, color=None, palette=None, saturation=.75,
   3143             errcolor=".26", errwidth=None, capsize=None, dodge=True,
   3144             ax=None, **kwargs):
-> 3146     plotter = _BarPlotter(x, y, hue, data, order, hue_order,
   3147                           estimator, ci, n_boot, units,
   3148                           orient, color, palette, saturation,
   3149                           errcolor, errwidth, capsize, dodge)
   3151     if ax is None:
   3152         ax = plt.gca()
File c:\Users\gabri\AppData\Local\Programs\Python\Python311\Lib\site-packages\seaborn\categorical.py:1606, in _BarPlotter.__init__(self, x, y, hue, data, order, hue_order, estimator, ci, n_boot, units, orient, color, palette, saturation, errcolor, errwidth, capsize, dodge)
   1601 def __init__(self, x, y, hue, data, order, hue_order,
...

AttributeError: module 'numpy' has no attribute 'float'.
`np.float` was a deprecated alias for the builtin `float`. To avoid this error in existing code, use `float` by itself. Doing this will not modify any behavior and is safe. If you specifically wanted the numpy scalar type, use `np.float64` here.
The aliases was originally deprecated in NumPy 1.20; for more details and guidance see the original release note at:
    https://numpy.org/devdocs/release/1.20.0-notes.html#deprecations
1 resposta

Oii, Gabriel. Como vai?

O erro que você está recebendo indica que o atributo float não está mais disponível, ele já é considerado obsoleto. Isso ocorreu porque a partir da versão 1.20.0, o Numpy descontinuou o uso do np.float e passou a recomendar o uso puramente do float ou do np.float64.

Contudo, na segunda mensagem de erro aparece que a linha com o erro em questão é a 6. No código estava apontando para ela, observe a chamada:

----> 6 sns.barplot(x='língua original', y='total', data = contagem_lingua, palette='viridis')

Você pode verificar se o seu código está recebendo os atributos escritos da mesma forma nas outras células? Pode também ter sido uma questão puramente de gramática.

Se a dúvida persistir, estamos aqui.

Abraços!

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