Iterar pelas colunas de um DataFrame Pandas

Manav Narula 30 janeiro 2023
  1. Utilizar a sintaxe getitem ([]) para Iterate Over Columns in Pandas DataFrame
  2. Use dataframe.iteritems() para iterar sobre colunas no Dataframe Pandas
  3. Utilize enumerate() para Iterar sobre as Colunas Pandas
Iterar pelas colunas de um DataFrame Pandas

Os DataFrames podem ser muito grandes e podem conter centenas de filas e colunas. É necessário iterar sobre colunas de um DataFrame e realizar operações em colunas individualmente como regressão e muitas mais.

Podemos utilizar o for loop para iterar sobre colunas de uma DataFrame. A sintaxe básica do laço for é dada abaixo:

for value in sequence:
    # Body of Loop

Podemos utilizar vários métodos para executar o laço for sobre um DataFrame, por exemplo, a sintaxe getitem (o []), a função dataframe.iteritems(), a função enumerate() e utilizando o índice de um DataFrame.

Utilizar a sintaxe getitem ([]) para Iterate Over Columns in Pandas DataFrame

Podemos utilizar rótulos de coluna para executar o laço for sobre a DataFrame utilizando a sintaxe getitem([]). Por exemplo:

import pandas as pd

df = pd.DataFrame(
    [[10, 6, 7, 8], [1, 9, 12, 14], [5, 8, 10, 6]], columns=["a", "b", "c", "d"]
)

print(df)
print("------------------")
for column in df:
    print(df[column].values)

Resultado:

    a  b   c   d
0  10  6   7   8
1   1  9  12  14
2   5  8  10   6
------------------
[10  1  5]
[6 9 8]
[ 7 12 10]
[ 8 14  6]

A função values() é utilizada para extrair os elementos do objecto como uma lista.

Use dataframe.iteritems() para iterar sobre colunas no Dataframe Pandas

Pandas fornece a função dataframe.iteritems(), que ajuda a iterar sobre um DataFrame e devolve o nome da coluna e o seu conteúdo como série.

import pandas as pd

df = pd.DataFrame(
    [[10, 6, 7, 8], [1, 9, 12, 14], [5, 8, 10, 6]], columns=["a", "b", "c", "d"]
)

for (colname, colval) in df.iteritems():
    print(colname, colval.values)

Resultado:

a [10  1  5]
b [6 9 8]
c [ 7 12 10]
d [ 8 14  6]

Utilize enumerate() para Iterar sobre as Colunas Pandas

O enumerate() com DataFrame devolve o índice e o rótulo de coluna, o que nos permite iterar sobre ele.

import pandas as pd

df = pd.DataFrame(
    [[10, 6, 7, 8], [1, 9, 12, 14], [5, 8, 10, 6]], columns=["a", "b", "c", "d"]
)

for (index, colname) in enumerate(df):
    print(index, df[colname].values)

Resultado:

0 [10  1  5]
1 [6 9 8]
2 [ 7 12 10]
3 [ 8 14  6]

Podemos utilizar de forma muito eficiente qualquer um dos métodos acima referidos para iterar sobre o DataFrame. Também podemos executar operações como regressões sobre colunas individualmente. Por exemplo, podemos definir a última coluna como a variável independente e executar regressões OLS com outras colunas como variáveis dependentes, como se mostra no exemplo abaixo:

import pandas as pd
import statsmodels.api as sm
import numpy as np

df = pd.DataFrame(
    [[10, 6, 7, 8], [1, 9, 12, 14], [5, 8, 10, 6]], columns=["a", "b", "c", "d"]
)

for column in df:
    Y = df["d"]
    X = df[column]
    X = sm.add_constant(X)
    model = sm.OLS(X, Y)
    results = model.fit()
    print(results.params)

Resultado:

          0         1
d  0.094595  0.418919
          0     1
d  0.094595  0.75
          0         1
d  0.094595  0.959459
          0    1
d  0.094595  1.0
Manav Narula avatar Manav Narula avatar

Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.

LinkedIn

Artigo relacionado - Pandas DataFrame