我试图在DataFrame
列上找到一个统计数据(基尼系数),在该列中,我需要将特定列的所有值传递给函数,以便计算统计数据(Gini系数)。
在这里,统计函数需要"值列表"并返回整数。为了从DataFrame列中收集值列表,我尝试了以下两种方法。
方法1:
- 从DataFrame中选择列
- 将其隐藏到RDD
- 将每个值映射到(1,value)
- groupByKey聚合所有值
- 将聚合值发送到统计函数以计算统计值
方法2:
- 从DataFrame中选择列
- 将其隐藏到RDD
- 执行收集操作以聚合值
- 将聚合值发送到统计函数以计算统计值
但这两种方法似乎都很慢。
你能分享一下建议或其他有效的方法吗。
谨致问候,Neeraj
如果数据经过排序,既没有负数也没有零,则可以使用本页中描述的第三个公式计算基尼系数:
http://www.statsdirect.com/help/default.htm#nonparametric_methods/gini.htm
Python实现可在https://github.com/oliviaguest/gini.
使用数据帧的df.groupBy().sum()
运算来计算和是容易的。