2017-03-10 58 views
0

我正在使用PySpark。 rdd有一個有浮點值的列,其中一些行缺失。缺少的行只是空字符串''。計算pyspark rdd中包含缺失值的列的平均值和中值

現在,我想寫空列的位置的列的的平均值和中位數,但我該如何計算平均值?

由於rdd.mean()函數不適用於包含空字符串的浮動列。

import numpy as np 

def replaceEmpty(x): 
    if x=='': 
     x = np.nan 
    return x 

def fillNA(x): 
    mu = np.nanmean(np.array(x)) 
    if x==np.nan: 
     x = mu 
    return x  

data = data.map(lambda x: replaceEmpty(x))  
data = data.map(lambda x: fillNA(x)) 

但這種方法並沒有真正的工作!

回答

0

解決了它最後使用: Fill Pyspark dataframe column null values with average value from same column

我用來代替SparkContext sqlContext。以前,我用的是:

data = sc.textFile('all_data_col5.txt') 

我改變了到:

data = sqlContext.read.format('com.databricks.spark.csv').options(header=True, inferSchema=False).schema(df_schema).load('all_data_col5.csv') 

因爲,sqlContext似乎有更多的功能來處理NA值。