通过


mltable 模块

包含用于创建 MLTable 对象并与之交互的功能

DataType

帮助程序类,用于处理支持的列类型(int、bool、string 等)的正确作。 当前与 MLTable.convert_column_types(...)from_delimited_files(...) 一起使用,用于指定要将列转换为的类型。 选择不同类型的 DataType.from_(...)*方法。

MLTable

表示 MLTable。

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

初始化新的 MLTable。

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

Metadata

映射到 MLTable 的元数据部分的类。

支持获取和添加 arbritrary 元数据属性。

Traits

映射到 MLTable 的特征部分的类。

当前支持的特征:timestamp_column和index_columns

枚举

MLTableFileEncoding

定义从文件读取数据以创建 MLTable 时如何处理编码的选项。

这些枚举值在 MLTable 类中使用。

MLTableHeaders

定义从文件读取数据以创建 MLTable 时如何处理列标题的选项。

这些枚举值在 MLTable 类中使用。

MLTablePartitionSize

帮助程序枚举,表示为读取不同内存单元中的所选文件格式而分配的各种分区的内存。 当前在读取带分隔符的文件或 JSON 行文件时使用。

支持以二进制为单位的字节、千字节、兆字节和千兆字节作为内存单位。

MLTableSaveOverwriteOption

定义有关如何在 MLTable.save()中处理文件冲突的选项。 如果发生冲突,请引发错误,使用新文件覆盖现有文件,或保留现有文件。

函数

from_delimited_files

从给定的带分隔符的文件列表中创建 MLTable。

from_delimited_files(paths, header='all_files_same_headers', delimiter=',', support_multi_line=False, empty_as_string=False, encoding='utf8', include_path_column=False, infer_column_types=True)

参数

名称 说明
paths
必需

路径支持具有本地或云路径的文件或文件夹。 假定相对本地文件路径相对于当前工作目录。 如果本地文件路径相对于的父目录不是当前工作目录,则建议将该路径作为绝对文件路径传递。

header
必需

从文件读取时如何处理列标题。 使用枚举 MLTableHeaders指定的选项。 支持的标头为“no_header”、“from_first_file”、“all_files_different_headers”和“all_files_same_headers”。

delimiter
必需
str

用于拆分列的分隔符

support_multi_line
必需

如果为 False,则所有换行符(包括带引号的字段值中的换行符)都将解释为记录分隔符。 以这种方式读取数据更快并且更适合在多个 CPU 核心上并行执行。 但是,它可能会导致无声地生成更多字段值未对齐的记录。 当已知带分隔符的文件包含带引号的换行符时,应将其设置为 True。

将此 csv 文件作为示例,根据support_multi_line以不同的方式读取数据。

A、B、C A1、B1、C1 A2、“B 2”、C2


   from mltable import from_delimited_files

   # default behavior: support_multi_line=False
   mltable = from_delimited_files(path)
   print(mltable.to_pandas_dataframe())
   #      A   B     C
   #  0  A1  B1    C1
   #  1  A2   B  None
   #  2  2"  C2  None

   # to handle quoted line breaks
   mltable = from_delimited_files(path, support_multi_line=True)
   print(mltable.to_pandas_dataframe())
   #      A       B   C
   #  0  A1      B1  C1
   #  1  A2  B\r\n2  C2
empty_as_string
必需

如何处理空字段。 如果 True 将空字段读取为空字符串,则否则读取为 null。 如果 True 和列包含日期/时间或数值数据,空字段仍显示为 null。

encoding
必需

使用枚举 MLTableFileEncoding指定文件编码。 支持的编码包括:

  • utf8 为“utf8”、“utf-8”、“utf-8 bom”
  • iso88591 为“iso88591”或“iso-8859-1”
  • latin1 为“latin1”或“latin-1”
  • utf16 作为“utf16”或“utf-16”
  • windows1252 作为“windows1252”或“windows-1252”
include_path_column
必需

将路径信息保留为 MLTable 中的列,在读取多个文件时非常有用,并且你想要知道特定记录来自哪个文件,或者保留可能存储在文件路径中的有用信息。

