Python 3でPandas関数を用いて複数の新しい列を作成する方法
PandasはPythonでデータ操作を行うための強力なライブラリであり、特にデータフレームに対する柔軟な操作が可能です。本記事では、Pandasを使用して、既存の列に関数を適用し、複数の新しい列を作成する方法について説明します。これにより、データ分析や前処理の効率が向上します。
1. applyメソッドを用いた新しい列の作成
Pandasのapply
メソッドを使用することで、データフレームの各行または列に関数を適用し、その結果を新しい列として追加することができます。以下にその例を示します。
import pandas as pd # サンプルデータフレームの作成 data = {'A': [1, 2, 3], 'B': [4, 5, 6]} df = pd.DataFrame(data) # 複数の新しい列を作成する関数 def calculate(row): return pd.Series({'C': row['A'] + row['B'], 'D': row['A'] * row['B']}) # applyメソッドで関数を適用 df[['C', 'D']] = df.apply(calculate, axis=1) print(df)
このコードでは、各行に対して関数calculate
を適用し、新しい列C
とD
を生成しています。結果は次のようになります。
A B C D 0 1 4 5 4 1 2 5 7 10 2 3 6 9 18
2. np.vectorizeを使用した効率的な列の作成
NumPyのvectorize
を使用することで、関数をベクトル化し、Pandasデータフレームに効率的に適用することができます。以下にその例を示します。
import numpy as np # ベクトル化された関数の定義 def add_and_multiply(a, b): return a + b, a * b vectorized_function = np.vectorize(add_and_multiply) # 新しい列を追加 df['E'], df['F'] = vectorized_function(df['A'], df['B']) print(df)
この例では、関数add_and_multiply
をベクトル化し、列A
とB
に適用して、新しい列E
とF
を作成しています。結果は次の通りです。
A B C D E F 0 1 4 5 4 5 4 1 2 5 7 10 7 10 2 3 6 9 18 9 18
3. assignメソッドによる新しい列の追加
データフレームのassign
メソッドを使用することで、簡潔に新しい列を追加することができます。この方法は、計算がシンプルな場合に特に有効です。
# assignメソッドで新しい列を追加 df = df.assign(G=df['A'] + df['B'], H=df['A'] * df['B']) print(df)
ここでは、assign
メソッドを用いて列G
とH
を追加しています。出力は次のようになります。
A B C D E F G H 0 1 4 5 4 5 4 5 4 1 2 5 7 10 7 10 7 10 2 3 6 9 18 9 18 9 18
まとめ
PythonのPandasライブラリを使用して、既存の列に関数を適用し、複数の新しい列を作成する方法を紹介しました。apply
メソッド、NumPyのvectorize
、およびassign
メソッドを活用することで、さまざまなデータ処理が可能となります。これらの手法を使いこなすことで、データ分析の効率を大幅に向上させることができます。
Python 3でpandasを使用して、複数の新しい列を作成する方法は、apply関数を使用することです。apply関数を使用すると、各行または列に関数を適用して新しい列を作成できます。
例えば、以下のようにapply関数を使用して、2つの新しい列を作成することができます。
“`python
import pandas as pd# サンプルデータフレームを作成
data = {‘A’: [1, 2, 3, 4],
‘B’: [5, 6, 7, 8]}
df = pd.DataFrame(data)# apply関数を使用して新しい列を作成
df[‘C’] = df[‘A’].apply(lambda x: x * 2) # A列の値を2倍してC列を作成
df[‘D’] = df[‘B’].apply(lambda x: x ** 2) # B列の値を2乗してD列を作成print(df)
“`このようにして、apply関数を使用して列に関数を適用し、複数の新しい列を作成することができます。