當前位置: 首頁>>編程示例 >>用法及示例精選 >>正文


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。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。