Pandas DataFrame DataFrame.sum()函式
Suraj Joshi
2023年1月30日
Pandas
Pandas DataFrame
-
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 引數的值。
Enjoying our tutorials? Subscribe to DelftStack on YouTube to support us in creating more high-quality video guides. Subscribe
作者: Suraj Joshi
Suraj Joshi is a backend software engineer at Matrice.ai.
LinkedIn