Pandas DataFrame のカラムを反復処理する
-
Pandas DataFrame のカラムを反復処理するには
getitem
([]
) 構文を使用する -
dataframe.iteritems()
を使って Pandas Dataframe のカラムを反復処理する -
enumerate()
を使用して列 Pandas を反復処理する
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 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