PySpark: разделите фрейм данных на основе значений столбцов и сохраните результирующие фреймы данных в списке - PullRequest
0 голосов
/ 14 февраля 2019

У меня есть фрейм данных pyspark с 4 столбцами: город, время года, переменная погоды, переменная_значение.Я должен разделить кадр на раздел для различных комбинаций города, сезона, weather_variable.После этого я буду применять k-means для этих разделов.

Я использую следующий код для создания разделов:

a = df_in.select('city', 'season', 'variable').distinct().toPandas().as_matrix()
dfArray = [df_in.filter("city = '{}' and season = '{}' and variable = '{}'".format(x[0], x[1], x[2])) for x in a]

Но проблема в том, что процессочень медленно, так как он использует фильтр итеративно.Может кто-нибудь предложить способ сделать процесс более эффективным.Может помочь что-то вроде groupby.

Ниже приведена версия кода Python, которую я хочу преобразовать в pyspark:

from sklearn.cluster import KMeans

def k_means_on_partition(group):

    v = group['variable_value']
    kmeans = KMeans(n_clusters = 7)

    kmeans.fit(v.values.reshape(-1, 1)) 
    group['cluster'] = kmeans.labels_

    return group


df_out = df_in.groupby(['city', 'season', 'variable']).apply(k_means_on_partition)        

Кроме того, для pyspark я буду использовать pyspark.мл вместо склеарн.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...