В этой статье будут рассмотрены способы загрузки CSV-данных на языке программирования Python с помощью TensorFlow.
Библиотека TensorFlow предоставляет функцию make_csv_dataset(), которая используется для чтения данных и их использования в наших программах.
Загрузка одного файла CSV
Чтобы получить один файл данных CSV из URL-адреса, мы используем функцию Keras get_file. Здесь мы будем использовать набор данных Titanic.
Чтобы использовать это, мы добавляем следующие строки в наш код:
Python3
import
tensorflow as tf
from
tensorflow.keras
import
layers
import
pandas as pd
data_path
=
tf.keras.utils.get_file(
"data_train.csv"
,
"https://storage.googleapis.com/tf-datasets/titanic/train.csv"
)
data_train_tf
=
tf.data.experimental.make_csv_dataset(
data_path,
batch_size
=
10
,
label_name
=
'survived'
,
num_epochs
=
1
,
ignore_errors
=
True
,)
Теперь данные можно использовать как словарь, где ключ — это имя столбца, а значения — записи данных. Первый элемент в наборе данных — это наши столбцы данных; другой — данные этикетки. В нашем пакете данных каждое имя столбца/функции действует как ключ, и все значения в столбце являются его значением.
Python3
for
batch, label
in
data_train_tf.take(
1
):
for
key, value
in
batch.items():
(f
"{key:10s}: {value}"
)
Выход:
Загрузка нескольких файлов CSV
Основное использование метода make_csv_dataset можно увидеть, когда нам нужно импортировать несколько файлов CSV в наш набор данных. Мы будем использовать набор данных шрифтов, который содержит шрифты для разных языков.
Пример. В этом примере мы используем функцию Keras get_file для чтения нескольких наборов данных на диск, а cache_dir и cache_subdir определяют, где их хранить.
После сохранения наборов данных с помощью команды file_pattern в нашем наборе данных make_csv_data мы можем указать путь ко всем файлам для импорта. Создайте новый файл и выполните следующий код:
Python3
fonts
=
tf.keras.utils.get_file(
'fonts.zip'
,
"https://archive.ics.uci.edu/ml/machine-learning-databases/00417/fonts.zip"
,
cache_dir
=
'.'
, cache_subdir
=
'fonts'
,
extract
=
True
)
fonts_data
=
tf.data.experimental.make_csv_dataset(
file_pattern
=
"fonts/*.csv"
,
batch_size
=
10
, num_epochs
=
1
,
num_parallel_reads
=
4
,
shuffle_buffer_size
=
10000
)
for
features
in
fonts_data.take(
1
):
for
i, (name, value)
in
enumerate
(features.items()):
if
i >
15
:
break
(f
"{name:20s}: {value}"
)
(f
"[total: {len(features)} features]"
)
Мы отображаем первые 15 функций каждого набора данных и их значения. Окончательный подсчет общего признака отображается с помощью функции len(). В этом примере у нас всего 412 функций.
Выход: