1
resposta

[Dúvida] Como retornar na mesma visualização da solução do desafio

Abaixo segue a minha resolução.

def identifica_outliers(col_name: str, data: pd.DataFrame) -> pd.Series:
    """Mostra quais dados são outliers, em uma coluna em um dataframe especificado"""

    Q1 = data[col_name].quantile(q=.25)
    Q3 = data[col_name].quantile(q=.75)
    IQR = Q3 - Q1
    upper_bound = Q3 + 1.5 * IQR
    lower_bound = Q1 - 1.5 * IQR

    outliers_mask: pd.Series = (data[col_name] > upper_bound) | (data[col_name] < lower_bound)
    outliers = data.loc[outliers_mask, col_name]

    return outliers

Como faço para que, o retorno seja a visualização em tabela como mostrado no desafio? Na forma como consegui fazer vejo apenas os registros:

5 913
16 805
28 800
Name: Valor da transação, dtype: int64

Ao fazer da forma como estava no desafio, eu estaria criando apenas uma visualização ou ao utilizar a função com outras manipulações eu alteraria o df original?

1 resposta

Olá João! Tudo joia?

Para que o retorno da sua função identifica_outliers seja uma visualização em tabela, semelhante ao que você viu no desafio, você pode modificar a função para retornar um DataFrame em vez de apenas uma Série.

Isso permitirá que você visualize os outliers juntamente com outras informações do DataFrame original, como o "ID da transação" e o "Local da transação". Aqui está uma sugestão de como você pode fazer isso:

def identifica_outliers(col_name: str, data: pd.DataFrame) -> pd.DataFrame:
    """Mostra quais dados são outliers, em uma coluna em um dataframe especificado"""

    Q1 = data[col_name].quantile(q=.25)
    Q3 = data[col_name].quantile(q=.75)
    IQR = Q3 - Q1
    upper_bound = Q3 + 1.5 * IQR
    lower_bound = Q1 - 1.5 * IQR

    outliers_mask: pd.Series = (data[col_name] > upper_bound) | (data[col_name] < lower_bound)
    outliers_df = data.loc[outliers_mask]

    return outliers_df

Com essa modificação, ao chamar a função identifica_outliers, você receberá um DataFrame que contém todas as colunas do DataFrame original, mas apenas as linhas que são consideradas outliers. Isso proporciona uma visualização mais completa e útil.

Quanto à sua dúvida sobre se isso alteraria o DataFrame original, não se preocupe. A função está apenas retornando uma nova visualização dos dados, sem modificar o DataFrame original.

Espero ter ajudado e bons estudos!

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