如何有效地将大型DataFrame列作为值列表发送到函数



我试图在DataFrame列上找到一个统计数据(基尼系数),在该列中,我需要将特定列的所有值传递给函数,以便计算统计数据(Gini系数)。

在这里,统计函数需要"值列表"并返回整数。为了从DataFrame列中收集值列表,我尝试了以下两种方法。

方法1:

  1. 从DataFrame中选择列
  2. 将其隐藏到RDD
  3. 将每个值映射到(1,value)
  4. groupByKey聚合所有值
  5. 将聚合值发送到统计函数以计算统计值

方法2:

  1. 从DataFrame中选择列
  2. 将其隐藏到RDD
  3. 执行收集操作以聚合值
  4. 将聚合值发送到统计函数以计算统计值

但这两种方法似乎都很慢。

你能分享一下建议或其他有效的方法吗。

谨致问候,Neeraj

如果数据经过排序,既没有负数也没有零,则可以使用本页中描述的第三个公式计算基尼系数:

http://www.statsdirect.com/help/default.htm#nonparametric_methods/gini.htm

Python实现可在https://github.com/oliviaguest/gini.

使用数据帧的df.groupBy().sum()运算来计算和是容易的。

相关内容

  • 没有找到相关文章

最新更新