pandas 中的Axis(軸)的理解
python中的axis究竟是如何定義的呢?他們究竟代表是DataFrame的行還是列?考慮以下程式碼:
>>>df = pd.DataFrame([[1, 1, 1, 1], [2, 2, 2, 2], [3, 3, 3, 3]], columns=["col1", "col2", "col3", "col4"])
>>>df
col1 col2 col3 col4
0 1 1 1 1
1 2 2 2 2
2 3 3 3 3
-----------------------------------------------------------------------------------------------------------------------------------
呼叫df.mean(axis=1),我們將得到按行計算的均值
>>> df.mean(axis=1)
0 1
1 2
2 3
-----------------------------------------------------------------------------------------------------------------------------------
然而,如果我們呼叫 df.drop((name, axis=1),我們實際上刪掉了一列,而不是一行:
>>> df.drop("col4", axis=1)
col1 col2 col3
0 1 1 1
1 2 2 2
2 3 3 3
-----------------------------------------------------------------------------------------------------------------------------------
注意,這裡drop()函式需要指定維度,如果不指定的話,會報錯,如下所示:
那麼如何理解在pandas、numpy、scipy中axis引數的真實含義呢
根據stackoverflow答主解釋,axis=0指的是逐行,axis=1指的是逐列。
其實問題理解axis有問題,df.mean其實是在每一行上取所有列的均值,而不是保留每一列的均值。也許簡單的來記就是axis=0代表往跨行(down),而axis=1代表跨列(across),作為方法動作的副詞(譯者注)。
換句話說:
- 使用0值表示沿著每一列或行標籤\索引值向下執行方法
- 使用1值表示沿著每一行或者列標籤模向執行對應的方法
下圖代表在DataFrame當中axis為0和1時分別代表的含義:
這裡是理解的關鍵
根據結果:
mean(axis=0)計算的是每一列平均值,
mean(axis=1)計算的是每一行平均值。
drop(0,axis=0)刪除行,
drop([‘col1’],axis=1)刪除列。