MLTable 类

表示 MLTable。

MLTable 定义一系列延迟计算的不可变操作,用于从数据源加载数据。 在要求 MLTable 提供数据之前,不会从源加载数据。

初始化新的 MLTable。

不应直接调用此构造函数。 MLTable 旨在使用 load创建。

继承
builtins.object
MLTable

构造函数

MLTable()

方法

convert_column_types

添加转换步骤以将指定列转换为其各自指定的新类型。


   from mltable import DataType
       data_types = {
           'ID': DataType.to_string(),
           'Date': DataType.to_datetime('%d/%m/%Y %I:%M:%S %p'),
           'Count': DataType.to_int(),
           'Latitude': DataType.to_float(),
           'Found': DataType.to_bool(),
           'Stream': DataType.to_stream()
       }
drop_columns

添加转换步骤以从数据集中删除给定列。 如果给定空列表、元组或集,则不会删除任何内容。 重复列将引发 UserErrorException。

尝试删除MLTable.traits.timestamp_column或MLTable.traits.index_columns中的列将引发 UserErrorException。

extract_columns_from_partition_format

添加转换步骤以使用每个路径的分区信息,并根据指定的分区格式将它们提取到列中。

格式部分“{column_name}”创建字符串列,“{column_name:yyyy/MM/dd/HH/mm/ss}”创建日期/时间列,其中“yyyy”、“MM”、“dd”、“HH”、“mm”和“ss”分别用于提取日期/时间类型的年、月、日、小时、分钟和秒。

格式应从文件路径结束之前的第一个分区键位置开始。 例如,给定路径“/Accounts/2019/01/01/data.csv”,其中分区按部门名称和时间划分, partition_format='/{Department}/{PartitionDate:yyyy/MM/dd}/data.csv'将创建值为“Accounts”的字符串列“Department”和值为“2019-01-01”的 datetime 列“PartitionDate”。

filter

筛选数据,仅保留与指定表达式匹配的记录。

get_partition_count

返回与此 MLTable 关联的数据基础的数据分区数。

keep_columns

添加转换步骤以保留指定的列,并从数据集中删除所有其他列。 如果给定空列表、元组或集,则不会删除任何内容。 重复列将引发 UserErrorException。

如果未显式保留 MLTable.traits.timestamp_column 中的列或MLTable.traits.index_columns中的列,则 UserErrorException 为 raiesion。

random_split

将此 MLTable 随机拆分为两个 MLTable,一个具有大约原始 MLTable 数据的“百分比”%,另一个将其余 (1-“%”%) 。

save

将此 MLTable 另存为 MLTable YAML 文件 & 其给定目录路径。

如果未提供 path ,则 默认为当前工作目录。 如果 路径 不存在,则创建它。 如果 path 为远程路径,则基础数据存储必须已存在。 如果 path 是本地目录,& 不是绝对目录,则将其设置为绝对目录。

