Pandas DataFrame DataFrame.sum() 関数

Suraj Joshi 2023年1月30日
  1. pandas.DataFrame.sum() の構文
  2. コード例:DataFrame.sum() 列軸に沿った和を計算するメソッド
  3. コード例:DataFrame.sum() 行軸に沿った和を求めるメソッド
  4. コード例:DataFrame.sum() NaN の値を無視して和を求めるメソッド
  5. コード例:DataFrame.sum() メソッドで min_count を設定する
Pandas DataFrame DataFrame.sum() 関数

Python Pandas DataFrame.sum() 関数は、DataFrame オブジェクトの値の合計を指定した軸上で計算します。

pandas.DataFrame.sum() の構文

DataFrame.sum(
    axis=None, skipna=None, level=None, numeric_only=None, min_count=0, **kwargs
)

パラメータ

axis 行(axis=0)または列(axis=1)に沿って和を求める
skipna 論理値。NaN の値を除外するか (skipna=True)、または NaN の値を含めるか (skipna=False)。
level 軸が MultiIndex の場合、特定のレベルに沿ってカウントします。
numeric_only ブール値。numeric_only=True の場合は、floatintboolean カラムのみをインクルードします。
min_count 整数です。和を計算するための最小の 非 NaN 値の数を指定します。この条件が満たされない場合、和は NaN となります。
**kwargs 関数への追加のキーワード引数

戻り値

level が指定されていない場合は、指定した軸の値の和の Series を返し、そうでない場合は和の値の DataFrame を返します。

コード例:DataFrame.sum() 列軸に沿った和を計算するメソッド

import pandas as pd

df = pd.DataFrame({'X': 
                   [1,2,3,4,5], 
                   'Y': [1, 2, 3,4,5], 
                   'Z': [3,4,5,6,3]})
print("DataFrame:")
print(df)

sums=df.sum()
print("Column-wise Sum:")
print(sums)

出力:

DataFrame:
   X  Y  Z
0  1  1  3
1  2  2  4
2  3  3  5
3  4  4  6
4  5  5  3
Column-wise Sum:
X    15
Y    15
Z    21
dtype: int64

これはすべての列 XYZ の合計を計算し、最終的に各列の合計を含む Series オブジェクトを返します。

Pandas の DataFrame の特定の列の合計を求めるには、その列に対してのみ sum() 関数を呼び出す必要があります。

import pandas as pd

df = pd.DataFrame({'X': 
                   [1,2,3,4,5], 
                   'Y': [1, 2, 3,4,5], 
                   'Z': [3,4,5,6,3]})
print("DataFrame:")
print(df)

sums=df["Z"].sum()
print("Sum of values of Z-column:")
print(sums)

出力:

DataFrame:
   X  Y  Z
0  1  1  3
1  2  2  4
2  3  3  5
3  4  4  6
4  5  5  3
Sum of values of Z-column:
21

これは DataFrameZ 列の値の合計のみを返します。

コード例:DataFrame.sum() 行軸に沿った和を求めるメソッド

import pandas as pd

df = pd.DataFrame({'X': 
                   [1,2,3,4,5], 
                   'Y': [1, 2, 3,4,5], 
                   'Z': [3,4,5,6,3]})
print("DataFrame:")
print(df)

sums=df.sum(axis=1)
print("Row-wise sum:")
print(sums)

出力:

DataFrame:
   X  Y  Z
0  1  1  3
1  2  2  4
2  3  3  5
3  4  4  6
4  5  5  3
Row-wise sum:
0     5
1     8
2    11
3    14
4    13
dtype: int64

すべての行の合計を計算し、最後に各行の合計を含む Series オブジェクトを返します。

Pandas の DataFrame の特定の行の合計を求めるには、その特定の行に対してのみ sum() 関数を呼び出す必要があります。


import pandas as pd

df = pd.DataFrame({'X': 
                   [1,2,3,4,5], 
                   'Y': [1, 2, 3,4,5], 
                   'Z': [3,4,5,6,3]})
print("DataFrame:")
print(df)

sum_3=df.iloc[[2]].sum(axis=1)
print("Sum of values of 3rd Row:")
print(sum_3)

出力:

DataFrame:
   X  Y  Z
0  1  1  3
1  2  2  4
2  3  3  5
3  4  4  6
4  5  5  3
Sum of values of 3rd Row:
2    11
dtype: int64

これは DataFrame の 3 行目の値の合計のみを返します。

インデックスに基づいて行を選択するには iloc メソッドを使用します。

コード例:DataFrame.sum() NaN の値を無視して和を求めるメソッド

パラメータ skipna のデフォルト値、すなわち skipna=True を用いて、指定された軸に沿った DataFrame の合計を求めます。

import pandas as pd
df = pd.DataFrame({'X': 
                   [1,None,3,4,5], 
                   'Y': [1, None, 3,None,5], 
                   'Z': [3,4,5,6,3]})
print("DataFrame:")
print(df)

sums=df.sum()
print("Column-wise Sum:")
print(sums)

出力:

DataFrame:
     X    Y  Z
0  1.0  1.0  3
1  NaN  NaN  4
2  3.0  3.0  5
3  4.0  NaN  6
4  5.0  5.0  3
Column-wise Sum:
X    13.0
Y     9.0
Z    21.0
dtype: float64

skipna=True を指定すると、データフレームに NaN 値がある場合は NaN 値の和を取得します。


import pandas as pd

df = pd.DataFrame({'X': 
                   [1,None,3,4,5], 
                   'Y': [1, None, 3,None,5], 
                   'Z': [3,4,5,6,3]})
print("DataFrame:")
print(df)

sums=df.sum(skipna=False)
print("Column-wise Sum:")
print(sums)

出力:

DataFrame:
     X    Y  Z
0  1.0  1.0  3
1  NaN  NaN  4
2  3.0  3.0  5
3  4.0  NaN  6
4  5.0  5.0  3
Column-wise Sum:
X     NaN
Y     NaN
Z    21.0
dtype: float64

ここでは、列 X と列 Y の和の NaN 値を取得しています。

コード例:DataFrame.sum() メソッドで min_count を設定する

import pandas as pd

df = pd.DataFrame({'X': 
                   [1,None,3,4,5], 
                   'Y': [1, None, 3,None,5], 
                   'Z': [3,4,5,6,3]})
print("DataFrame:")
print(df)

sums=df.sum(min_count=4)
print("Column-wise Sum:")
print(sums)

出力:

DataFrame:
     X    Y  Z
0  1.0  1.0  3
1  NaN  NaN  4
2  3.0  3.0  5
3  4.0  NaN  6
4  5.0  5.0  3
Column-wise Sum:
X    13.0
Y     NaN
Z    21.0
dtype: float64

ここでは、列 Y の合計の NaN 値を取得します。列 Y には 3 の非 NaN 値しかなく、パラメータ min_count の値よりも小さい値です。

著者: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

Suraj Joshi is a backend software engineer at Matrice.ai.

LinkedIn

関連記事 - Pandas DataFrame