Python
 Computer >> コンピューター >  >> プログラミング >> Python

Python Pandasのeval()関数で行の合計を評価・計算する方法

eval()関数で行の合計を求める

Pandasのeval()関数は、文字列で記述した数式をDataFrameに対して直接評価できる便利な機能です。これを利用すると、指定した複数の列の値を足し合わせた行ごとの合計を、新しい列として簡単に追加できます。

まずは、商品の在庫データを含むDataFrameを作成しましょう。

dataFrame = pd.DataFrame({"Product": ["SmartTV", "ChromeCast", "Speaker", "Earphone"],
                          "Opening_Stock": [300, 700, 1200, 1500],
                          "Closing_Stock": [200, 500, 1000, 900]})

続いて、eval()を使って合計を求めます。ポイントは、結果を格納する新しい列名(ここでは「Result_Sum」)も式の中で指定することです。式には、その列に代入される合計計算の公式がそのまま記述されます。

dataFrame = dataFrame.eval('Result_Sum = Opening_Stock + Closing_Stock')

この1行だけで、「Opening_Stock」と「Closing_Stock」の各行の値を加算した結果が、「Result_Sum」という新しい列としてDataFrameに自動的に追加されます。

サンプルコード(完全版)

以下が、最初から最後までの一連のコードです。

import pandas as pd

dataFrame = pd.DataFrame({"Product": ["SmartTV", "ChromeCast", "Speaker", "Earphone"],
                          "Opening_Stock": [300, 700, 1200, 1500],
                          "Closing_Stock": [200, 500, 1000, 900]})

print("DataFrame...\n", dataFrame)

# eval()を使って行の合計を求める
# 結果を格納する新しい列名もeval()の中で指定する
# 式には合計を計算する公式がそのまま記述されている
dataFrame = dataFrame.eval('Result_Sum = Opening_Stock + Closing_Stock')
print("\nSumming rows...\n", dataFrame)

実行結果

上記のコードを実行すると、次のような出力が得られます。

DataFrame...
      Product  Opening_Stock  Closing_Stock
0     SmartTV            300            200
1  ChromeCast            700            500
2     Speaker           1200           1000
3    Earphone           1500            900

Summing rows...
      Product  Opening_Stock  Closing_Stock  Result_Sum
0     SmartTV            300            200         500
1  ChromeCast            700            500        1200
2     Speaker           1200           1000        2200
3    Earphone           1500            900        2400

出力を見ると、各行の「Opening_Stock」と「Closing_Stock」の合計が「Result_Sum」列に正しく計算されていることが確認できます(例:SmartTVの場合は 300 + 200 = 500)。

まとめ

eval()関数を使えば、列同士の演算を簡潔な文字列式として記述でき、その結果を新しい列として手軽に追加できます。特に大規模なデータセットを扱う場合、通常の演算子による処理よりも高速に動作することがあるため、可読性とパフォーマンスの両面でメリットのある手法です。

  1. Python Pandas入門:TimedeltaIndex.componentsでタイムデルタの構成要素をDataFrameとして取得する方法

    TimedeltaIndexの各要素を「日・時・分・秒・ミリ秒・マイクロ秒・ナノ秒」といった構成要素(コンポーネント)に分解し、その結果をDataFrameとして取得したい場合は、TimedeltaIndex.componentsプロパティを使用します。 この記事では、実際のコード例とともに、componentsプロパティの使い方と出力結果をわかりやすく解説します。 必要なライブラリのインポート まず、pandasをインポートします。 import pandas as pd TimedeltaIndexオブジェクトの作成 次に、TimedeltaIndexオブジェクトを作成します。dataパラ

  2. 【Python】Pandas DataFrameからnull(欠損値)行を削除する方法|dropna()の使い方

    PandasのDataFrameからnull(NaN)行を削除するには、dropna()メソッドを使用します。この記事では、NaNを含むCSVファイルを読み込み、dropna()で欠損値を含む行を取り除くまでの手順を、サンプルコードと実行結果とともにわかりやすく解説します。前提:NaNを含むCSVファイル今回の例では、一部にNaN(null値)が含まれる以下のようなCSVファイル(CarRecords.csv)を使用します。手順1:read_csv()でCSVファイルを読み込むまずpandasをインポートし、read_csv()を使ってCSVファイルを読み込みます。ここではデスクトップ上に保存