Как создать матрицу взаимодействия из очень большого кадра данных pyspark? ⇐ Python
-
Гость
Как создать матрицу взаимодействия из очень большого кадра данных pyspark?
У меня есть большой фрейм данных pyspark, содержащий два столбца: user_id и item_id. Я хочу создать матрицу взаимодействия из этого кадра данных, где каждая строка соответствует уникальному user_id, а каждый столбец представляет уникальные item_ids.
Я сделал это, выполнив следующий код:
matrix = sdf.groupby('user_id').pivot('item_id').count() Это довольно быстро, но потом я хочу подсчитать количество единиц и нулей в кадре данных, а это очень медленно.
zeros = sum([sdf.filter(col(c) == 0).count() for c в sdf.columns]) # медленно Есть ли способ сделать это быстрее? Я думал об использовании scipy.sparse.dok_matrix, но кажется, что единственный способ заполнить элементы матрицы — это использовать циклы for, что также будет довольно медленно.
У меня есть большой фрейм данных pyspark, содержащий два столбца: user_id и item_id. Я хочу создать матрицу взаимодействия из этого кадра данных, где каждая строка соответствует уникальному user_id, а каждый столбец представляет уникальные item_ids.
Я сделал это, выполнив следующий код:
matrix = sdf.groupby('user_id').pivot('item_id').count() Это довольно быстро, но потом я хочу подсчитать количество единиц и нулей в кадре данных, а это очень медленно.
zeros = sum([sdf.filter(col(c) == 0).count() for c в sdf.columns]) # медленно Есть ли способ сделать это быстрее? Я думал об использовании scipy.sparse.dok_matrix, но кажется, что единственный способ заполнить элементы матрицы — это использовать циклы for, что также будет довольно медленно.