pyspark .mean()和.avg()方法之间的区别是什么?

mzmfm0qo  于 2022-11-01  发布在  Spark
关注(0)|答案(1)|浏览(501)

目前,我正在使用PySpark分析一些数据。我有一个包含工资数据的CSV文件。我想知道什么工作的工资最高。为此,我需要中位数(),因为我想知道平均值。
Pyspark中groupBy的方法如下:第一个月第一次
当我尝试.mean()方法时,它看起来像这样:

mean_pay_data = reduced_data.groupBy("JOB_TITLE").mean("REGULAR_PAY")
mean_pay_data.show(3)

# +--------------------+-----------------+

# |           JOB_TITLE| avg(REGULAR_PAY)|

# +--------------------+-----------------+

# |SENIOR SECURITY O...|59818.79285751433|

# |SENIOR TRAFFIC SU...| 72116.8394540951|

# |AIR CONDITIONING ...|98415.21726190476|

# +--------------------+-----------------+

以下是使用.avg()方法时的外观:

average_pay_data = reduced_data.groupBy("JOB_TITLE").avg("REGULAR_PAY")
average_pay_data.show(3)

# +--------------------+-----------------+

# |           JOB_TITLE| avg(REGULAR_PAY)|

# +--------------------+-----------------+

# |SENIOR SECURITY O...|59818.79285751433|

# |SENIOR TRAFFIC SU...| 72116.8394540951|

# |AIR CONDITIONING ...|98415.21726190476|

# +--------------------+-----------------+

它们返回完全相同的值。mean()avg()有什么区别?
我还想找到中位数,这样一个人就不会有太大的影响。由于PySpark中没有 median() 方法,我不知道这里该怎么做。

jxct1oxe

jxct1oxe1#

avgmean文档都说明了这一点:
mean()avg()的别名
这两个函数是相同的。两个名称都是需要的,这样来自不同背景的开发人员会感到舒服。
关于中位数:

  • 近似(有效)中位数:F.expr('percentile_approx(col_name, .5) over()')
  • 准确(无效)中值:F.expr('percentile(col_name, .5) over()')

相关问题