サイトアイコン アマチュア無線局JS2IIU

【Pandas】カラムへの効率的な関数適用方法

こんにちは、JS2IIUです。

Pandas の apply メソッドは、データフレームの列や行に関数を適用する際に便利です。しかし、データ量が増えるとパフォーマンスが問題になることがあります。この記事では、apply メソッドを使わずに、カラムに対して関数を適用して効率的に計算する方法を解説します。

サンプルプログラム

Python
import pandas as pd

# 偏差値計算用の関数
def calc_hensachi(series):
    mean = series.mean()
    std = series.std()
    return (series - mean) / std * 10 + 50

# データの読み込み
url = 'https://raw.githubusercontent.com/JS2IIU-MH/Pandas_sampledata/refs/heads/main/data/exam_results.csv'
df = pd.read_csv(url)

# インデックス設定
df.set_index('Name', inplace=True)

# 偏差値の計算
for col in df.columns:
    df[f'hensachi_{col}'] = calc_hensachi(df[col])

print(df)

各部分の詳細解説

1. データの読み込みとインデックスの設定

Python
url = 'https://raw.githubusercontent.com/JS2IIU-MH/Pandas_sampledata/refs/heads/main/data/exam_results.csv'
df = pd.read_csv(url)
df.set_index('Name', inplace=True)
Pandas_sampledata/data/exam_results.csv at main · JS2IIU-MH/Pandas_sampledata
Sample data for Pandas demo programs. Contribute to JS2IIU-MH/Pandas_sampledata development by creating an account on GitHub.

2. 偏差値計算用関数の効率化

Python
def calc_hensachi(series):
    mean = series.mean()
    std = series.std()
    return (series - mean) / std * 10 + 50

3. 偏差値の計算ループ

Python
for col in df.columns:
    df[f'hensachi_{col}'] = calc_hensachi(df[col])

4. 出力結果

修正後のコードで生成されるデータフレームの例は以下の通りです。

効率化のメリット

使いどころと注意点

参考リンク

Pandas の公式ドキュメント

関連記事

今回も少しだけPRです。

Pandasについて詳しく知りたいかた、もっと使いこなしたい方におすすめの本です。数年前に購入しましたが、今も手元に置いて時々見返しています。

「pandasクックブック Pythonによるデータ処理のレシピ」Theodore Petrou著、黒川利明訳。

最後まで読んでいただきありがとうございます。73

モバイルバージョンを終了