В модуле python h2o, как указать na_strings при использовании h2o.import_sql_select() для импорта данных?

Я пытаюсь импортировать данные из таблицы mysql в H2oFrame, используя h2o.import_sql_select(). Я бы хотел, чтобы NULL или пустые значения в столбцах VARCHAR в базе данных распознавались как NA при импорте в H2oFrame, но они рассматриваются как пустые строковые литералы. Однако для числовых столбцов значения NULL автоматически распознаются как NA.

Вот код, который у меня есть:

select_query = 'SELECT * FROM my_table'
train_data = h2o.import_sql_select("jdbc:mysql://localhost:3306/my_schema", select_query, "username", "password", use_temp_table=False)

train_data['my_string_column'].isna() всегда приводит к нулям даже для NULL или пустых значений, поступающих из базы данных.

Однако, когда я выгружаю данные в CSV и импортирую их с помощью h2o.import_file('/path/to/file.csv', na_strings=['']), а затем делаю train_data['my_string_column'].isna(), я вижу, что пустые значения правильно распознаются как NA из-за параметра na_strings.

Есть ли способ указать na_strings или какой-либо другой обходной путь для достижения ожидаемого поведения при импорте данных с использованием h2o.import_sql_select()?

Почему в Python есть оператор "pass"?
Почему в Python есть оператор "pass"?
Оператор pass в Python - это простая концепция, которую могут быстро освоить даже новички без опыта программирования.
Некоторые методы, о которых вы не знали, что они существуют в Python
Некоторые методы, о которых вы не знали, что они существуют в Python
Python - самый известный и самый простой в изучении язык в наши дни. Имея широкий спектр применения в области машинного обучения, Data Science,...
Основы Python Часть I
Основы Python Часть I
Вы когда-нибудь задумывались, почему в программах на Python вы видите приведенный ниже код?
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
LeetCode - 1579. Удаление максимального числа ребер для сохранения полной проходимости графа
Алиса и Боб имеют неориентированный граф из n узлов и трех типов ребер:
Оптимизация кода с помощью тернарного оператора Python
Оптимизация кода с помощью тернарного оператора Python
И последнее, что мы хотели бы показать вам, прежде чем двигаться дальше, это
Советы по эффективной веб-разработке с помощью Python
Советы по эффективной веб-разработке с помощью Python
Как веб-разработчик, Python может стать мощным инструментом для создания эффективных и масштабируемых веб-приложений.
0
0
76
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

В настоящее время такая функция не реализована. Это просто потому, что в отличие от CSV, где нет разницы между пустой строкой и NULL, SQL имеет понятие NULL, поэтому такая функция не кажется необходимой.

Но вы говорите, что для строковых столбцов вы не получаете никаких значений N/A в своем кадре H2O, что звучит как ошибка, и я посмотрю на это.

Хонза, мне жаль, что возникла проблема с моим оператором SQL, и я был введен в заблуждение (приведенный мной пример был создан для иллюстрации, поскольку я не могу раскрыть свой настоящий SQL, который очень сложен). Я попробовал более простой импорт и смог подтвердить, что проблема не в H2O. Значения NULL фактически распознаются как NA. Просто при предварительном просмотре кадра H2O на консоли Python нет различий между NA и пустыми значениями для строковых столбцов. Принимая во внимание, что для числовых столбцов NA явно печатаются как «nan». Хотя в этом есть смысл.

Prashanth Sg 12.06.2019 05:09

Другие вопросы по теме