Pyspark通过RDD操作后,获得个dataframe,我经常需要看看其中一列的中位数、平均数、标准差、最大值
下面代码对数据df的A列进行了统计分析,计算出三个指标
import numpy as np df_stats =df.select( _mean(col('A')).alias('mean'), _stddev(col('A')).alias('std') ).collect() mean = df_stats[0]['mean'] std = df_stats[0]['std'] medial = np.median(df.select('A').collect()) print('\n') print('结果均值:%.2f'% mean)) print('中位数:%.2f'% medial)) print('标准差:%.2f'% std))
下面代码提供了4中方法获取数据df的A列的最大值
# Method 1: Use describe() float(df.describe("A").filter("summary = 'max'").select("A").first().asDict()['A']) # Method 2: Use SQL df.registerTempTable("df_table") spark.sql("SELECT MAX(A) as maxval FROM df_table").first().asDict()['maxval'] # Method 3: Use groupby() df.groupby().max('A').first().asDict()['max(A)'] # Method 4: Convert to RDD df.select("A").rdd.max()[0]
发表回复