Domine o Pandas: Concatenação de DataFrames com exemplos práticos!


Exemplos Práticos de Concatenação com Pandas

A manipulação de dados com Pandas frequentemente requer a união de diferentes DataFrames. A função concat() se destaca como uma ferramenta versátil, oferecendo diversas maneiras de combinar conjuntos de dados, adaptando-se a diferentes cenários de junção.

Introdução ao Concatenar DataFrames

Pandas, a biblioteca de referência em Python para análise de dados, proporciona funcionalidades robustas para trabalhar com dados estruturados em formato tabular. A função concat(), em particular, é essencial para agrupar DataFrames, o que facilita a comparação, integração e análise de informações provenientes de fontes distintas.

A função concat() oferece uma variedade de parâmetros que permitem personalizar o processo de concatenação, incluindo:

  • axis: Determina o eixo ao longo do qual os DataFrames serão unidos. O valor padrão é 0, o que leva à concatenação das linhas (empilhamento).
  • join: Define o tipo de junção a ser realizada, como 'inner', 'outer', 'left' ou 'right', cada um com comportamento específico.
  • ignore_index: Quando definido como True, redefine os índices do DataFrame resultante, ignorando os índices dos DataFrames originais.

Concatenação Vertical de DataFrames (Linhas)

Para agrupar DataFrames verticalmente, use axis=0 como parâmetro da função concat(), conforme demonstrado no exemplo:

      import pandas as pd
      
      df1 = pd.DataFrame({'Coluna 1': [1, 2, 3], 'Coluna 2': ['a', 'b', 'c']})
      df2 = pd.DataFrame({'Coluna 1': [4, 5, 6], 'Coluna 2': ['d', 'e', 'f']})
      
      df_vertical = pd.concat([df1, df2], axis=0)
      print(df_vertical)
    

Resultado:

       Coluna 1 Coluna 2
    0         1        a
    1         2        b
    2         3        c
    0         4        d
    1         5        e
    2         6        f
    

Concatenação Horizontal de DataFrames (Colunas)

Para concatenar DataFrames lado a lado, utilize axis=1 como parâmetro da função concat().

      df3 = pd.DataFrame({'Coluna 3': [7, 8, 9]})
    
      df_horizontal = pd.concat([df1, df3], axis=1)
      print(df_horizontal)
    

Resultado:

        Coluna 1 Coluna 2  Coluna 3
    0         1        a         7
    1         2        b         8
    2         3        c         9
    

Concatenação com Diferentes Tipos de Junções

O parâmetro join permite especificar a forma como as linhas de diferentes DataFrames serão combinadas. Seguem exemplos de junções:

Junção Interna (inner): Retém apenas as linhas que possuem correspondência em todos os DataFrames.

      df_inner = pd.concat([df1, df3], axis=1, join='inner')
      print(df_inner)
    

Resultado:

        Coluna 1 Coluna 2  Coluna 3
    0         1        a         7
    1         2        b         8
    2         3        c         9
    

Junção Externa (outer): Retém todas as linhas de todos os DataFrames, preenchendo com NaN os valores ausentes.

      df_outer = pd.concat([df1, df3], axis=1, join='outer')
      print(df_outer)
    

Resultado:

        Coluna 1 Coluna 2  Coluna 3
    0         1        a         7
    1         2        b         8
    2         3        c         9
    

Junção à Esquerda (left): Mantém todas as linhas do DataFrame da esquerda e as linhas do DataFrame da direita que correspondem.

      df_left = pd.concat([df1, df3], axis=1, join='left')
      print(df_left)
    

Resultado:

        Coluna 1 Coluna 2  Coluna 3
    0         1        a         7
    1         2        b         8
    2         3        c         9
    

Junção à Direita (right): Mantém todas as linhas do DataFrame da direita e as linhas do DataFrame da esquerda que correspondem.

      df_right = pd.concat([df1, df3], axis=1, join='right')
      print(df_right)
    

Resultado:

        Coluna 1 Coluna 2  Coluna 3
    0         1        a         7
    1         2        b         8
    2         3        c         9
    

Conclusão

A função concat() do Pandas é uma ferramenta essencial para unir DataFrames, permitindo flexibilidade na integração e análise de dados provenientes de diferentes fontes. Através da compreensão de seus parâmetros e das diversas opções de junção, é possível personalizar a concatenação de acordo com as necessidades específicas de manipulação de dados.

Perguntas Frequentes (FAQs)

  • Qual a diferença entre concatenação vertical e horizontal?
    A concatenação vertical empilha DataFrames um sobre o outro (ao longo do eixo 0), enquanto a horizontal os une lado a lado (ao longo do eixo 1).
  • Como ignorar os índices originais ao concatenar DataFrames?
    Basta definir o parâmetro ignore_index como True na função concat().
  • É possível concatenar DataFrames com tipos de dados distintos?
    Sim, é possível. O DataFrame resultante terá o tipo de dados mais geral presente nos DataFrames originais.
  • Como tratar valores ausentes na concatenação de DataFrames?
    Utilize o parâmetro join combinado com opções como dropna para remover linhas ou colunas que contenham valores ausentes.
  • Como renomear colunas ao concatenar DataFrames?
    O parâmetro keys de concat() permite especificar os nomes das novas colunas resultantes.
  • Como concatenar múltiplos DataFrames em um loop?
    Use pd.concat() dentro de um loop for para percorrer a lista de DataFrames.
  • Posso concatenar DataFrames com base em uma coluna específica?
    Sim, utilize o parâmetro on na função concat() para indicar a coluna de junção.
  • Qual a diferença entre concat() e append() no Pandas?
    Enquanto concat() combina diversos DataFrames, append() adiciona linhas de um DataFrame em outro.