如果 path 指向文件,则会引发 UserErrorException。 如果 path 是一个目录路径,该路径已包含一个或多个文件正在保存 (包括 MLTable YAML 文件) 和 覆盖 设置为 False 或“fail”,则会引发 UserErrorException。 如果 path 为远程路径,则相对于从) 加载 MLTable 的目录,未作为并置路径 (文件路径的任何本地文件路径都将引发 UserErrorException。

共置 控制如何将关联路径保存到 路径。 如果为 True,则文件将作为相对 文件 路径与 MLTable YAML 文件一起复制到路径。 否则,不会复制关联的文件,远程路径将保持给定状态,本地文件路径与路径重定向相对(如果需要)。 请注意,False 可能会导致不推荐使用非共置 MLTable YAML 文件,此外,如果 路径 为远程,则会导致 UserErrorException,因为远程 URI 不支持相对路径重定向。

请注意,如果 MLTable 是使用本地相对路径的 from_paths () from_read_delimited_files () 等方法以编程方式创建的,则假定 MLTable 目录路径为当前工作目录。

将新的 MLTable & 关联的数据文件保存到具有现有 MLTable 文件的目录时,请注意 & 保存新文件之前未清除现有文件的关联数据文件。 保存新文件后,现有数据文件可能会保留,尤其是在现有数据文件的名称与任何新数据文件不匹配时。 如果新的 MLTable 在其路径下包含模式指示符,这可能会无意中通过将现有数据文件与新的 MLTable 相关联来更改 MLTable。

如果此 MLTable 中的文件路径指向 路径 中的现有文件,但具有不同的 URI,则如果覆盖为“失败”或“跳过”,则不会 (覆盖现有文件,即跳过) 。

select_partitions

添加转换步骤以选择分区。

show

检索此 MLTable 的第一个 计数 行作为 Pandas 数据帧。

skip

添加转换步骤以跳过此 MLTable 的第一个 计数 行。

take

添加转换步骤以选择此 MLTable 的第一个 计数 行。

take_random_sample

添加一个转换步骤,以随机选择此 MLTable 的每一行,并具有 概率 。 概率必须在 [0,1] 范围内。 可以选择设置随机种子。

to_pandas_dataframe

将 MLTable 文件中指定的路径中的所有记录加载到 Pandas 数据帧中。

validate

验证是否可以加载此 MLTable 的数据,要求从当前计算访问 MLTable 的数据源 () 。

convert_column_types

添加转换步骤以将指定列转换为其各自指定的新类型。


   from mltable import DataType
       data_types = {
           'ID': DataType.to_string(),
           'Date': DataType.to_datetime('%d/%m/%Y %I:%M:%S %p'),
           'Count': DataType.to_int(),
           'Latitude': DataType.to_float(),
           'Found': DataType.to_bool(),
           'Stream': DataType.to_stream()
       }
convert_column_types(column_types)

参数

名称 说明
column_types
必需

列字典:用户希望转换的类型

返回

类型 说明

添加了转换步骤的 MLTable

drop_columns

添加转换步骤以从数据集中删除给定列。 如果给定空列表、元组或集,则不会删除任何内容。 重复列将引发 UserErrorException。

尝试删除MLTable.traits.timestamp_column或MLTable.traits.index_columns中的列将引发 UserErrorException。

drop_columns(columns: str | List[str] | Tuple[str] | Set[str])

参数

名称 说明
columns
必需
Union[str, list[str], <xref:builtin.tuple>[str], <xref:builtin.set>[str]]

要从此 MLTable 中删除的列 ()

返回

类型 说明

添加了转换步骤的 MLTable

extract_columns_from_partition_format

添加转换步骤以使用每个路径的分区信息,并根据指定的分区格式将它们提取到列中。

格式部分“{column_name}”创建字符串列,“{column_name:yyyy/MM/dd/HH/mm/ss}”创建日期/时间列,其中“yyyy”、“MM”、“dd”、“HH”、“mm”和“ss”分别用于提取日期/时间类型的年、月、日、小时、分钟和秒。

格式应从文件路径结束之前的第一个分区键位置开始。 例如,给定路径“/Accounts/2019/01/01/data.csv”,其中分区按部门名称和时间划分, partition_format='/{Department}/{PartitionDate:yyyy/MM/dd}/data.csv'将创建值为“Accounts”的字符串列“Department”和值为“2019-01-01”的 datetime 列“PartitionDate”。

extract_columns_from_partition_format(partition_format)

参数

名称 说明
partition_format
必需
str

用于将数据提取到列中的分区格式

返回

类型 说明

分区格式设置为给定格式的 MLTable

filter

筛选数据,仅保留与指定表达式匹配的记录。

filter(expression)

参数

名称 说明
expression
必需

要计算的表达式。

返回

类型 说明

筛选后的 MLTable

注解

表达式是通过使用列名为 mltable 编制索引来启动的。 它们支持各种函数和运算符,可以使用逻辑运算符进行组合。 当数据提取时,将对每个记录进行惰性计算,而不会对其定义。


   filtered_mltable = mltable.filter('feature_1 == "5" and target > "0.5)"')
   filtered_mltable = mltable.filter('col("FBI Code") == "11"')

get_partition_count

返回与此 MLTable 关联的数据基础的数据分区数。

get_partition_count() -> int

返回

类型 说明
int

此 MLTable 中的数据分区

keep_columns

添加转换步骤以保留指定的列,并从数据集中删除所有其他列。 如果给定空列表、元组或集,则不会删除任何内容。 重复列将引发 UserErrorException。

如果未显式保留 MLTable.traits.timestamp_column 中的列或MLTable.traits.index_columns中的列,则 UserErrorException 为 raiesion。

keep_columns(columns: str | List[str] | Tuple[str] | Set[str])

参数

名称 说明
columns
必需
Union[str, list[str], <xref:builtin.tuple>[str], <xref:builtin.set>[str]]

此 MLTable 中要保留的列 ()

返回

类型 说明

添加了转换步骤的 MLTable

random_split

将此 MLTable 随机拆分为两个 MLTable,一个具有大约原始 MLTable 数据的“百分比”%,另一个将其余 (1-“%”%) 。

random_split(percent=0.5, seed=None)

参数

名称 说明
percent
必需

要拆分的 MLTable 的百分比

seed
必需

可选随机种子

返回

类型 说明

两个 MLTable,其中此 MLTable 的数据按“百分比”在它们之间拆分

save

将此 MLTable 另存为 MLTable YAML 文件 & 其给定目录路径。

如果未提供 path ,则 默认为当前工作目录。 如果 路径 不存在,则创建它。 如果 path 为远程路径,则基础数据存储必须已存在。 如果 path 是本地目录,& 不是绝对目录,则将其设置为绝对目录。

如果 path 指向文件,则会引发 UserErrorException。 如果 path 是一个目录路径,该路径已包含一个或多个文件正在保存 (包括 MLTable YAML 文件) 和 覆盖 设置为 False 或“fail”,则会引发 UserErrorException。 如果 path 为远程路径,则相对于从) 加载 MLTable 的目录,未作为并置路径 (文件路径的任何本地文件路径都将引发 UserErrorException。

共置 控制如何将关联路径保存到 路径。 如果为 True,则文件将作为相对 文件 路径与 MLTable YAML 文件一起复制到路径。 否则,不会复制关联的文件,远程路径将保持给定状态,本地文件路径与路径重定向相对(如果需要)。 请注意,False 可能会导致不推荐使用非共置 MLTable YAML 文件,此外,如果 路径 为远程,则会导致 UserErrorException,因为远程 URI 不支持相对路径重定向。

请注意,如果 MLTable 是使用本地相对路径的 from_paths () from_read_delimited_files () 等方法以编程方式创建的,则假定 MLTable 目录路径为当前工作目录。

将新的 MLTable & 关联的数据文件保存到具有现有 MLTable 文件的目录时,请注意 & 保存新文件之前未清除现有文件的关联数据文件。 保存新文件后,现有数据文件可能会保留,尤其是在现有数据文件的名称与任何新数据文件不匹配时。 如果新的 MLTable 在其路径下包含模式指示符,这可能会无意中通过将现有数据文件与新的 MLTable 相关联来更改 MLTable。

如果此 MLTable 中的文件路径指向 路径 中的现有文件,但具有不同的 URI,则如果覆盖为“失败”或“跳过”,则不会 (覆盖现有文件,即跳过) 。

save(path=None, overwrite=True, colocated=False, show_progress=False, if_err_remove_files=True)

参数

名称 说明
path
必需
str

要保存到的目录路径,默认为当前工作目录

colocated
必需

如果为 True,则将此 MLTable 中 路径 下的本地 & 远程文件路径的副本保存为相对路径。 否则,不会进行文件复制,并且远程文件路径将按给定方式保存到已保存的 MLTable YAML 文件,本地文件路径作为具有路径重定向的相对文件路径保存。 如果 path 为远程 & 此 MLTable 包含本地文件路径,则将引发 UserErrorException。

overwrite
必需
Union[bool, str, <xref:mltable.MLTableSaveOverwriteOptions>]

如何处理 路径 下已存在的 MLTable YAML 文件和关联的文件。 选项包括“overwrite” (或 True) 替换任何现有文件、“fail” (或 False) (如果文件已存在)或“跳过”以保留现有文件。 还可以将 <xref:mltable.MLTableSaveOverwriteOptions>设置为 。

show_progress
必需

显示将进度复制到 stdout

if_err_remove_files
必需

如果在保存过程中发生任何错误,请删除任何成功保存的文件,使操作成为原子操作

返回

类型 说明

此 MLTable 实例

select_partitions

添加转换步骤以选择分区。

select_partitions(partition_index_list)

参数

名称 说明
partition_index_list
必需
list of int

分区索引列表

返回

类型 说明

更新了分区大小的 MLTable

注解

以下代码片段演示如何将 select_partitions API 用于提供的 MLTable 中的选定分区。


   partition_index_list = [1, 2]
   mltable = mltable.select_partitions(partition_index_list)

show

检索此 MLTable 的第一个 计数 行作为 Pandas 数据帧。

show(count=20)

参数

名称 说明
count
必需
int

要选择的表顶部的行数

返回

类型 说明
<xref:Pandas> <xref:Dataframe>

MLTable 的第一个 计数

skip

添加转换步骤以跳过此 MLTable 的第一个 计数 行。

skip(count)

参数

名称 说明
count
必需
int

要跳过的行数

返回

类型 说明

添加了转换步骤的 MLTable

take

添加转换步骤以选择此 MLTable 的第一个 计数 行。

take(count=20)

参数

名称 说明
count
必需
int

要选择的表顶部的行数

返回

类型 说明

添加了“take”转换步骤的 MLTable

take_random_sample

添加一个转换步骤,以随机选择此 MLTable 的每一行,并具有 概率 。 概率必须在 [0,1] 范围内。 可以选择设置随机种子。

take_random_sample(probability, seed=None)

参数

名称 说明
probability
必需

每一行被选中的几率

seed
必需

可选随机种子

返回

类型 说明

添加了转换步骤的 MLTable

to_pandas_dataframe

将 MLTable 文件中指定的路径中的所有记录加载到 Pandas 数据帧中。

to_pandas_dataframe()

返回

类型 说明

Pandas 数据帧包含此 MLTable 中路径中的记录

注解

以下代码片段演示如何使用 to_pandas_dataframe API 获取与提供的 MLTable 对应的 pandas 数据帧。


   from mltable import load
   tbl = load('.\samples\mltable_sample')
   pdf = tbl.to_pandas_dataframe()
   print(pdf.shape)

validate

验证是否可以加载此 MLTable 的数据,要求从当前计算访问 MLTable 的数据源 () 。

validate()

返回

类型 说明

属性

partition_keys

返回分区键。

返回

类型 说明

分区键

paths

返回字典列表,其中包含为此 MLTable 提供的原始路径。 假定相对本地文件路径相对于从中加载此 MLTable 实例的 MLTable YAML 文件的目录。

返回

类型 说明

包含 MLTable 中指定的路径的 dict 列表