Como concatenar dois Pandas DataFrames: Explicado!
Published on
Pandas é uma das ferramentas open-source mais populares para Ciência de Dados. Ele fornece estruturas de DataFrame que oferecem desempenho de alto nível para manipulação, limpeza, análise e visualização de dados tabulares. Em Pandas, é comum ter que mesclar dois ou mais DataFrames para alcançar algum tipo de análise nos dados. Podemos fazer isso combinando os DataFrames verticalmente ou horizontalmente. Aqui, ilustramos e discutimos ambos os métodos em detalhes.
Quer criar rapidamente visualizações de dados a partir de um Pandas Dataframe em Python sem código?
PyGWalker é uma biblioteca Python para Análise Exploratória de Dados com Visualização. PyGWalker (opens in a new tab) pode simplificar o fluxo de trabalho de análise e visualização de dados do seu notebook Jupyter, transformando seu dataframe pandas (e dataframe polar) em uma Interface do Usuário no estilo Tableau para exploração visual.
Concatenando dois DataFrames verticalmente
Em Pandas, dois DataFrames podem ser concatenados usando o método concat()
. Para demonstrar isso, vamos começar criando dois exemplos de DataFrames. No primeiro DataFrame de exemplo, digamos que temos informações sobre alguns funcionários em uma empresa:
import pandas as pd
# Criando DataFrame 1
df1 = pd.DataFrame({
'Nome': ['John', 'Jack', 'Steve', 'Sarah'],
'Idade': [24, 32, 19, 29],
'Gênero': ['M', 'M', 'M', 'F']
})
Isso criará um DataFrame que se parece com isso:
Nome Idade Gênero
0 John 24 M
1 Jack 32 M
2 Steve 19 M
3 Sarah 29 F
Digamos que temos outro DataFrame que contém informações sobre os departamentos da empresa:
# Criando DataFrame 2
df2 = pd.DataFrame({
'Departamento': ['Marketing', 'Vendas', 'Recursos Humanos'],
'Funcionários': [15, 12, 10],
})
Isso criará um DataFrame que se parece com isso:
Departamento Funcionários
0 Marketing 15
1 Vendas 12
2 Recursos Humanos 10
Agora, podemos usar o método concat()
para combinar os dois DataFrames verticalmente:
# Concatenando verticalmente
df3 = pd.concat([df1, df2], axis=0)
Aqui, o parâmetro axis=0
denota que queremos concatenar os DataFrames empilhando-os um em cima do outro (ou seja, verticalmente). Após a concatenação, obtemos a seguinte saída:
Nome Idade Gênero Departamento Funcionários
0 John 24 M NaN NaN
1 Jack 32 M NaN NaN
2 Steve 19 M NaN NaN
3 Sarah 29 F NaN NaN
0 NaN NaN NaN Marketing 15
1 NaN NaN NaN Vendas 12
2 NaN NaN NaN Recursos Humanos 10
Podemos ver que os dois DataFrames são concatenados conforme desejado, mas há alguns valores NaN
(nulos) no novo DataFrame onde os nomes das colunas não correspondem. Podemos descartar essas linhas se elas não se encaixarem em nossa análise de dados, ou podemos fornecer alguns valores padrão para preencher os valores nulos.
Concatenando dois DataFrames horizontalmente
Também podemos concatenar dois DataFrames horizontalmente (ou seja, combiná-los lado a lado) usando o método concat()
, como este:
# Concatenando horizontalmente
df4 = pd.concat([df1, df2], axis=1)
Aqui, o parâmetro axis=1
denota que queremos concatenar os DataFrames colocando-os lado a lado (ou seja, horizontalmente). Depois de conConcatenando DataFrames com Pandas
Pandas é uma das bibliotecas de análise de dados mais populares em Python, usada por inúmeros cientistas de dados e analistas de dados em todo o mundo. A concatenação de DataFrames é uma das principais operações na manipulação de dados com Pandas. É uma técnica simples, mas muito importante para unir diferentes fontes de dados em um único DataFrame. Este guia fornecerá uma visão geral de como concatenar Pandas DataFrames vertical e horizontalmente.
Concatenando DataFrames Verticalmente
Ao concatenar DataFrames verticalmente, os índices de ambos os DataFrames são mantidos e as colunas são adicionadas uma sobre a outra. Considere os seguintes dois DataFrames:
# Creating DataFrame 1
df1 = pd.DataFrame({
'Name': ['John', 'Jack', 'Steve', 'Sarah'],
'Age': [24, 32, 19, 29],
'Gender': ['M', 'M', 'M', 'F']
})
# Creating DataFrame 2
df2 = pd.DataFrame({
'Department': ['Marketing', 'Sales', 'Human Resources'],
'Employees': [15, 12, 10]
})
Isso criará dois Pandas DataFrames, df1
e df2
, que se parecem com isto:
Name Age Gender
0 John 24 M
1 Jack 32 M
2 Steve 19 M
3 Sarah 29 F
Department Employees
0 Marketing 15
1 Sales 12
2 Human Resources 10
Para concatenar esses DataFrames verticalmente, podemos usar o método concat()
de Pandas:
# Concatenate df1 and df2 vertically
df3 = pd.concat([df1, df2], axis=0)
Ao especificar o parâmetro axis
como 0
, estamos concatenando os DataFrames verticalmente. Depois de concatenar, obtemos a seguinte saída:
Name Age Gender Department Employees
0 John 24 M NaN NaN
1 Jack 32 M NaN NaN
2 Steve 19 M NaN NaN
3 Sarah 29 F NaN NaN
0 NaN NaN NaN Marketing 15
1 NaN NaN NaN Sales 12
2 NaN NaN NaN Human Resources 10
Observe que a concatenação criou um novo DataFrame df3
com a concatenação de índices e a adição de colunas de ambos os DataFrames originais. As colunas que não existem em um dos DataFrames foram preenchidas com valores NaN
. Se quisermos eliminar essas linhas em branco, podemos usar o método dropna()
:
# Drop the rows with null values
df3 = df3.dropna()
A saída após eliminar as linhas em branco será semelhante a isto:
Name Age Gender Department Employees
0 John 24 M Marketing 15.0
1 Jack 32 M Sales 12.0
2 Steve 19 M Human Resources 10.0
Observe que agora temos um novo DataFrame df3
que contém os dados concatenados dos DataFrames df1
e df2
sem nenhum valor NaN
em branco.
Concatenando DataFrames Horizontalmente
Ao concatenar DataFrames horizontalmente, as colunas de ambos os DataFrames são mantidas e as linhas são adicionadas uma abaixo da outra. Considere os seguintes dois DataFrames:
# Creating DataFrame 1
df1 = pd.DataFrame({
'Name': ['John', 'Jack', 'Steve', 'Sarah'],
'Age': [24, 32, 19, 29],
'Gender': ['M', 'M', 'M', 'F']
})
# Creating DataFrame 2
df4 = pd.DataFrame({
'Department': ['Marketing', 'Sales'],
'Employees': [15, 12]
})
Isso criará dois Pandas DataFrames, df1
e df4
, que se parecem com isto:
Name Age Gender
0 John 24 M
1 Jack 32 M
2 Steve 19 M
3 Sarah 29 F
Department Employees
0 Marketing 15
1 Sales 12
Para concatenar os dois DataFrames horizontalmente, podemos usar o método concat()
de Pandas, especificando o parâmetro axis
como 1
:
# Concatenate df1 and df4 horizontally
df5 = pd.concat([df1, df4], axis=1)
Após a concatenação, obtemos a seguinte saída:
Name Age Gender Department Employees
0 John 24 M Marketing 15
1 Jack 32 M Sales 12
2 Steve 19 M NaN NaN
3 Sarah 29 F NaN NaN
Podemos ver que os dois DataFrames são concatenados horizontalmente conforme desejado. No entanto, temos alguns valores NaN
(nulos) no novo DataFrame onde os nomes das linhas não correspondem. Novamente, podemos descartar essas linhas se elas não se encaixarem na nossa análise de dados, ou podemos fornecer alguns valores padrão para preencher os valores nulos.
Concatenando DataFrames com Colunas Diferentes
O que acontece se os dois DataFrames a serem concatenados tiverem colunas diferentes? Nesses casos, Pandas identificará os nomes das colunas que não correspondem e os adicionará ao novo DataFrame como colunas separadas. Vamos ilustrar isso com um exemplo:
# Creating DataFrame with different columns
df5 = pd.DataFrame({
'Employee Name': ['John', 'Jack', 'Steve', 'Sarah'],
'Employee Age': [24, 32, 19, 29],
'Job Title': ['Manager', 'Assistant', 'Clerk', 'Executive']
})
Isso criará um DataFrame que se parece com isso:
Employee Name Employee Age Job Title
0 John 24 Manager
1 Jack 32 Assistant
2 Steve 19 Clerk
3 Sarah 29 Executive
Agora podemos concatenar df1
e df5
:
# Concatenate df1 and df5
df6 = pd.concat([df1, df5], axis=1)
Após a concatenação, obtemos a seguinte saída:
Name Age Gender Employee Name Employee Age Job Title
0 John 24 M John 24 Manager
1 Jack 32 M Jack 32 Assistant
2 Steve 19 M Steve 19 Clerk
3 Sarah 29 F Sarah 29 Executive
Como podemos ver, o Pandas concatena os dois DataFrames adicionando as colunas que não correspondem como colunas separadas no novo DataFrame.
Ignorando o Índice ao Concatenar DataFrames Horizontalmente
Ao concatenar dois DataFrames horizontalmente, o novo DataFrame mantém os índices originais dos dois DataFrames. Isso pode causar problemas ao trabalhar com este novo DataFrame. Assim, pode ser necessário em alguns casos ignorar o índice ao concatenar horizontalmente. Podemos fazer isso definindo o parâmetro ignore_index
como True
ao concatenar:
# Concatenate df1 and df2, ignoring the index
df7 = pd.concat([df1, df2], axis=1, ignore_index=True)
Após a concatenação, obtemos a seguinte saída:
0 1 2 3 4
0 John 24 M Marketing 15
1 Jack 32 M Sales 12
2 Steve 19 M Human Resources 10
3 Sarah 29 F NaN NaN
Agora o novo DataFrame tem um novo índice, que é mais conveniente para análise de dados adicionais.
Conclusão
A concatenação de Pandas DataFrames vertical ou horizontalmente nos fornece uma maneira eficiente de unir dados para análise. Com este guia, cobrimos os conceitos básicos da concatenação usando o método concat()
. Com prática e mais conhecimento de DataFrames do Pandas, você será capaz de pegar grandes quantidades de dados e transformá-los em insights. Se você estiver interessado em aprender mais sobre Pandas, confira