Значения NaN в корреляционной матрице Писпарк - PullRequest
0 голосов
/ 23 марта 2020

У меня есть фрейм данных, который состоит из числительных c и категориальных значений. Поэтому я делю числовые значения c и вменяю пропущенные значения

from pyspark.ml.feature import Imputer
imputer = Imputer(strategy='mean',inputCols=data.columns, 
    outputCols=["{}_imputed".format(c) for c in data.columns]
)
impdf = imputer.fit(data).transform(data)

import pandas as pd
import numpy as np

condition = lambda col: '_imputed' in col
new_df = impdf.select(*filter(condition, impdf.columns))

Я вменяю значения, используя «среднее». Затем я использую код ниже, чтобы увидеть, есть ли все еще нулевые значения

from pyspark.sql.functions import isnan, when, count, col
new_df.select([count(when(col(c).isNull(), c)).alias(c) for c in new_df.columns]).show(truncate = False, vertical = True)

Столбцы отображаются с 0, что означает, что пропущенных значений нет

Тем не менее, когда я вычисляю корреляцию, я получаю Значения NaN

corr_matrix = numeric_data.corr().abs()

# Select upper triangle of correlation matrix
upper = corr_matrix.where(np.triu(np.ones(corr_matrix.shape), k=1).astype(np.bool))

Что вызывает проблему

...