1
resposta

Usei o mesmo código da aula e o resultado foi diferente

código:

import matplotlib.pyplot as plt
import seaborn as sns

def dist_idade_sexo():
    # Configurações do gráfico
    plt.figure(figsize=(10, 6), facecolor=CINZA_1)
    ax = plt.axes()
    ax.set_facecolor(CINZA_1)

    # Plotar o boxplot da distribuição da idade por sexo biológico
    sns.boxplot(data=df, x='sexo_biologico', y='idade', palette=[AZUL_1, AQUA_1], ax=ax)

    # Adicionar rótulos e título
    plt.title('Distribuição da Idade por Sexo Biológico dos(as) clientes', fontsize=18, color=CINZA_5)
    plt.xlabel('')
    plt.ylabel('Idade', fontsize=12, color=AZUL_1)
    plt.xticks(fontsize=12, color=AZUL_1)
    plt.yticks(fontsize=12, color=AZUL_1)
    ax.spines[['top', 'right', 'left', 'bottom']].set_visible(False)
    ax.set_axisbelow(True)
    ax.yaxis.grid(color='gray', linestyle='--', linewidth=0.5)

    # Adicionar caixas de anotação
    texto_anotacao1 = f"Mínimo = {df.groupby('sexo_biologico')['idade'].min()[1]}\n" \
                    f"1º quartil = {df.groupby('sexo_biologico')['idade'].quantile(.25)[1]}\n" \
                    f"2º quartil = {df.groupby('sexo_biologico')['idade'].median()[1]}\n" \
                    f"3º quartil = {df.groupby('sexo_biologico')['idade'].quantile(.75)[1]}\n" \
                    f"Máximo = {df.groupby('sexo_biologico')['idade'].max()[1]}"

    texto_anotacao2 = f"Mínimo = {df.groupby('sexo_biologico')['idade'].min()[0]}\n" \
                    f"1º quartil = {df.groupby('sexo_biologico')['idade'].quantile(.25)[0]}\n" \
                    f"2º quartil = {df.groupby('sexo_biologico')['idade'].median()[0]}\n" \
                    f"3º quartil = {df.groupby('sexo_biologico')['idade'].quantile(.75)[0]}\n" \
                    f"Máximo = {df.groupby('sexo_biologico')['idade'].max()[0]}"

    ax.annotate(texto_anotacao1, xy=(-0.1, 45), xytext=(-0.4, 50), fontsize=12, color=AZUL_1,
                bbox=dict(boxstyle="round,pad=0.3", edgecolor=CINZA_3, facecolor=BRANCO),
                arrowprops=dict(facecolor=AZUL_1, arrowstyle="->", connectionstyle="arc3,rad=0.3"))

    ax.annotate(texto_anotacao2, xy=(0.9, 45), xytext=(0.6, 50), fontsize=12, color=AZUL_1,
                bbox=dict(boxstyle="round,pad=0.3", edgecolor=CINZA_3, facecolor=BRANCO),
                arrowprops=dict(facecolor=AZUL_1, arrowstyle="->", connectionstyle="arc3,rad=0.3"))
    
    return plt

resultado:

<ipython-input-88-1073385323>:11: FutureWarning: 
APARECEU UM TEXTO ANTES DO GRÁFICO QUANDO EXECUTEI E AS CORES DIFERENTES
1 resposta

Olá, estudante. Tudo bem?

Esses textos que aparecem são apenas avisos de atualização, não precisa se preocupar com eles. Mas caso queira corrigir, um solicita a adição dos parâmetros hue e legend:

    sns.boxplot(
        data=df,
        x='sexo_biologico',
        y='idade',
        hue='sexo_biologico',
        palette=[AZUL_1, AQUA_1],
        legend=False,
        ax=ax
    )

O segundo é um aviso do pandas que solicita que use .iloc[posição] para acessar por posição, ou .loc[rótulo] se quiser acessar por valor do índice. Você pode corrigir da seguinte forma:

grupo_idade = df.groupby('sexo_biologico')['idade']

texto_anotacao1 = f"Mínimo = {grupo_idade.min().iloc[1]}\n" \
                   f"1º quartil = {grupo_idade.quantile(0.25).iloc[1]}\n" \
                   f"2º quartil = {grupo_idade.median().iloc[1]}\n" \
                   f"3º quartil = {grupo_idade.quantile(0.75).iloc[1]}\n" \
                   f"Máximo = {grupo_idade.max().iloc[1]}"

texto_anotacao2 = f"Mínimo = {grupo_idade.min().iloc[0]}\n" \
                   f"1º quartil = {grupo_idade.quantile(0.25).iloc[0]}\n" \
                   f"2º quartil = {grupo_idade.median().iloc[0]}\n" \
                   f"3º quartil = {grupo_idade.quantile(0.75).iloc[0]}\n" \
                   f"Máximo = {grupo_idade.max().iloc[0]}"

Espero ter ajudado!

Siga firme nos seus estudos e conte com o fórum sempre que precisar.

Abraços :)

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