Como eu faria para não aparecer essa mensagem, tentei buscar uma forma mas sempre quebrava o código.
Você está vendo a versão anterior da nova experiência da Alura que estamos preparando para você. Em breve, ela ganha uma identidade visual novinha totalmente pensada em potencializar seus estudos!
Como eu faria para não aparecer essa mensagem, tentei buscar uma forma mas sempre quebrava o código.
Oi William, tudo bem?
Esse aviso que você viu é um FutureWarning do pandas. Ele acontece porque quando usamos funções como quantile() e median() em um DataFrame, o retorno é uma Series, e o matplotlib precisa converter para float. Essa conversão automática vai deixar de existir em versões futuras, por isso o aviso aparece.
Para resolver e evitar o warning, basta acessar diretamente a coluna desejada, garantindo que o retorno seja um número (escalar). Podemos trocar as linhas das anotações por algo assim:
ax.annotate("1º Quartil / 25%", xy=(0.4, vol_amaciante["Volume"].quantile(.25)), ...)
ax.annotate("2º Quartil / Mediana", xy=(0.4, vol_amaciante["Volume"].median()), ...)
ax.annotate("3º Quartil / 75%", xy=(0.4, vol_amaciante["Volume"].quantile(.75)), ...)
Abaixo deixo o código completo:
## Configurando o gráfico com parâmetros que potencializam a visualização dos dados
# Importando as bibliotecas
import matplotlib.pyplot as plt
from matplotlib.patches import Ellipse
import seaborn as sns
# Área do gráfico e tema da visualização
fig, ax = plt.subplots(figsize=(6,8))
sns.set_theme(style="white")
# Gerando o boxplot
ax = sns.boxplot(data = vol_amaciante, y = "Volume", orient = "v", color = AZUL2)
## Personalizando o gráfico
plt.suptitle('Boxplot do volume do amaciante', size=18, color=CINZA1, ha = 'right', x = 0.81, y = 0.97)
plt.title('para uma amostra de 1000 unidades', fontsize=14, color=CINZA2, pad = 15, loc = "left")
ax.set_xlabel('')
ax.set_ylabel('Volume (ml)', fontsize = 14)
ax.yaxis.set_tick_params(labelsize=12, labelcolor = CINZA2)
sns.despine(bottom=True)
# Gerando outros elementos visuais (elipses dos outliers)
y_min, y_max = ax.get_ybound()
outlier_sup = Ellipse((0, y_max - 0.27), width = 0.1, height = 0.46, color=VERMELHO1, fill=False)
outlier_inf = Ellipse((0, y_min + 0.4), width = 0.1, height = 0.6, color=VERMELHO1, fill=False)
ax.add_patch(outlier_sup)
ax.add_patch(outlier_inf)
# Adicionando a explicação dos elementos de um boxplot
ax.annotate("Outliers", xy=(0 + 0.05, y_max - 0.27), xycoords='data',
bbox=dict(boxstyle="round", fc=CINZA5, ec=VERMELHO1),
xytext=(50, 0), textcoords='offset points',
arrowprops=dict(arrowstyle="->", color=VERMELHO1))
ax.annotate("Outliers", xy=(0 + 0.05, y_min + 0.4), xycoords='data',
bbox=dict(boxstyle="round", fc=CINZA5, ec=VERMELHO1),
xytext=(50, 0), textcoords='offset points',
arrowprops=dict(arrowstyle="->", color=VERMELHO1))
ax.annotate("1º Quartil / 25%", xy=(0.4, vol_amaciante["Volume"].quantile(.25)), xycoords='data',
bbox=dict(boxstyle="round", fc=CINZA5, ec=CINZA3),
xytext=(50, 0), textcoords='offset points',
arrowprops=dict(arrowstyle="->", color=CINZA3))
ax.annotate("2º Quartil / Mediana", xy=(0.4, vol_amaciante["Volume"].median()), xycoords='data',
bbox=dict(boxstyle="round", fc=CINZA5, ec=CINZA3),
xytext=(50, 0), textcoords='offset points',
arrowprops=dict(arrowstyle="->", color=CINZA3))
ax.annotate("3º Quartil / 75%", xy=(0.4, vol_amaciante["Volume"].quantile(.75)), xycoords='data',
bbox=dict(boxstyle="round", fc=CINZA5, ec=CINZA3),
xytext=(50, 0), textcoords='offset points',
arrowprops=dict(arrowstyle="->", color=CINZA3))
plt.show()
Assim, o warning desaparece e o código continua funcionando normalmente em versões futuras do pandas.
Espero ter ajudado.
Qualquer dúvida que surgir, compartilhe no fórum. Abraços e bons estudos!