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