2017-03-10 57 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值。