Python 3.x 这个python函数签名在Kedro教程中意味着什么?

Python 3.x 这个python函数签名在Kedro教程中意味着什么?,python-3.x,kedro,Python 3.x,Kedro,我正在研究Kedro库,因为我的团队正在研究将其用于我们的数据管道 去参加官方的太空飞行教程 我遇到了这个函数: def preprocess_companies(companies: pd.DataFrame) -> pd.DataFrame: """Preprocess the data for companies. Args: companies: Source data. Returns: Prepro

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

去参加官方的太空飞行教程

我遇到了这个函数:

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
  • Companys是包含数据的csv文件的名称
看看函数,我的假设是
(companys:pd.Dafarame)
是将“companys”数据集作为数据帧读取的简写。如果是这样的话,我不明白最后的pd.Dataframe是什么意思

我试图查看有关这种代码风格的python文档,但没有找到任何

非常感谢帮助我理解这一点


谢谢

公司:pd.DataFrame函数定义中的
部分以及
->
符号是。这在Python中不是必需的,但许多人喜欢将其包括在内。如果函数定义不包含以下内容,但改为:

def预处理公司(公司):
这是一个通用的Python东西,而不是任何kedro特定的东西

kedro将
公司注册为kedro数据集的方式与此函数定义完全不同,并通过catalog.yml文件完成:

公司:
类型:pandas.CSVDataSet
文件路径:data/01_raw/companys.csv
然后将定义一个节点(在pipeline.py中),指定
preprocess\u companies
函数应将kedro数据集
companies
作为输入:

节点(
func=预处理公司,
inputs=“companys”,#此行指的是数据集名称
输出=“预处理的公司”,
name=“预处理公司”,
),
理论上,函数本身中参数的名称可能完全不同,例如

def预处理公司(任何您想要的):

。。。尽管将其命名为与数据集相同的名称是很常见的。

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

节点(
func=预处理公司,上面发布的函数
输入=“原始公司”,Kedro将从名为“原始公司”的目录条目中读取
输出为“已处理的公司”,Kedro将写入名为“已处理的公司”的目录条目
)
本质上,参数名在这里并不重要,它是这样命名的,以便阅读代码的人知道它在语义上是关于公司的,但函数名也这样做


以上从技术上讲是一种简化,因为我不想讨论
MemoryDataset
,但希望它涵盖了要点。

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

非常感谢你付出努力提供答案!非常感谢您花时间详细解释!