Pandas DataFrame.median(~) 方法計算 DataFrame 的每行或每列的中位數。
參數
1.axis | int 或 string | optional
是否按行或按列計算中位數:
|
軸 |
說明 |
|---|---|
|
|
計算每列的中位數。 |
|
|
計算每行的中位數。 |
默認情況下,axis=0 。
2. skipna | boolean | optional
是否跳過 NaN 。如果 skipna=False ,那麽即使有一個 NaN 也會返回 NaN 作為其行/列的中位數。默認情況下,skipna=True 。
3. level | string 或 int | optional
要考慮的級別的名稱或整數索引。僅當您的 DataFrame 是多索引時,這才有意義。
4. numeric_only | None 或 boolean | optional
允許的值如下:
|
值 |
說明 |
|---|---|
|
|
僅考慮數字行/列(例如 |
|
|
嘗試使用所有類型(例如字符串和日期)進行計算,並在無法計算中位數時拋出錯誤。 |
|
|
嘗試計算所有類型,並忽略所有無法計算中位數的行/列不會引發錯誤. |
請注意,隻有當我們可以在類型之間執行求和時,才能計算中位數。
默認情況下,numeric_only=None 。
返回值
如果指定了level參數,則將返回DataFrame。否則,將返回Series。
例子
考慮以下 DataFrame :
df = pd.DataFrame({"A":[2,3], "B":[4,5], "C":["6",7]})
df
A B C
0 2 4 "6"
1 3 5 7
列中位數
計算每列的中位數:
df.median() # axis=0
A 2.5
B 4.5
C 6.5
dtype: float64
請注意 "6" 如何自動轉換為 float 以計算中位數。
行中位數
要計算每行的中位數,請設置 axis=1 :
df.median(axis=1)
0 4.0
1 5.0
dtype: float64
指定skipna
考慮以下 DataFrame :
df = pd.DataFrame({"A":[3,4,6], "B":[7,9,pd.np.nan]})
df
A B
0 3 7.0
1 4 9.0
2 6 NaN
默認情況下, skipna=True ,這意味著在計算中位數時會跳過所有缺失值:
df.median() # skipna=True
A 4.5
B 8.0
dtype: float64
考慮缺失值:
df.median(skipna=False)
A 4.0
B NaN
dtype: float64
請注意,如果行/列包含一個或多個缺失值,則該行/列的中位數將為 NaN 。
指定numeric_only
考慮以下 DataFrame :
df = pd.DataFrame({"A":[3,4], "B":[5,True], "C":[6,"7@8"]})
df
A B C
0 3 5 6
1 4 True 7@8
此處, B 和 C 列都包含混合類型,但主要區別在於可以計算 B 的中位數,但不能計算 C 的中位數。當樣本大小為偶數時(即此處的情況),中位數是通過取中間兩個數字的平均值來計算的,這意味著類型之間的求和運算必須明確定義。
回想一下, True 布爾值的內部表示是 1 ,因此操作 5+True 實際上計算為 6 :
5 + True
6
另一方麵,6+"7@8" 拋出錯誤:
6 + "7@8"
TypeError: unsupported operand type(s) for +: 'int' and 'str'
None
默認情況下, numeric_only=None ,這意味著混合類型的行/列也會被考慮:
df.median(numeric_only=None)
A 3.5
B 3.0
dtype: float64
在這裏,請注意如何計算列的中位數B,但不適合C。通過傳入None,無法計算中位數的行/列(由於求和無效)將被忽略不會引發錯誤.
False
通過設置 numeric_only=False ,將再次考慮混合類型的行/列,但當無法計算中位數時會拋出錯誤:
df.median(numeric_only=False)
TypeError: could not convert string to float: '7@8'
在這裏,我們最終得到一個錯誤,因為 C 列包含未定義求和的混合類型。
True
通過設置 numeric_only=True ,僅考慮數字行/列:
df.median(numeric_only=True)
A 4.5
dtype: float64
請注意B 和C 列如何被忽略,因為它們包含混合類型。
相關用法
- Python Pandas DataFrame mean方法用法及代碼示例
- Python Pandas DataFrame memory_usage方法用法及代碼示例
- Python Pandas DataFrame merge方法用法及代碼示例
- Python Pandas DataFrame melt方法用法及代碼示例
- Python Pandas DataFrame max方法用法及代碼示例
- Python Pandas DataFrame mod方法用法及代碼示例
- Python Pandas DataFrame mode方法用法及代碼示例
- Python Pandas DataFrame mask方法用法及代碼示例
- Python Pandas DataFrame min方法用法及代碼示例
- Python Pandas DataFrame mad方法用法及代碼示例
- Python Pandas DataFrame mul方法用法及代碼示例
- Python Pandas DataFrame empty屬性用法及代碼示例
- Python Pandas DataFrame pop方法用法及代碼示例
- Python Pandas DataFrame nsmallest方法用法及代碼示例
- Python Pandas DataFrame sample方法用法及代碼示例
- Python Pandas DataFrame items方法用法及代碼示例
- Python Pandas DataFrame swaplevel方法用法及代碼示例
- Python Pandas DataFrame agg方法用法及代碼示例
- Python Pandas DataFrame copy方法用法及代碼示例
- Python Pandas DataFrame pow方法用法及代碼示例
- Python Pandas DataFrame insert方法用法及代碼示例
- Python Pandas DataFrame lt方法用法及代碼示例
- Python Pandas DataFrame all方法用法及代碼示例
- Python Pandas DataFrame unstack方法用法及代碼示例
- Python PySpark DataFrame filter方法用法及代碼示例
注:本文由純淨天空篩選整理自Isshin Inada大神的英文原創作品 Pandas DataFrame | median method。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。
