Pandas DataFrame DataFrame.sum()函数
Suraj Joshi
2023年1月30日
-
pandas.DataFrame.sum()
的语法 -
示例代码:
DataFrame.sum()
沿列轴计算和值的方法 -
示例代码:
DataFrame.sum()
沿行轴查找总和的方法 -
示例代码:
DataFrame.sum()
方法查找忽略NaN
值的总和 -
示例代码:在
DataFrame.sum()
方法中设置min_count
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 ,只包括 float 、int 和 boolean 列。 |
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
它计算所有列 X
、Y
和 Z
的总和,最后返回一个 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
这里,你会得到列 X
和 Y
之和的 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
参数的值。
作者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn