亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

“axis”屬性在下面的代碼中如何工作?

“axis”屬性在下面的代碼中如何工作?

波斯汪 2023-06-27 14:39:07
這段代碼是用 Python 編寫的。Pandas 數據框名稱是“train”,數據框中的列名稱是帶有浮動值的“Age”和帶有一些分類數字的“Pclass”。代碼:請找到以下代碼:def impute_age(cols):    Age = cols[0]    Pclass = cols[1]        if pd.isnull(Age):        if Pclass == 1:            return 37        elif Pclass == 2:            return 29        else:            return 24    else:        return Agetrain['Age'] = train[['Age','Pclass']].apply(impute_age,axis=0)這里“年齡”列變成了 NAN。我不明白軸列是如何工作的,“年齡”列中的所有記錄都變成了 NAN。
查看完整描述

3 回答

?
侃侃爾雅

TA貢獻1801條經驗 獲得超16個贊

Axis 代表您想要指向的軸,0 表示行,1 表示列。因此,在此示例中,您在 Age 和 P 類列的行上使用 impute_age 函數。


查看完整回答
反對 回復 2023-06-27
?
慕田峪4524236

TA貢獻1875條經驗 獲得超5個贊

這是因為您在列而不是行中應用了該函數。


例子:


data = pd.DataFrame([[np.NaN, 1], [np.NaN, 2], [np.NaN, 1]], columns=["age", "pclass"])

print(data)

輸出


     age     pclass

 0   NaN      1

 1   NaN      2

 2   NaN      1

軸 = 0


 data[['age','pclass']].apply(print, axis=0)

輸出


0    None

1    None

2    None

Name: age, dtype: object

0    1

1    2

2    1

Name: pclass, dtype: object


//Iterate through columns

軸 = 1


 data[['age','pclass']].apply(print, axis=1)

輸出


 age       None

pclass       1

Name: 0, dtype: object

age       None

pclass       2

Name: 1, dtype: object

age       None

pclass       1

Name: 2, dtype: object


//Iterate through the row 


查看完整回答
反對 回復 2023-06-27
?
慕萊塢森

TA貢獻1810條經驗 獲得超4個贊

axis 屬性意味著您沿著該軸應用函數:


       column1 column2

      +-------+---------+

row1  |       |         |  ----> axis1

      +-------+---------+

row2  |       |         |

      +-------+---------+

          |

          V

       axis 0

如果您考慮這樣的函數:


def sum(cols):

    s = 0

    for i in cols:

        s +=i

    return s

并將其應用到數據框 df:


total_sum = df.apply(sum, axis = 0)

它將采用第一列 1 并按照上面草圖中箭頭(軸 0)的方向逐行應用函數。接下來它將采用下一個column2,依此類推。最后您將得到每列的總和。


對于 axis = 1,它將采用 row1 并按列應用該函數。然后將需要 row2 等等。結果,您將獲得每行的總和。


在您的軸等于 0 的示例中,它將“年齡”列作為系列傳遞給您的 impute_age 函數。然后,您僅訪問該系列的前兩個值(行)(cols[0] 和 cols[1])。下一欄也會發生同樣的情況。那不是你想要的。


相反,您希望將每一行傳遞給函數并訪問列,因此您必須指定 axis = 1。


查看完整回答
反對 回復 2023-06-27
  • 3 回答
  • 0 關注
  • 163 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號