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

【Pandas】DataFrameのカラムどうしの演算

こんにちは、JS2IIUです。

PandasのDataFrameでは、各カラム(列)に格納されたデータ同士で演算を行うことが簡単にできます。エクセルで列ベースの計算式を使っている場合は、この内容を把握することで簡単にPandasに置き換えできるようになると思います。今回もよろしくお願いします。

1. はじめに

データ分析では、異なるカラムのデータを組み合わせて新しい情報を作り出すことがよくあります。例えば:

この記事では、基本的な算術演算から複雑なカスタム計算まで、DataFrameのカラム同士の演算方法を解説します。

2. 基本的な演算方法

DataFrameのカラム同士の演算は、Pythonの基本的な演算子(+, -, *, / など)を用いて簡単に実現できます。

サンプルコード: カラムの加算

Python
import pandas as pd

# サンプルデータの作成
data = {
    'Price': [100, 200, 300],
    'Quantity': [2, 3, 4]
}
df = pd.DataFrame(data)

# カラム同士の加算
df['Total'] = df['Price'] * df['Quantity']
print(df)

出力:

Plaintext
   Price  Quantity  Total
0    100         2    200
1    200         3    600
2    300         4   1200

解説:

サンプルコード: カラムの除算

Python
# 除算の例
df['Unit_Price'] = df['Price'] / df['Quantity']
print(df)

出力:

Plaintext
   Price  Quantity  Total  Unit_Price
0    100         2    200       50.0
1    200         3    600       66.7
2    300         4   1200       75.0

解説:

3. 条件付き演算

特定の条件を満たす場合のみ演算を行いたいときは、条件式を用いることで柔軟な処理が可能です。

サンプルコード: 条件付きの計算

Python
# 条件に基づいた計算
df['Discounted_Total'] = df['Total'].where(df['Quantity'] > 3, df['Total'] * 0.9)
print(df)

出力:

Plaintext
   Price  Quantity  Total  Unit_Price  Discounted_Total
0    100         2    200       50.0             180.0
1    200         3    600       66.7             540.0
2    300         4   1200       75.0            1200.0

解説:

4. 複数カラムの演算

複数のカラムを同時に使用して計算することも可能です。

サンプルコード: 売上データの分析

Python
# 複数カラムを使用した計算
data = {
    'Sales': [1000, 1500, 2000],
    'Cost': [700, 1000, 1300]
}
df = pd.DataFrame(data)

# 利益を計算
df['Profit'] = df['Sales'] - df['Cost']
print(df)

出力:

Plaintext
   Sales  Cost  Profit
0   1000   700     300
1   1500  1000     500
2   2000  1300     700

解説:

5. カスタム関数を用いた演算

複雑な計算を行う場合は、applyメソッドを使用してカスタム関数を適用できます。

サンプルコード: カスタム計算

Python
# カスタム関数を用いた計算
def calculate_margin(row):
    return (row['Profit'] / row['Sales']) * 100

df['Profit_Margin'] = df.apply(calculate_margin, axis=1)
print(df)

出力:

Plaintext
   Sales  Cost  Profit  Profit_Margin
0   1000   700     300           30.0
1   1500  1000     500           33.3
2   2000  1300     700           35.0

解説:

6. 演算時の注意点

6.1 データ型の確認と変換

演算するカラムのデータ型が数値型であることを確認してください。文字列型の場合はto_numericで変換できます。

Python
# データ型の変換
df['Sales'] = pd.to_numeric(df['Sales'], errors='coerce')

6.2 欠損値の処理

NaNが含まれる場合の演算結果はNaNになります。欠損値を埋めることで問題を回避できます。

Python
# 欠損値の補完
df.fillna(0, inplace=True)

7. まとめ

この記事では、PandasのDataFrameにおけるカラム同士の演算方法を紹介しました。

これらを組み合わせることで、より高度なデータ処理が可能になります。ぜひ、実際のデータ分析で活用してみてください。

参考リンク

今回も少しだけPRです。

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

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

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

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