Pyspark 获取spark.dataframe一列数据的平均数、中位数、标准差、最大值

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]

The End


已发布

分类

标签:

评论

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注