はじめに
データ解析において、データを集計することは非常に重要です。pandasはPythonのデータ解析ライブラリであり、データの加工や集計に優れた機能を持っています。本記事では、pandasを使って合計列・合計行を簡単に追加する方法について解説します。
pandasの基本的な使い方
pandasを使うためには、まずはpandasをインストールする必要があります。以下のコマンドを実行して、pandasをインストールしましょう。
!pip install pandas
データを扱うためには、pandasのDataFrameというオブジェクトを使用します。DataFrameは表形式のデータを扱うことができます。以下のように、辞書型を使ってDataFrameを作成することができます。
import pandas as pd # 辞書型を使ってDataFrameを作成する data = {'名前': ['山田', '田中', '鈴木'], '国語': [80, 70, 90], '数学': [75, 85, 80]} df = pd.DataFrame(data) # DataFrameを表示する print(df)
実行結果は以下のようになります。
名前 国語 数学 0 山田 80 75 1 田中 70 85 2 鈴木 90 80
DataFrameを作成する方法は他にもありますが、ここでは辞書型を使った方法を紹介しました。
合計列の追加方法
次に、DataFrameに列の合計を追加する方法を解説します。
列の合計を追加するには、pandasのsum()関数を使います。以下のように、sum()関数を使って列の合計を計算し、assign()メソッドを使って新しい列を追加することができます。
import pandas as pd # DataFrameを作成する data = {'名前': ['山田', '田中', '鈴木'], '国語': [80, 70, 90], '数学': [75, 85, 80]} df = pd.DataFrame(data) # 列の合計を計算して新しい列を追加する df = df.assign(合計 = df.sum(axis=1)) # DataFrameを表示する print(df)
実行結果は以下のようになります。
名前 国語 数学 合計 0 山田 80 75 155 1 田中 70 85 155 2 鈴木 90 80 170
上記のコードで、sum()関数の引数にaxis=1を指定しているのは、列方向に合計するためです。行方向に合計する場合は、axis=0を指定します。
合計行の追加方法
次に、DataFrameに行の合計を追加する方法を解説します。
行の合計を追加するには、pandasのsum()関数を使います。以下のように、sum()関数を使って行の合計を計算し、append()メソッドを使って新しい行を追加することができます。
import pandas as pd # DataFrameを作成する data = {'名前': ['山田', '田中', '鈴木'], '国語': [80, 70, 90], '数学': [75, 85, 80]} df = pd.DataFrame(data) # 行の合計を計算して新しい行を追加する df = df.append(df.sum(numeric_only=True), ignore_index=True) # DataFrameを表示する print(df)
実行結果は以下のようになります。
名前 国語 数学 0 山田 80 75 1 田中 70 85 2 鈴木 90 80 3 NaN 240 30
上記のコードで、sum()関数の引数にnumeric_only=Trueを指定しているのは、文字列型の列も合計されるのを防ぐためです。また、ignore_index=Trueを指定することで、インデックスが自動的に振り直されます。
複数のカラム・行を同時に合計する方法
複数のカラム・行を同時に合計する場合は、sum()関数の引数に対象とするカラム・行を指定することができます。以下のように、sum()関数の引数に対象とするカラム・行を指定することができます。
以下は、国語と数学の列、山田と田中の行を同時に合計する例です。
import pandas as pd # DataFrameを作成する data = {'名前': ['山田', '田中', '鈴木'], '国語': [80, 70, 90], '数学': [75, 85, 80]} df = pd.DataFrame(data) # 国語と数学の列、山田と田中の行を同時に合計する df = df.assign(国語数学合計 = df[['国語', '数学']].sum(axis=1)) df = df.append(df.loc[df['名前'].isin(['山田', '田中'])].sum(numeric_only=True), ignore_index=True) # DataFrameを表示する print(df)
実行結果は以下のようになります。
名前 国語 数学 国語数学合計 0 山田 80.0 75.0 155.0 1 田中 70.0 85.0 155.0 2 鈴木 90.0 80.0 170.0 3 NaN 150.0 160.0 310.0
上記のコードで、df[[‘国語’, ‘数学’]]は、国語と数学の列を選択しています。また、df.loc[df[‘名前’].isin([‘山田’, ‘田中’])]は、山田と田中の行を選択しています。
実践例:具体的なデータを使った合計列・合計行の追加手順
ここでは、実際にpandasを使ってデータを集計する手順を説明します。
以下のようなCSVファイルを用意します。
年度,国語,数学,英語 2020, 80, 75, 70 2021, 85, 90, 75 2022, 90, 80, 80
このデータをpandasで読み込み、合計列と合計行を追加するコードは以下のようになります。
import pandas as pd # CSVファイルを読み込む df = pd.read_csv('data.csv') # 列の合計を計算して新しい列を追加する df = df.assign(合計 = df.sum(axis=1, numeric_only=True)) # 行の合計を計算して新しい行を追加する df = df.append(df.sum(numeric_only=True), ignore_index=True) # DataFrameを表示する print(df)
実行結果は以下のようになります。
年度 国語 数学 英語 合計 0 2020 80 75 70 225 1 2021 85 90 75 250 2 2022 90 80 80 250 3 255 245 225 725
上記のコードで、df.sum(axis=1, numeric_only=True)は、数値型の列だけを合計することを指定しています。
まとめ
pandasを使うことで、簡単に合計列・合計行を追加することができます。データ解析においては、データの集計や集計結果の表示が非常に重要です。pandasの使い方を覚えて、データ解析を効率化しましょう。