这个 python 函数签名在 Kedro 教程中意味着什么?
What does this python function signature means in Kedro Tutorial?
我正在研究 Kedro 库,因为我的团队正在考虑将它用于我们的数据管道。
正在转到官方教程 - 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)
是 shorthand 将“公司”数据集读取为数据框。如果是这样,我不明白最后的-> pd.Dataframe
是什么意思
我试着查看 python 有关此类代码风格的文档,但没有找到任何内容
非常感谢帮助我理解这一点。
谢谢
->
符号是 type hinting,companies: pd.DataFrame
函数定义中的 :
部分也是如此。这在 Python 中不是必需的,但很多人喜欢包含它。如果函数定义不包含 this 而是读取:
,则函数定义将完全相同
def preprocess_companies(companies):
这是一般性的 Python 事情,而不是 kedro 特有的事情。
kedro 将 companies
注册为 kedro 数据集的方式完全独立于此函数定义,并通过 catalog.yml 文件完成:
companies:
type: pandas.CSVDataSet
filepath: data/01_raw/companies.csv
然后将定义一个 node(在 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
。但是,当包裹在 Kedro Node
对象中时,将传入正确的数据集:
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
但希望它涵盖了要点。
这是声明输入类型的方式(公司:pd.DataFrame)。这里 companies 是参数, pd.DataFrame 是它的类型。以同样的方式 -> pd.DataFrame 这是输出类型
总的来说,他们说 pd.DataFrame 类型的公司将 return pd.DataFrame 类型变量。
我希望你明白了
我正在研究 Kedro 库,因为我的团队正在考虑将它用于我们的数据管道。
正在转到官方教程 - 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)
是 shorthand 将“公司”数据集读取为数据框。如果是这样,我不明白最后的-> pd.Dataframe
是什么意思
我试着查看 python 有关此类代码风格的文档,但没有找到任何内容
非常感谢帮助我理解这一点。
谢谢
->
符号是 type hinting,companies: pd.DataFrame
函数定义中的 :
部分也是如此。这在 Python 中不是必需的,但很多人喜欢包含它。如果函数定义不包含 this 而是读取:
def preprocess_companies(companies):
这是一般性的 Python 事情,而不是 kedro 特有的事情。
kedro 将 companies
注册为 kedro 数据集的方式完全独立于此函数定义,并通过 catalog.yml 文件完成:
companies:
type: pandas.CSVDataSet
filepath: data/01_raw/companies.csv
然后将定义一个 node(在 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
。但是,当包裹在 Kedro Node
对象中时,将传入正确的数据集:
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
但希望它涵盖了要点。
这是声明输入类型的方式(公司:pd.DataFrame)。这里 companies 是参数, pd.DataFrame 是它的类型。以同样的方式 -> pd.DataFrame 这是输出类型 总的来说,他们说 pd.DataFrame 类型的公司将 return pd.DataFrame 类型变量。 我希望你明白了