Обработчик данных AWS | Ошибка индекса при создании отчета о качестве данных и аналитике из-за столбца массиваPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Обработчик данных AWS | Ошибка индекса при создании отчета о качестве данных и аналитике из-за столбца массива

Сообщение Anonymous »

Я использую сервис AWS Data Wrangler для подготовки некоторых данных для обучения модели машинного обучения.
У меня есть очень простой CSV-файл с 3 столбцами и 4 строками. >

Код: Выделить всё

State,Current,History
1,2.045301,[2.045236##2.045129##2.044966##2.044824##2.044693]
2,2.042885,[2.042911##2.042961##2.042934##2.042896##2.042937]
3,2.04281,[2.042844##2.042852##2.042832##2.042787##2.042769]
4,2.041843,[2.041854##2.041823##2.041828##2.041824##2.041769]

После преобразования столбца «История» в массив чисел с плавающей запятой или удвоения в отчете о качестве данных и аналитике появляются ошибки и просто сообщается: «Что-то пошло не так». Ошибка индекса
введите здесь описание изображения
CSV импортируется, и если я запускаю отчет или пытаюсь экспортировать данные, он сразу же работает. Однако мне нужно преобразовать строковые значения в столбце истории в массив, используя «##» в качестве разделителя.
Для этого у меня есть специальный шаг для преобразования этого столбца в множество. Я пробовал множество способов, и каждый раз визуально все выглядит нормально, но если я попытаюсь запустить отчет или экспортировать данные, я получаю сообщение об ошибке без особого объяснения причин.

Код: Выделить всё

from pyspark.sql.functions import col, split, expr

def transform_dataframe(df):
if "History" not in df.columns:
raise ValueError("Column 'History' not found in the DataFrame")

df = df.withColumn(
"History_Array",
expr("transform(split(substring(History, 2, length(History) - 2), '##'), x -> cast(x as double))")
)

return df

try:
df = transform_dataframe(df)
print("Transformation completed successfully")

print("\nNew column info:")
df.select("History_Array").show(5, truncate=False)
df.printSchema()
except Exception as e:
print(f"Error occurred: {str(e)}")

df

Последовательность действий обработчика данных
Как только я создаю новый столбец, содержащий массив, и удаляю исходный столбец, я выхожу из фрейма данных. Выглядит это так:

Код: Выделить всё

DataFrame Schema:
root
|-- State: long (nullable = true)
|-- Current: double (nullable = true)
|-- History_Array: array (nullable = true)
|    |-- element: double (containsNull = true)

Column names:
['State', 'Current', 'History_Array']

Sample rows:
+-----+--------+--------------------------------------------------+
|State|Current |History_Array                                     |
+-----+--------+--------------------------------------------------+
|1    |2.045301|[2.045236, 2.045129, 2.044966, 2.044824, 2.044693]|
|2    |2.042885|[2.042911, 2.042961, 2.042934, 2.042896, 2.042937]|
|3    |2.04281 |[2.042844, 2.042852, 2.042832, 2.042787, 2.042769]|
|4    |2.041843|[2.041854, 2.041823, 2.041828, 2.041824, 2.041769]|
+-----+--------+--------------------------------------------------+

Basic statistics for non-array columns:
+-------+------------------+--------------------+
|summary|             State|             Current|
+-------+------------------+--------------------+
|  count|                 4|                   4|
|   mean|               2.5|          2.04320975|
| stddev|1.2909944487358056|0.001472706663482...|
|    min|                 1|            2.041843|
|    max|                 4|            2.045301|
+-------+------------------+--------------------+

Info for column: History_Array
Data type: ArrayType(DoubleType(), True)
Array statistics:
+-------+------------+--------------------+--------------------+
|summary|array_length|           min_value|           max_value|
+-------+------------+--------------------+--------------------+
|  count|           4|                   4|                   4|
|   mean|         5.0|          2.04303175|          2.04322575|
| stddev|         0.0|0.001216792881581...|0.001429753446111...|
|    min|           5|            2.041769|            2.041854|
|    25%|           5|            2.041769|            2.041854|
|    50%|           5|            2.042769|            2.042852|
|    75%|           5|            2.042896|            2.042961|
|    max|           5|            2.044693|            2.045236|
+-------+------------+--------------------+--------------------+

Number of null arrays: 0
Number of empty arrays: 0
Number of arrays containing NaN elements: 0

Sample data for History_Array:
+--------------------------------------------------+
|History_Array                                     |
+--------------------------------------------------+
|[2.045236, 2.045129, 2.044966, 2.044824, 2.044693]|
|[2.042911, 2.042961, 2.042934, 2.042896, 2.042937]|
|[2.042844, 2.042852, 2.042832, 2.042787, 2.042769]|
|[2.041854, 2.041823, 2.041828, 2.041824, 2.041769]|
+--------------------------------------------------+

Total number of rows: 4
Logging completed successfully
Массив кажется правильно сформированным. Однако, когда я запускаю отчет, возникает ошибка. Изображение ошибки
Однако, если я удаляю столбец и затем запускаю отчет, ошибка не возникает.
Я видел, что вы можете иметь столбец массива с плавающей точкой или двойным массивом, поскольку сервис позволяет вам добавить функцию задержки такого типа, и на ее основе выполняются отчеты.
Поскольку это тест данные, которые в конечном итоге будут иметь гораздо большие массивы в каждом столбце, я не могу распределить их по отдельным столбцам.
Как я могу преобразовать свои данные, чтобы иметь столбец, содержащий массив чисел с плавающей запятой или двойных чисел, которые отчет не вылетает?

Подробнее здесь: https://stackoverflow.com/questions/790 ... ights-repo
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»