Solucionado (ver solução)
Solucionado
(ver solução)
2
respostas

[Projeto] Calcular máximo e minimo e apresentar

Olá Preciso identificar o perfil de comunicação de usuário pelo valor que inseriram.

De forma que eu identifique o maior valor e sua respectiva correspondência, como no caso abaixo:

Nome da Avaliação     |	Enunciado da Questão |	Resposta 
Situação Normal	        |  Afetivo		                       | 29
Situação Normal	        | Pragmático		              | 38
Situação Normal      	| Racional		                     | 33
Situação Normal     	| Reflexivo		                     | 25
Situação de Estresse  | Afetivo		                         | 25
Situação de Estresse  |	Pragmático		                | 32
Situação de Estresse  |	Racional		                   | 42
Situação de Estresse  |	Reflexivo		                   | 27

Onde eu preciso identificar os maiores valores da "Situação Normal" e de "Estresse" e apresentar qual seria o respectivo Enunciado. Nesse caso, 38 e 42. Serie Pragmático e Racional.

O volume de dados é grande, sendo que esse apresentado é para apenas 1 pessoa. Teria como fazer de forma automática para apresentar:

Nome | Enunciado em Situação Normal | Enunciado em Situação de Estresse.

Agradeço desde ja!!!

2 respostas
solução!

Boa noite, Felipe! Tudo bem com você?

Você não citou onde quer tratar esses dados, se é via Python, Power BI, Excel, dentre outros. Mas, considerando que seja Python, é possível tratar esses dados e identificar de forma automática sim. Exemplo de código:

import pandas as pd

def identificar_maiores_valores(df):
    resultado = []
    nomes = df['Nome'].unique()
    
    for nome in nomes:
        df_pessoa = df[df['Nome'] == nome]
        
        max_normal = df_pessoa[df_pessoa['Nome da Avaliação'] == 'Situação Normal'].nlargest(1, 'Resposta')
        max_estresse = df_pessoa[df_pessoa['Nome da Avaliação'] == 'Situação de Estresse'].nlargest(1, 'Resposta')
        
        enunciado_normal = max_normal['Enunciado da Questão'].values[0]
        resposta_normal = max_normal['Resposta'].values[0]
        
        enunciado_estresse = max_estresse['Enunciado da Questão'].values[0]
        resposta_estresse = max_estresse['Resposta'].values[0]
        
        resultado.append({
            'Nome': nome,
            'Enunciado em Situação Normal': enunciado_normal,
            'Valor em Situação Normal': resposta_normal,
            'Enunciado em Situação de Estresse': enunciado_estresse,
            'Valor em Situação de Estresse': resposta_estresse
        })
        
    return pd.DataFrame(resultado)

data = {
    'Nome da Avaliação': ['Situação Normal', 'Situação Normal', 'Situação Normal', 'Situação Normal', 
                          'Situação de Estresse', 'Situação de Estresse', 'Situação de Estresse', 'Situação de Estresse'],
    'Enunciado da Questão': ['Afetivo', 'Pragmático', 'Racional', 'Reflexivo', 
                             'Afetivo', 'Pragmático', 'Racional', 'Reflexivo'],
    'Resposta': [29, 38, 33, 25, 25, 32, 42, 27],
    'Nome': ['Usuário1', 'Usuário1', 'Usuário1', 'Usuário1', 
             'Usuário1', 'Usuário1', 'Usuário1', 'Usuário1']
}

df = pd.DataFrame(data)
result_df = identificar_maiores_valores(df)
result_df

Este código faz o seguinte:

  1. Filtra os dados para cada usuário específico.
  2. Para cada usuário: Filtra os dados para "Situação Normal" e encontra o maior valor e o respectivo. O mesmo para "Situação de Estresse".
  3. Compila os resultados em um novo dataframe.
  4. Exibe os resultados com o enunciado e o valor correspondente para cada situação e cada usuário.

Resultado:

Resultado da execução do código pandas que foi deixado acima Agora, se você estiver querendo obter esse resultado no Power BI, você terá de criar medidas para identificar o maior valor e o respectivo enunciado para "Situação Normal" e "Situação de Estresse". Exemplo:

MaxValorNormal = 
CALCULATE(
    MAX(Tabela[Resposta]),
    Tabela[Nome da Avaliação] = "Situação Normal"
)

Espero ter ajudado. Conte com o apoio do Fórum na sua jornada. Fico à disposição. Abraços e bons estudos!

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

Deu certo, muito obrigado!!