Como Iterar Sobre Linhas em um DataFrame do Pandas

Ana Maria Gomes
4 minutos de leitura

Conteúdos do tutorial

Ao trabalhar com dados em Python, o Pandas é uma biblioteca essencial que fornece estruturas de dados de alto nível e uma ampla variedade de ferramentas para análise de dados. Uma tarefa comum que você pode encontrar é iterar sobre as linhas de um DataFrame do Pandas. Neste artigo, exploraremos como fazer isso de forma eficaz e também discutiremos algumas considerações importantes a ter em mente.

Iterando Sobre Linhas com iterrows()

Uma das maneiras mais diretas de iterar sobre as linhas de um DataFrame do Pandas é usar o método iterrows(). Esse método retorna um iterador que gera o índice e os dados da linha para cada linha. Veja como você pode usá-lo:

import pandas as pd

# DataFrame de Exemplo
df = pd.DataFrame({'c1': [10, 11, 12], 'c2': [100, 110, 120]})

# Usando iterrows para iterar sobre as linhas do DataFrame
for index, row in df.iterrows():
    print(row['c1'], row['c2'])
Testar

Considerações ao Usar iterrows()

Embora iterrows() seja fácil de usar, é importante notar que pode ser lento, especialmente com DataFrames grandes. Isso ocorre porque iterrows() retorna uma Series para cada linha, o que não preserva os dtypes entre as linhas. Se você precisa preservar os dtypes ou requer melhor desempenho, considere usar itertuples() em vez disso.

Usando itertuples() para Melhor Desempenho

O método itertuples() retorna um iterador que gera namedtuples com os dados da linha. Este método geralmente é mais rápido do que iterrows() e é uma escolha melhor quando o desempenho é uma preocupação. Aqui está um exemplo:

# Usando itertuples para iterar sobre as linhas do DataFrame
for row in df.itertuples(index=True, name='Pandas'):
    print(row.c1, row.c2)

Assim como com iterrows(), você obterá a mesma saída, mas com um desempenho potencialmente melhor.

Quando Não Iterar

Antes de decidir iterar sobre as linhas do DataFrame, vale a pena considerar se você precisa iterar. O Pandas é projetado para trabalhar com operações vetorizadas, que geralmente são mais eficientes do que operações linha a linha. Aqui estão algumas alternativas a considerar:

  • Vetorização: Use os métodos integrados do Pandas ou funções do NumPy para realizar operações em colunas inteiras ou DataFrames de uma só vez.
  • Método apply(): Se você tem uma função que não pode ser vetorizada, apply() pode ser usado para aplicar uma função ao longo de um eixo do DataFrame.
  • Cython ou Numba: Se você precisa de alto desempenho, considere usar Cython ou Numba para escrever funções otimizadas que podem ser aplicadas a DataFrames.

Resumo

Neste artigo, cobrimos como iterar sobre as linhas de um DataFrame do Pandas usando iterrows() e itertuples(). Também discutimos a importância de considerar alternativas à iteração para melhor desempenho e eficiência. Lembre-se, embora a iteração possa ser útil em certas situações, sempre procure por soluções vetorizadas primeiro para aproveitar ao máximo as capacidades do Pandas.

Inscreva-se gratuitamente e fique atualizado

Receba toda semana um resumo dos principais conteúdos da Asimov direto no seu e-mail. 100% livre de spam.

Áreas de interesse: