Pandas DataFrame のカラムを反復処理する

Manav Narula 2023年1月30日
  1. Pandas DataFrame のカラムを反復処理するには getitem ([]) 構文を使用する
  2. dataframe.iteritems() を使って Pandas Dataframe のカラムを反復処理する
  3. enumerate() を使用して列 Pandas を反復処理する
Pandas DataFrame のカラムを反復処理する

DataFrame は非常に大きく、何百もの行や列を含むことができます。DataFrame のカラムを繰り返し処理し、回帰やその他多くの操作を個別に行う必要があります。

DataFrame の列を繰り返し処理するには、for ループを使用することができます。for ループの基本的な構文を以下に示します。

for value in sequence:
    # Body of Loop

例えば、getitem 構文([])、dataframe.iteritems() 関数、enumerate() 関数、DataFrame のインデックスを利用するなど、複数のメソッドを使って DataFrame 上で for ループを実行することができます。

Pandas DataFrame のカラムを反復処理するには getitem ([]) 構文を使用する

カラムラベルを使用して、getitem 構文([])を使用して DataFrame 上で for ループを実行することができます。例えば、以下のようになります。

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)

出力:

    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]

関数 values() を使ってオブジェクトの要素をリストとして抽出します。

dataframe.iteritems() を使って Pandas Dataframe のカラムを反復処理する

Pandas は dataframe.iteritems() 関数を提供しています。これは DataFrame を反復処理し、列名とその内容を系列として返します。

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)

出力:

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

enumerate() を使用して列 Pandas を反復処理する

DataFrame を使った enumerate() はインデックスとカラムラベルを返します。

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)

出力:

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

上記のいずれかのメソッドを使用して、DataFrame を反復処理することが非常に効率的にできます。また、列に対して個別に回帰などの操作を実行することもできます。例えば、以下の例に示すように、最後の列を独立変数として設定し、他の列を従属変数として OLS 回帰を実行することができます。

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)

出力:

          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
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

関連記事 - Pandas DataFrame