當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


Python Pandas DataFrame sum方法用法及代碼示例


Pandas DataFrame.sum(~) 方法計算源 DataFrame 的每行或每列的總和。

參數

1.axis | intstring | optional

是否按行或按列計算總和:

說明

"index"0

計算每列的總和。

"columns"1

計算每行的總和。

默認情況下,axis=0

2. skipna | boolean | optional

是否忽略缺失值(NaN)。默認情況下,skipna=True

3. level | stringint | optional

要考慮進行求和的級別的名稱或整數索引。僅當您的 DataFrame 是多索引時,這才相關。

4. numeric_only | Noneboolean | optional

允許的值如下:

說明

True

僅考慮數字行/列(例如 floatintboolean )。

False

嘗試使用所有類型(例如字符串和日期)進行計算,並在求和無效時拋出錯誤。

None

嘗試使用所有類型進行計算,並忽略所有不允許求和的行/列不會引發錯誤.

為了使求和有效,+ 運算符必須在類型之間明確定義。

默認情況下,numeric_only=None

5. min_count | int | optional

執行求和必須出現的最小數值數。如果少於min_count值(不包括NaN),則返回NaN。默認情況下,沒有設置最小值。

返回值

如果指定了level參數,則將返回DataFrame。否則,將返回Series

例子

考慮以下 DataFrame :

df = pd.DataFrame({"A":[2,3], "B":[4,5]})
df



   A  B
0  2  4
1  3  5

逐列求和

要計算每列的總和:

df.sum()   # axis=0



A    5
B    9
dtype: int64

這裏,返回類型是Series

逐行求和

要計算每行的總和,請設置 axis=1

df.sum(axis=1)



0    6
1    8
dtype: int64

指定skipna

考慮以下帶有缺失值的DataFrame:

df = pd.DataFrame({"A":[2,pd.np.nan], "B":[4,5]})
df



   A    B
0  2.0  4
1  NaN  5

默認情況下, skipna=True ,這意味著在計算中忽略 NaN

df.sum()



A    2.0
B    9.0
dtype: float64

設置為 skipna=False 將考慮 NaN

df.sum(skipna=False)



A    NaN
B    9.0
dtype: float64

我們對 A 列的總和得到 NaN 的原因是,任何涉及 NaN 的算術計算都會產生 NaN

指定numeric_only

考慮以下 DataFrame :

df = pd.DataFrame({"A":[4,5], "B":[2,True], "C":["6",False]})
df



   A  B     C
0  4  2     "6"
1  5  True  False

此處, BC 列都包含混合類型,但主要區別在於,求和是為 B 定義的,而不是為 C 定義的。回想一下, True 布爾值的內部表示是 1 ,因此操作 2+True 實際上計算為 3

2 + True



3

另一方麵,"6"+False 拋出錯誤:

6 + "False"



TypeError: unsupported operand type(s) for +: 'int' and 'str'
None

默認情況下, numeric_only=None ,這意味著混合類型的行/列也會被考慮:

df.sum(numeric_only=None)



A    9
B    3
dtype: int64

在這裏,注意如何在列上執行求和B,但不是在C。通過傳入None,導致無效求和的行/列將被忽略沒有拋出錯誤.

False

通過設置 numeric_only=False ,將再次考慮混合類型的行/列,但無法求和時會拋出錯誤:

df.sum(numeric_only=False)



TypeError: can only concatenate str (not "bool") to str

在這裏,我們最終得到一個錯誤,因為 C 列包含混合類型,其中未定義 + 操作。

True

通過設置 numeric_only=True ,僅考慮數字行/列:

df.sum(numeric_only=True)



A    9
dtype: int64

請注意BC 列如何被忽略,因為它們包含混合類型。

空的情況DataFrame

計算空的 DataFrame 或 Series 的總和將得到 0

df = pd.DataFrame({"A":[]})
df.sum()



A    0.0
dtype: float64

相關用法


注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas DataFrame | sum method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。