infer_column_types
必需

如果为 True,则自动推断所有列类型。 如果为 False,则将列保留为字符串。 如果字典,则表示要将其类型设置为给定类型的列(推断所有其他列)。 字典可能包含一个名为 sample_size 映射到正整数的键,表示用于推断列类型的行数。 字典还可能包含名为“column_type_overrides”的键。 字典中的每个键都是表示列名的字符串或表示一组列名的字符串元组。 每个值都是一个字符串(一个“boolean”、“string”、“float”或“int”)或一个 DataType。 mltable。不支持 DataType.to_stream()。 如果给定了空字典,则假定为 True。 默认为 True。

有关如何设置 infer_column_types格式的示例。


   from mltable import from_delimited_files

   # default behavior: support_multi_line=False
   mltable = from_delimited_files(paths, infer_column_types={
       'sample_size': 100,
       'column_type_overrides': {
           'colA': 'boolean'
           ('colB', 'colC'): DataType.to_int()
       }
   })

返回

类型 说明

MLTable

注解

必须有有效的路径字符串。


   # load mltable from local delimited file
   from mltable import from_delimited_files
   paths = [{"file": "./samples/mltable_sample/sample_data.csv"}]
   mltable = from_delimited_files(paths)

from_delta_lake

创建 MLTable 对象以从 delta lake 表读取 Parquet 文件中。

from_delta_lake(delta_table_uri, timestamp_as_of=None, version_as_of=None, include_path_column=False)

参数

名称 说明
delta_table_uri
必需
str

指向包含要读取的 delta lake parquet 文件的 delta 表目录的 URI。 支持的 URI 类型包括:本地路径 URI、存储 URI、长格式数据存储 URI 或数据资产 URI。

timestamp_as_of
必需

RFC-3339/ISO-8601 格式的 datetime 字符串,用于从特定时间点读取匹配的 parquet 文件。 ex) “2022-10-01T00:00:00Z”, “2022-10-01T00:00:00+08:00”, “2022-10-01T01:30:00-08:00”

version_as_of
必需
int

用于在特定版本的 parquet 文件中读取的整数版本。

include_path_column
必需

将路径信息保留为列,在读取多个文件时非常有用,并且想要知道特定记录来自哪个文件,或保留可能存储在文件路径中的有用信息。

返回

类型 说明

MLTable 实例

注解

from_delta_lake 创建 MLTable 对象,该对象定义将数据从 delta lake 文件夹加载到表格表示形式的作。

若要使 Azure 机器学习可以访问数据, 路径 必须指向增量表目录,并且必须可通过 AzureML 服务或公共 Web URL 访问所引用的 delta lake 文件。

from_delta_lake 支持从指向本地路径、Blob、ADLS Gen1 和 ADLS Gen2 的 URI 读取 delta lake 数据

用户可以通过对返回的 MLTable 调用 to_pandas_dataframe() 来读取和具体化数据


   # create an MLTable object from a delta lake using timestamp versioning and materialize the data
   from mltable import from_delta_lake
   mltable_ts = from_delta_lake(delta_table_uri="./data/delta-01", timestamp_as_of="2021-05-24T00:00:00Z")
   pd = mltable_ts.to_pandas_dataframe()

   # create  an MLTable object from a delta lake using integer versioning and materialize the data
   from mltable import from_delta_lake
   mltable_version = from_delta_lake(delta_table_uri="./data/delta-02", version_as_of=1)
   pd = mltable_version.to_pandas_dataframe()

from_json_lines_files

根据 JSON 文件路径的给定列表创建 MLTable。

from_json_lines_files(paths, invalid_lines='error', encoding='utf8', include_path_column=False)

参数

名称 说明
paths
必需

路径支持具有本地或云路径的文件或文件夹。 假定相对本地文件路径相对于当前工作目录。 如果本地文件路径相对于的父目录不是当前工作目录,则建议将该路径作为绝对文件路径传递。

invalid_lines
必需
str

如何处理 JSON 无效的行,可以是“drop”或“error”。 如果删除了“drop”无效行,则引发错误。

encoding
必需

