Python 计算pyspark rdd中包含缺失值的列的平均值和中值
我正在使用PySpark。rdd有一个包含浮点值的列,其中缺少一些行。缺少的行只是空字符串“” 现在,我想将列的平均值和中位数写在空字符串的位置,但是如何计算平均值呢 因为rdd.mean()函数不能处理包含空字符串的浮动列Python 计算pyspark rdd中包含缺失值的列的平均值和中值,python,numpy,lambda,pyspark,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))
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))
但这种方法并没有真正起作用 最终使用以下方法解决了此问题:
我使用了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值