这个python函数签名在Kedro教程中是什么意思?



我正在研究Kedro Library,因为我的团队正在研究将它用于我们的数据管道。

进入官方教程- Spaceflight.

我遇到了这个函数:

def preprocess_companies(companies: pd.DataFrame) -> pd.DataFrame:
"""Preprocess the data for companies.
Args:
companies: Source data.
Returns:
Preprocessed data.
"""
companies["iata_approved"] = companies["iata_approved"].apply(_is_true)
companies["company_rating"] = companies["company_rating"].apply(_parse_percentage)
return companies
  • companies是包含
  • 数据的csv文件的名称。

看这个函数,我的假设是(companies: pd.Dafarame)是读取"companies"的简写。作为数据框架的数据集。如果是这样,我不明白最后的-> pd.Dataframe是什么意思

我试着看python文档关于这种风格的代码,但我没有设法找到任何

如果你能帮助我理解这件事,我将不胜感激。

谢谢

这是声明输入类型的方法(companies: pd.DataFrame)。这里的公司是争论和pd。DataFrame是它的类型。以同样的方式->pd。DataFrame:输出的类型总的来说,他们说pd类型的公司。DataFrame将返回pd。DataFrametype变量。我希望你得到它

->符号是类型提示,companies: pd.DataFrame函数定义中的:部分也是。这在Python中不是必需的,但许多人喜欢包含它。如果函数定义中不包含this,而是读取为:

,那么它的工作原理将完全相同。
def preprocess_companies(companies):

这是Python通用的东西,而不是特定于kedror的东西。

kedro将companies注册为kedro数据集的方式与此函数定义完全分开,并通过编目完成。yml文件:

companies:
type: pandas.CSVDataSet
filepath: data/01_raw/companies.csv
然后将定义一个节点(在pipeline.py中)来指定preprocess_companies函数应该将kedro数据集companies: 作为输入。
node(
func=preprocess_companies,
inputs="companies",  # THIS LINE REFERS TO THE DATASET NAME
outputs="preprocessed_companies",
name="preprocessing_companies",
),

理论上,函数本身的形参名可以完全不同,例如

def preprocess_companies(anything_you_want):

…尽管给它与数据集相同的名称是很常见的。

在这种情况下,公司在技术上是任何DataFrame。但是,当封装在KedroNode对象中时,将传入正确的数据集:

Node( 
func=preprocess_companies, # The function posted above
inputs='raw_companies', # Kedro will read from a catalog entry called 'raw companies'
outputs='processed_companies', # Kedro will write to a catalog entry called 'processed_companies'
)

本质上,这里的参数名并不重要,这样命名是为了让阅读代码的人知道它在语义上是关于公司的,但是函数名也做到了这一点。

以上是技术上的简化,因为我没有进入MemoryDataSets,但希望它涵盖了要点。

相关内容

  • 没有找到相关文章

最新更新