将 CSV 文件读入数据集。
用法
tf.data.experimental.make_csv_dataset(
file_pattern, batch_size, column_names=None, column_defaults=None,
label_name=None, select_columns=None, field_delim=',',
use_quote_delim=True, na_value='', header=True, num_epochs=None,
shuffle=True, shuffle_buffer_size=10000, shuffle_seed=None,
prefetch_buffer_size=None, num_parallel_reads=None, sloppy=False,
num_rows_for_inference=100, compression_type=None, ignore_errors=False
)
参数
-
file_pattern
包含 CSV 记录的文件或文件路径模式的列表。有关模式规则,请参见tf.io.gfile.glob
。 -
batch_size
一个 int 表示要在单个批次中组合的记录数。 -
column_names
按顺序对应于 CSV 列的可选字符串列表。输入记录的每列一个。如果未提供,则从记录的第一行推断列名。这些名称将是每个数据集元素的特征字典的键。 -
column_defaults
CSV 字段的默认值的可选列表。输入记录的每个选定列一个项目。列表中的每个项目或者是有效的 CSV dtype(float32、float64、int32、int64 或 string),或者是具有上述类型之一的Tensor
。张量可以是标量默认值(如果列是可选的),也可以是空张量(如果需要列)。如果提供了 dtype 而不是张量,则该列也将根据需要进行处理。如果未提供此列表,则尝试根据读取指定文件的前 num_rows_for_inference 行来推断类型,并假定所有列都是可选的,对于数值默认为0
,对于字符串值默认为""
。如果同时指定了 this 和select_columns
,则它们必须具有相同的长度,并且假定column_defaults
是按列索引递增的顺序排序的。 -
label_name
与标签列对应的可选字符串。如果提供,此列的数据将作为单独的Tensor
从特征字典返回,以便数据集符合tf.Estimator.train
或tf.Estimator.evaluate
输入函数预期的格式。 -
select_columns
整数索引或字符串列名的可选列表,指定要选择的 CSV 数据列的子集。如果提供了列名,则这些必须对应于column_names
中提供的名称或从文件标题行推断的名称。指定此参数时,将仅解析和返回与指定列相对应的 CSV 列的子集。使用它会导致更快的解析和更低的内存使用。如果同时指定了 this 和column_defaults
,则它们必须具有相同的长度,并且假设column_defaults
是按列索引递增的顺序排序的。 -
field_delim
可选的string
。默认为","
。用于分隔记录中的字段的字符分隔符。 -
use_quote_delim
一个可选的布尔值。默认为True
。如果为 false,则将双引号视为字符串字段内的常规字符。 -
na_value
识别为 NA/NaN 的附加字符串。 -
header
一个布尔值,指示提供的 CSV 文件的第一行是否对应于具有列名的标题行,并且不应包含在数据中。 -
num_epochs
指定此数据集重复次数的 int。如果没有,则永远循环遍历数据集。 -
shuffle
一个布尔值,指示输入是否应该被打乱。 -
shuffle_buffer_size
用于洗牌的缓冲区大小。较大的缓冲区大小可确保更好的洗牌,但会增加内存使用和启动时间。 -
shuffle_seed
用于洗牌的随机化种子。 -
prefetch_buffer_size
一个 int 指定要预取以提高性能的特征批次的数量。推荐值是每个训练步骤消耗的批次数。默认为auto-tune。 -
num_parallel_reads
用于从文件中读取 CSV 记录的线程数。如果>1,结果将被交错。默认为1
。 -
sloppy
如果True
,读取性能将以非确定性排序为代价来提高。如果False
,则生成的元素的顺序在洗牌之前是确定的(如果shuffle=True
,元素仍然是随机的。请注意,如果设置了种子,那么洗牌后的元素顺序是确定的)。默认为False
。 -
num_rows_for_inference
如果未提供record_defaults,则用于类型推断的文件行数。如果为 None,则读取所有文件的所有行。默认为 100。 -
compression_type
(可选。)tf.string
标量评估为""
(无压缩)、"ZLIB"
或"GZIP"
之一。默认为无压缩。 -
ignore_errors
(可选。)如果True
,忽略 CSV 文件解析错误,例如格式错误的数据或空行,并继续下一个有效的 CSV 记录。否则,数据集会在遇到任何无效记录时引发错误并停止处理。默认为False
。
返回
-
一个数据集,其中每个元素都是一个(特征、标签)元组,对应于一批
batch_size
CSV 行。特征字典将特征列名称映射到包含相应列数据的Tensor
,标签是一个Tensor
,其中包含由label_name
指定的标签列的列数据。
抛出
-
ValueError
如果任何参数格式错误。
将 CSV 文件读入数据集,其中数据集的每个元素都是一个(特征、标签)元组,对应于一批 CSV 行。特征字典将特征列名称映射到包含相应特征数据的Tensor
,标签是包含批次标签数据的Tensor
。
默认情况下,CSV 文件的第一行应该是列出列名的标题。如果第一行不是标题,请设置 header=False
并使用 column_names
参数提供列名。
默认情况下,数据集会无限重复,每次都会重新排列顺序。可以通过设置 num_epochs
和 shuffle
参数来修改此行为。
例如,假设您有一个 CSV 文件,其中包含
Feature_A | Feature_B |
---|---|
1 | "a" |
2 | "b" |
3 | "c" |
4 | "d" |
# No label column specified
dataset = tf.data.experimental.make_csv_dataset(filename, batch_size=2)
iterator = ds.as_numpy_iterator()
print(dict(next(iterator)))
# prints a dictionary of batched features:
# OrderedDict([('Feature_A', array([1, 4], dtype=int32)),
# ('Feature_B', array([b'a', b'd'], dtype=object))])
# Set Feature_B as label column
dataset = tf.data.experimental.make_csv_dataset(
filename, batch_size=2, label_name="Feature_B")
iterator = ds.as_numpy_iterator()
print(next(iterator))
# prints (features, labels) tuple:
# (OrderedDict([('Feature_A', array([1, 2], dtype=int32))]),
# array([b'a', b'b'], dtype=object))
有关使用 make_csv_dataset
读取 CSV 数据的更多示例,请参阅加载 CSV 数据指南。
相关用法
- Python tf.data.experimental.make_saveable_from_iterator用法及代码示例
- Python tf.data.experimental.make_batched_features_dataset用法及代码示例
- Python tf.data.experimental.RandomDataset.group_by_window用法及代码示例
- Python tf.data.experimental.SqlDataset.enumerate用法及代码示例
- Python tf.data.experimental.SqlDataset.zip用法及代码示例
- Python tf.data.experimental.Counter用法及代码示例
- Python tf.data.experimental.SqlDataset.shard用法及代码示例
- Python tf.data.experimental.CsvDataset.window用法及代码示例
- Python tf.data.experimental.RandomDataset.cache用法及代码示例
- Python tf.data.experimental.SqlDataset.snapshot用法及代码示例
- Python tf.data.experimental.CsvDataset.apply用法及代码示例
- Python tf.data.experimental.DatasetInitializer用法及代码示例
- Python tf.data.experimental.ignore_errors用法及代码示例
- Python tf.data.experimental.unbatch用法及代码示例
- Python tf.data.experimental.RandomDataset.map用法及代码示例
- Python tf.data.experimental.CsvDataset.flat_map用法及代码示例
- Python tf.data.experimental.assert_cardinality用法及代码示例
- Python tf.data.experimental.CsvDataset.random用法及代码示例
- Python tf.data.experimental.save用法及代码示例
- Python tf.data.experimental.CsvDataset.cardinality用法及代码示例
注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.data.experimental.make_csv_dataset。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。