#Importando programas que vou utilizar
import pandas as pd
import numpy as np
# criando um DataFrame com 30 transações aleatórias
df = pd.DataFrame({
'ID da transação': range(1, 31),
'Valor da transação': [100, 200, 150, 500, 300, 913, 250, 400, 200, 150,
200, 200, 400, 300, 150, 301, 805, 300, 400, 250,
150, 100, 500, 600, 200, 350, 100, 250, 800, 250],
'Data da transação': pd.date_range(start='2022-01-01', end='2022-01-30', freq='D'),
'Local da transação': ['São Paulo, Brasil', 'Rio de Janeiro, Brasil', 'Belo Horizonte, Brasil', 'São Paulo, Brasil',
'São Paulo, Brasil', 'Nova Iorque, EUA', 'São Paulo, Brasil', 'São Paulo, Brasil', 'São Paulo, Brasil',
'Rio de Janeiro, Brasil', 'São Paulo, Brasil', 'São Paulo, Brasil', 'São Paulo, Brasil', 'São Paulo, Brasil',
'São Paulo, Brasil', 'São Paulo, Brasil', 'Los Angeles, EUA', 'São Paulo, Brasil', 'São Paulo, Brasil', 'São Paulo, Brasil',
'São Paulo, Brasil', 'São Paulo, Brasil', 'São Paulo, Brasil', 'São Paulo, Brasil', 'São Paulo, Brasil', 'São Paulo, Brasil',
'São Paulo, Brasil', 'São Paulo, Brasil', 'Miami, EUA', 'São Paulo, Brasil']
})
#Visualizando dados
df
import seaborn as sns
#Visualizando valores fora do padrao
sns.boxplot(x=df['Valor da transação'])
#Dados para analise com boxplot
Q1 = df['Valor da transação'].quantile(0.25)
Q3 = df['Valor da transação'].quantile(0.75)
IQR = Q3 - Q1
limite_inferior = Q1 - 1.5 * IQR
limite_superior = Q3 + 1.5 * IQR
#Criando um filtro
outliers_index = (df['Valor da transação'] < limite_inferior) | (df['Valor da transação'] > limite_superior)
#As transações fora do comum foram
df[outliers_index]
#Printando
fora_padrao = df['Valor da transação'].nlargest(3).values
print(f'Os valores fora do padrão foram: R${fora_padrao[0]:,.2f}, R${fora_padrao[1]:,.2f}, R${fora_padrao[2]:,.2f}')