Pandas DataFrame DataFrame.sum()函式

Suraj Joshi 2023年1月30日 2020年11月7日
  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

它只給出了 DataFrame Z 列值的總和。

示例程式碼: 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 的第三行的值的總和。

使用 iloc 方法根據索引來選擇行。

示例程式碼:DataFrame.sum() 方法查詢忽略 NaN 值的總和

使用 skipna 引數的預設值,即 skipna=True 沿指定的軸找到 DataFrame 的總和,忽略 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()
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,如果 DataFrame 有 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

這裡,你會得到列 XY 之和的 NaN 值,因為它們都有 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 引數的值。

Author: Suraj Joshi
Suraj Joshi avatar Suraj Joshi avatar

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

LinkedIn

相關文章 - Pandas DataFrame