Combinando DataFrames

Testing phase Atividades: This section is currently being validated and may change.

Para unirmos DataFrames podemos usar o concat, join,merge,append

FunçãoUne linhasUne colunasObservação
concatsimsimMais versátil. Utilizando os parâmetros (axis=0) para unir linhas e (axis=1) para unir colunas
joinnãosimUne preferencialmente pelo índice.
mergenãosimBaseado em chaves (estilo SQL), usando on ou left_on/right_on
appendsimnãoMétodo df.append foi descontinuado no Pandas. Para DataFrames, use pd.concat. O append continua existindo apenas como método nativo para listas do Python

Concat - Estrutura geral

variavel = pd.concat([df_01,df_02])

Concat - Parâmetros

ParâmetroOpçõesExplicação
ignore_indexTrue ou False
axis0 ou 1use 0 para unir linhas e 1 para unir colunas
keys
sortTrue ou Falseordena em ordem alfabética as colunas do DataFrame
sort_valuesdf.sort_values("coluna")ordenação por coluna específica
customizar_ordenaçãodf[lista_de_colunas]customiza a ordem das colunas
variavel = pd.concat([df_01,df_02],ignore_index=True)

Operações de Conjunto

OperaçãoMétodo
uniãoconcat() + drop_duplicates()
intersecçãomerge()
diferençaisin() + indexação booleana
mesmo conteúdoequals()

União concat()

A união combina todos os elementos de dois conjuntos. No Pandas, fazemos isso em dois passos:

df_união=pd.concat([dataframe_01,dataframe_02], ignore_index=True)
df_união.drop_duplicates()

ignore_index=True evita que os índices originais se repitam, criando uma nova sequência

pd.concat Empilha os DF um em cima do outro.

drop_duplicates Remove as linhas repetidas após a junção, garantindo que cada registro seja único.

Intersecção

Retorna os elementos presentes em ambos os DF combinados.
O método usado é o merge(), que une as chaves comuns, utilizando de parâmetros como on, left_on e right_on, que identificam as colunas que servirão de ligaçãp entre os dados.

df_intersecção=dataframe_01.merge(dataframe_02)
df_intersecção.drop_duplicates()

Diferença

A diferença busca elementos que existem em um conjunto, mas não no outro.

O método utilizado é o .isin(), ele compara os itens que estão em cada DF com a função
== False, criando uma máscara que seleciona apenas os “exclusivos” do segundo DataFrame.

dataframe_02[dataframe_02.paises.isin(dataframe_01.paises)==False]

Igualdade

O método equals() serve para verificar se dois objetos do pandas possuem exatamente o mesmo conteúdo, a mesma estrutura e os mesmos tipos de dados. Diferente de uma comparação comum de igualdade que retorna uma tabela de valores booleanos, o equals retorna um único resultado verdadeiro ou falso para o objeto inteiro.

dataframe_01.equals(dataframe_03)

Junção de Dados (Merge e Join) Para cruzar informações de tabelas diferentes, o Pandas utiliza principalmente o método merge, que realiza uniões de estilo banco de dados (SQL) baseadas em colunas específicas, chamadas de chaves. Enquanto o join é otimizado para unir tabelas pelos seus índices, o merge é a ferramenta mais flexível para alinhar dados através de colunas com nomes iguais (on) ou diferentes (left_on e right_on).
A lógica da junção é definida pelo parâmetro how, que determina quais dados serão preservados no resultado final:
Junção Interna (how=‘inner’): É a intersecção dos dados. O DataFrame resultante conterá apenas as linhas cujas chaves de ligação existam em ambos os DataFrames originais.
Junção Esquerda (how=‘left’): Define o primeiro DataFrame como a base principal. O resultado preserva todos os registros da esquerda, adicionando os dados da direita apenas onde houver correspondência. Se não houver par à direita, os campos serão preenchidos com valores nulos (NaN).
Junção Direita (how=‘right’): Funciona de forma inversa à esquerda, tratando o segundo DataFrame como a base principal e preservando todos os seus registros, independentemente de haver correspondência no primeiro.
Junção Externa (how=‘outer’): Representa a união total. O resultado mantém todos os registros de ambos os DataFrames. Onde houver correspondência, os dados são unidos; onde não houver, os espaços vazios de ambos os lados são preenchidos com nulos.

Tipo de JunçãoO que permanece no DataFrame final?
InnerApenas o que é comum aos dois lados (Intersecção).
LeftTudo da esquerda + o que combinar da direita.
RightTudo da direita + o que combinar da esquerda.
OuterTudo de ambos os lados (União).

Garantindo a qualidade

Com o ‘verify_integrity, parâmetro de segurnaça exclusivo do pd.concat(), é possível verificar se existe índices duplicados, definindo este parâmetro como True. E se o sistema detectar que duas linhas possuem o mesmo índice, ele interrompe a operação e exibe um erro.

Operadores de comparação

OperadorSignificado
==igual a
!=diferente
>maior do que
>=maior ou igual a
<menor do que
&lt;=menor ou igual a

Operadores lógicos

OperadorSignificadoUso no Pandas
&AND: Retorna True se todas as condições forem verdadeiras(condicao1) & (condicao2)
|OR: Retorna True se ao menos uma das condições for verdadeira(condicao1) - (condicao2)
~NOT: Inverte o resultado (True vira False e vice-versa)~df[‘coluna’].isna()