Как оптимизировать процентную проверку и сброс столбцов в большом фрейме данных pyspark? - PullRequest
1 голос
/ 24 октября 2019

У меня есть образец кадра данных панд, как показано ниже. Но мои реальные данные 40 million rows and 5200 columns

 df = pd.DataFrame({
'subject_id':[1,1,1,1,2,2,2,2,3,3,4,4,4,4,4],
'readings' : ['READ_1','READ_2','READ_1','READ_3',np.nan,'READ_5',np.nan,'READ_8','READ_10','READ_12','READ_11','READ_14','READ_09','READ_08','READ_07'],
 'val' :[5,6,7,np.nan,np.nan,7,np.nan,12,13,56,32,13,45,43,46],
 })

from pyspark.sql.types import *
from pyspark.sql.functions import isnan, when, count, col

mySchema = StructType([ StructField("subject_id", LongType(), True)\
                       ,StructField("readings", StringType(), True)\
                       ,StructField("val", FloatType(), True)])

spark_df = spark.createDataFrame(df,schema=mySchema)

spark_df.select([((count(when(isnan(c)|col(c).isNull(), c))/spark_df.count())*100).alias(c) for c in spark_df.columns]).show()

Приведенный выше код помогает мне получить percentage of nulls/nan in each column. Но когда я запускаю то же самое для моих реальных данных, код выполняется долгое время, но пока не выводится. Как мне оптимизировать этот поиск и отбросить столбцы с 80% пустых значений / нан? * ОБНОВЛЕННЫЙ СКРИНШОТ

enter image description here

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