Como Iterar Sobre Linhas em um DataFrame do Pandas

Avatar de Juliano Faccioni Juliano Faccioni
3 minutos de leitura 5 meses atrás

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

Isso produzirá a saída:

10 100
11 110
12 120

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:

import pandas as pd

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

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

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.

Curso Gratuito

Curso gratuito de Python

Do zero ao primeiro projeto em apenas 2 horas

Criar conta gratuita

Comentários

Comentar
Você tem o Acesso Básico.
Libere seu acesso ao suporte dos professores Garanta seu acesso PRO para tirar todas suas dúvidas com nossa equipe.
Seja PRO