为了账号安全,请及时绑定邮箱和手机立即绑定

“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条经验 获得超15个赞

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 关注
  • 93 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信