使用枚举 MLTableFileEncoding指定文件编码。 支持的文件编码:

  • utf8 为“utf8”、“utf-8”、“utf-8 bom”
  • iso88591 为“iso88591”或“iso-8859-1”
  • latin1 为“latin1”或“latin-1”
  • utf16 作为“utf16”或“utf-16”
  • windows1252 作为“windows1252”或“windows-1252”
include_path_column
必需

将路径信息保留为列,在读取多个文件时非常有用,并且想要知道特定记录来自哪个文件,或保留可能存储在文件路径中的有用信息。

返回

类型 说明

MLTable

注解

必须有有效的路径字典


   # load mltable from local JSON paths
   from mltable import from_json_lines_files
   paths = [{'file': './samples/mltable_sample/sample_data.jsonl'}]
   mltable = from_json_lines_files(paths)

from_parquet_files

从给定的 parquet 文件列表创建 MLTable。

from_parquet_files(paths, include_path_column=False)

参数

名称 说明
paths
必需

路径支持具有本地或云路径的文件或文件夹。 假定相对本地文件路径相对于当前工作目录。 如果本地文件路径相对于的父目录不是当前工作目录,则建议将该路径作为绝对文件路径传递。

include_path_column
必需

将路径信息保留为列,在读取多个文件时非常有用,并且想要知道特定记录来自哪个文件,或保留可能存储在文件路径中的有用信息。

返回

类型 说明

MLTable 实例

注解

必须有有效的路径字典


   # load mltable from local parquet paths
   from mltable import from_parquet_files
   paths = [{'file': './samples/mltable_sample/sample.parquet'}]
   mltable = from_parquet_files(paths)

from_paths

从给定路径创建 MLTable。

from_paths(paths)

参数

名称 说明
paths
必需

路径支持具有本地或云路径的文件或文件夹。 假定相对本地文件路径相对于当前工作目录。 如果本地文件路径相对于的父目录不是当前工作目录,则建议将该路径作为绝对文件路径传递。

返回

类型 说明

MLTable 实例

注解

必须有有效的路径字典


   # load mltable from local paths
   from mltable import from_paths
   tbl = from_paths([{'file': "./samples/mltable_sample"}])

   # load mltable from cloud paths
   from mltable import load
   tbl = from_paths(
       [{'file': "https://<blob-storage-name>.blob.core.windows.net/<path>/sample_file"}])

load

加载给定 URI 中存在的 MLTable 文件(YAML)。

storage_options 支持“subscription”、“resource_group”、“workspace”或“location”的密钥。 所有必须找到 Azure 机器学习工作区。

load(uri, storage_options: dict = None, ml_client=None)

参数

名称 说明
uri
必需
str

uri 支持长格式数据存储 URI、存储 URI、本地路径或数据资产 URI 或数据资产短 URI

storage_options
必需

URI 是 AML 资产时的 AML 工作区信息

ml_client
必需

返回

类型 说明

MLTable

注解

给定 URI 中必须存在名为“MLTable”的有效 MLTable YAML 文件。


   # load mltable from local folder
   from mltable import load
   tbl = load('.\samples\mltable_sample')

   # load mltable from azureml datastore uri
   from mltable import load
   tbl = load(
       'azureml://subscriptions/<subscription-id>/
       resourcegroups/<resourcegroup-name>/workspaces/<workspace-name>/
       datastores/<datastore-name>/paths/<mltable-path-on-datastore>/')

   # load mltable from azureml data asset uri
   from mltable import load
   tbl = load(
         'azureml://subscriptions/<subscription-id>/
         resourcegroups/<resourcegroup-name>/providers/Microsoft.MachineLearningServices/
         workspaces/<workspace-name>/data/<data-asset-name>/versions/<data-asset-version>/')

   # load mltable from azureml data asset short uri
   from mltable import load
   from azure.ai.ml import MLClient
   from azure.identity import DefaultAzureCredential
   credential = DefaultAzureCredential()
   ml_client = MLClient(credential, <subscription_id>, <resourcegroup-name>, <workspace-name>)
   tbl = load('azureml:<data-asset-name>:<version>', ml_client=ml_client)