计算包含缺失值的pyspark rdd中列的平均值和中位数

时间:2017-03-10 22:12:57

标签: python numpy lambda pyspark

我正在使用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))

但这种方法并没有真正起作用!

1 个答案:

答案 0 :(得分:0)

最终解决了它: Fill Pyspark dataframe column null values with average value from same column

我使用sqlContext而不是SparkContext。以前,我在使用:

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值。