Tempo de leitura:
Neste artigo vou mostrar-te como podes utilizar NumPy em Python para comparar 2 intervalos, algo que habitualmente realizas com funções de Excel como CORRESP [MATCH] ou mesmo com a função PROCV [VLOOKUP].
Em Excel muitas vezes usamos estas funções nomeadamente a função CORRESP [MATCH] para verificar se um valor existe num intervalo, esta é uma das principais, se não a principal função ou objetivo da função.
A biblioteca NumPy de Python é indicada para trabalhar com Arrays (intervalos) e realizar operações que envolvem intervalos, e contem funções específicas que permitem realizar este tipo de operações com mais detalhe, e que vais poder verificar neste artigo, não só para comparar valores mas também para realizar outras operações como Somas ou mesmo obter valores exclusivos.
A boa notícia é que podes fazer tudo no Excel!
Começar com a função CORRESP [Match]
Vamos começar com uma analogia e usar a função CORRESP [MATCH] para verificar se um valor de um intervalo existe em outro intervalo.
Confirmar se valores do intervalo A existem no intervalo B:
=CORRESP(B3:B13;C3:C13;0)
Confirmar se valores do intervalo B existem no intervalo A:
=CORRESP(C3:C13;B3:B13;0)
Para fazer esta verificação devemos naturalmente inverter os intervalos para analisar sobre o ponto de vista do valor que estamos a localizar. A função CORRESP, naturalmente devolve um número que representa a posição do valor, ou erro, no caso de o valor não existir.

Adicionalmente se pretendermos um resultado diferente devemos usar outras funções como a função SE [IF] para mostrar os dados sem o erro ou sem o número da posição do valor.
Conhecer o NumPy e algumas funcionalidades
Se usares NumPy de Python vais conseguir realizar este tipo de operação com algumas vantagens.
Vamos começar por perceber a lógica:
- Existem 2 intervalos, e estes intervalos podem ser guardados em 2 variáveis, de forma semelhante a dar um nome a um intervalo de células.
Para todas as expressões em Pyhton inicias a célula com =PY + Tecla TAB.
Para compilar o código deves usar CTRL + ENTER
E se pretenderes visualizar os dados em Excel podes usar os atalhos CTRL + ALT + SHIFT + M

O resultado visível é apenas um objeto de Python ndarray, o qual vai ser aqui usado apenas como o “contentor” das 2 variáveis (a e b) que representam respetivamente cada um dos intervalos.
Operação 1: Valores Exclusivos
Vamos começar com uma primeira operação, que substitui a função EXCLUSIVOS [UNIQUE] do Excel… mais tarde voltamos ao exemplo do CORRESP [MATCH].
Podemos obter os valores exclusivos do intervalo “a” que representa o intervalo A (no Excel):
np.unique(a)

Ou o resultado de valores exclusivos do intervalo b.
np.unique(b)

Operação 2: União dos 2 intervalos
No próximo exemplo vamos utilizar uma função que devolve um Array correspondente à união dos 2 intervalos, contendo apenas valores exclusivos de cada um deles.
A função é np.union1d onde apenas devemos indicar os argumentos correspondentes a cada um dos intervalos.
np.union1d(a,b)

Operação 3: Que elementos são comuns a ambos os Arrays?
Neste exemplo vamos determinar que elementos são comuns em ambos os Arrays. A função utilizada é np.intersect1d com a indicação dos intervalos.
np.intersect1d(a,b)
O resultado mostra o resultado apenas com os elementos (itens) comuns em ambos os Arrays. Por outras palavras uma lista exclusiva dos valores que estão presentes em ambos os intervalos.

Operação 4: Quais os elementos do Array “a” que não existem em “b”
Neste exemplo vamos obter agora uma lista dos elementos do intervalo A que não existem no intervalo B. Voltamos à analogia com a função CORRESP [MATCH], onde estamos a comparar os valores que mostram o erro #N/D [#N/A].
A função é np.setdiff1d com a respetiva indicação dos intervalos. Podes inverter a ordem dos intervalos.
np.setdiff1d(a,b)
Nos exemplos
- Do ponto de vista do intervalo A vamos obter um intervalo com os valores 6 e 0.
- Do ponto de vista do intervalo B vamos obter um intervalo com os valores 5 e 8.

Operação 5: Quais os elementos que não existem em ambos os conjuntos
Nesta operação vamos obter um intervalo com os valores que não existem em ambos os conjuntos em simultâneo. Mas existem no intervalo A ou no intervalo B.
A função utilizada é np.setxor1d com a respetiva indicação dos intervalos.
np.setxor1d(a,b)
Em resumo é a junção de ambos os intervalos do exemplo anterior.

Operação 6: Verificar se cada elemento de A existe em B (com resultados Booleanos).
Esta operação é a parte em que vamos voltar ao primeiro exemplo da função CORRESP [MATCH] em que verificamos se um valor do intervalo A existe em B. Se bem ter recordas do início do artigo, a função CORRESP devolve um número ou um erro.
- Resultado Numérico: O valor existe e indica a posição
- Resultado Erro (#N/D): O valor não existe.
E como referido se pretenderes outro tipo de resultado deves usar a função SE [IF] ou outras funções de verificação do Excel como É.NUM [ISNUMBER] ou É.ERRO [ISERROR] para poderes trabalhar com os valores Booleanos.
Em NumPy tens a tarefa facilitada com a função np.isin com a respetiva indicação dos intervalos. Nota: Se inverteres a ordem dos intervalos analisas sobre o ponto de vista diferente.
np.isin(a,b)

Próximo artigo:
Artigo Anterior:
Artigos por Categoria
Artigos por Categoria
- Microsoft Excel (45)
- Power Apps (16)
- Power Automate (3)
- Power BI (11)
- Power Query (14)
- Python (3)
- VBA (7)

Leave a Reply