当前位置: 首页>>代码示例 >>用法及示例精选 >>正文


Python tf.data.experimental.CsvDataset用法及代码示例


包含来自一个或多个 CSV 文件的行的数据集。

继承自:Dataset

用法

tf.data.experimental.CsvDataset(
    filenames, record_defaults, compression_type=None, buffer_size=None,
    header=False, field_delim=',', use_quote_delim=True,
    na_value='', select_cols=None, exclude_cols=None
)

参数

  • filenames 包含一个或多个文件名的tf.string 张量。
  • record_defaults CSV 字段的默认值列表。列表中的每个项目或者是有效的 CSV DType(float32、float64、int32、int64、字符串),或者是具有上述类型之一的 Tensor 对象。每列一个 CSV 数据,如果是可选的,则为该列的标量 Tensor 默认值,或者如果需要,则为 DType 或空的 Tensor。如果同时指定了 this 和 select_columns,则它们必须具有相同的长度,并且假定 column_defaults 是按列索引递增的顺序排序的。如果同时指定了 this 和 'exclude_cols',则 record_defaults 和 exclude_cols 的长度总和应等于 CSV 文件中的总列数。
  • compression_type (可选。)tf.string 标量评估为 ""(无压缩)、"ZLIB""GZIP" 之一。默认为无压缩。
  • buffer_size (可选。)tf.int64 标量,表示读取文件时要缓冲的字节数。默认为 4MB。
  • header (可选。)tf.bool 标量,指示 CSV 文件是否具有在解析时应跳过的标题行。默认为 False
  • field_delim (可选。)tf.string 标量包含分隔记录中的字段的分隔符。默认为 ","
  • use_quote_delim (可选。)tf.bool 标量。如果 False ,将双引号视为字符串字段中的常规字符(忽略 RFC 4180,第 2 节,第 5 条)。默认为 True
  • na_value (可选。)tf.string 标量,指示将被视为 NA/NaN 的值。
  • select_cols (可选。)要从输入数据中选择的列索引的排序列表。如果指定,将仅解析此列子集。默认解析所有列。最多可以指定select_colsexclude_cols 之一。
  • exclude_cols (可选。)要从输入数据中排除的列索引的排序列表。如果指定,则仅解析这组列的补集。默认解析所有列。最多可以指定select_colsexclude_cols 之一。

抛出

  • InvalidArgumentError 如果 exclude_cols 不是 None 并且 len(exclude_cols) + len(record_defaults) 与文件中的总列数不匹配

属性

  • element_spec 此数据集元素的类型规范。
    dataset = tf.data.Dataset.from_tensor_slices([1, 2, 3])
    dataset.element_spec
    TensorSpec(shape=(), dtype=tf.int32, name=None)

    如需更多信息,请阅读本指南。

tf.data.experimental.CsvDataset 类提供了一个最小的 CSV 数据集接口。还有一个更丰富的tf.data.experimental.make_csv_dataset函数,它提供了额外的便利函数,如列标题解析、列type-inference、自动洗牌和文件交错。

该数据集的元素对应于文件中的记录。 CSV 文件应采用 RFC 4180 格式 (https://tools.ietf.org/html/rfc4180) 请注意,我们允许 int 或 float 字段的前导和尾随空格。

例如,假设我们有一个文件 'my_file0.csv',其中包含四个不同数据类型的 CSV 列:

with open('/tmp/my_file0.csv', 'w') as f:
  f.write('abcdefg,4.28E10,5.55E6,12\n')
  f.write('hijklmn,-5.3E14,,2\n')

我们可以从它构造一个 CsvDataset,如下所示:

dataset = tf.data.experimental.CsvDataset(
  "/tmp/my_file0.csv",
  [tf.float32,  # Required field, use dtype or empty tensor
   tf.constant([0.0], dtype=tf.float32),  # Optional field, default to 0.0
   tf.int32,  # Required field, use dtype or empty tensor
  ],
  select_cols=[1,2,3]  # Only parse last three columns
)

其迭代的预期输出为:

for element in dataset.as_numpy_iterator():
  print(element)
(4.28e10, 5.55e6, 12)
(-5.3e14, 0.0, 2)

参看https://www.tensorflow.org/tutorials/load_data/csv#tfdataexperimentalcsvdataset更多in-depth示例用法。

相关用法


注:本文由纯净天空筛选整理自tensorflow.org大神的英文原创作品 tf.data.experimental.CsvDataset。非经特殊声明,原始代码版权归原作者所有,本译文未经允许或授权,请勿转载或复制。