在函数中使用参数,但事先未声明该参数

using a parameter in a function without previously declaring it

提问人:mw00847 提问时间:11/16/2023 更新时间:11/16/2023 访问量:41

问:

欣赏这是一个简单的问题,

使用此处的教程 https://introml.analyticsdojo.com/notebooks/nb-04-10-pca.html

使用下面的代码。

当 df 和 dv 之前未声明时,它们如何用作函数中的参数?

感谢您的帮助


import os
import pandas as pd
train = pd.read_csv('https://raw.githubusercontent.com/rpi-techfundamentals/spring2019-materials/master/input/train.csv')
test = pd.read_csv('https://raw.githubusercontent.com/rpi-techfundamentals/spring2019-materials/master/input/test.csv')

print(train.columns, test.columns)

from sklearn.impute import SimpleImputer
import numpy as np

cat_features = ['Pclass', 'Sex', 'Embarked']
num_features =  [ 'Age', 'SibSp', 'Parch', 'Fare'  ]


def preprocess(df, num_features, cat_features, dv):
    features = cat_features + num_features
    if dv in df.columns:
      y = df[dv]
    else:
      y=None 
    #Address missing variables
    print("Total missing values before processing:", df[features].isna().sum().sum() )
  
    imp_mode = SimpleImputer(missing_values=np.nan, strategy='most_frequent')
    df[cat_features]=imp_mode.fit_transform(df[cat_features] )
    imp_mean = SimpleImputer(missing_values=np.nan, strategy='mean')
    df[num_features]=imp_mean.fit_transform(df[num_features])
    print("Total missing values after processing:", df[features].isna().sum().sum() )
   
    X = pd.get_dummies(df[features], columns=cat_features, drop_first=True)
    return y,X

y, X =  preprocess(train, num_features, cat_features, 'Survived')
test_y, test_X = preprocess(test, num_features, cat_features, 'Survived')

Python pandas 变量

评论

0赞 roganjosh 11/16/2023
它们是函数签名的一部分 - 它们是参数名称。当您调用函数时,您可以在函数的作用域中设置它们的值y, X = preprocess(train, num_features, cat_features, 'Survived')

答:

0赞 Raysuoo 11/16/2023 #1

在 Python 中,您无需声明变量即可使用它们。解释器在运行程序时分配变量的类型,最佳做法仍然是声明它们,以便您可以确定该变量中有您想要的类型。

在本例中,“df”是 train,它是使用的 csv 文件,“dv”是单词“Survived”。for 循环在所有 csv 文件列中搜索单词 Survived 如果存在对应关系,则将其添加到该索引中的 csv 文件中。

你可以在这里看到它如何更好地工作,在我看来,这可以帮助你消除你的疑虑。