具有多个聚合的 pyspark groupBy(如 pandas)
pyspark groupBy with multiple aggregates (like pandas)
我是 pyspark 的新手,我正在尝试将我的 pandas 代码转换为 pyspark。我遇到的一件事是聚合我的 groupby。
这里是 pandas 代码:
df_trx_m = train1.groupby('CUSTOMER_NUMBER')['trx'].agg(['mean', 'var'])
我在 AnalyticsVidhya 上看到了这个例子,但我不确定如何将它应用到上面的代码中:
train.groupby('Age').agg({'Purchase': 'mean'}).show()
Output:
+-----+-----------------+
| Age| avg(Purchase)|
+-----+-----------------+
|51-55|9534.808030960236|
|46-50|9208.625697468327|
| 0-17|8933.464640444974|
|36-45|9331.350694917874|
|26-35|9252.690632869888|
| 55+|9336.280459449405|
|18-25|9169.663606261289|
+-----+-----------------+
非常感谢任何帮助
编辑:
这是另一个尝试:
from pyspark.sql.functions import avg, variance
train1.groupby("CUSTOMER_NUMBER")\
.agg(
avg('repatha_trx').alias("repatha_trx_avg"),
variance('repatha_trx').alias("repatha_trx_Var")
)\
.show(100)
但这只是给我一个空的数据框。
您可以导入 pyspark functions
来执行聚合。
# load function
from pyspark.sql import functions as F
# aggregate data
df_trx_m = train.groupby('Age').agg(
F.avg(F.col('repatha_trx')).alias('repatha_trx_avg'),
F.variance(F.col('repatha_trx')).alias('repatha_trx_var')
)
注意 pyspark.sql.functions.variance()
returns the population variance. There is another function pyspark.sql.functions.var_samp()
代表无偏样本方差。
我是 pyspark 的新手,我正在尝试将我的 pandas 代码转换为 pyspark。我遇到的一件事是聚合我的 groupby。
这里是 pandas 代码:
df_trx_m = train1.groupby('CUSTOMER_NUMBER')['trx'].agg(['mean', 'var'])
我在 AnalyticsVidhya 上看到了这个例子,但我不确定如何将它应用到上面的代码中:
train.groupby('Age').agg({'Purchase': 'mean'}).show()
Output:
+-----+-----------------+
| Age| avg(Purchase)|
+-----+-----------------+
|51-55|9534.808030960236|
|46-50|9208.625697468327|
| 0-17|8933.464640444974|
|36-45|9331.350694917874|
|26-35|9252.690632869888|
| 55+|9336.280459449405|
|18-25|9169.663606261289|
+-----+-----------------+
非常感谢任何帮助
编辑:
这是另一个尝试:
from pyspark.sql.functions import avg, variance
train1.groupby("CUSTOMER_NUMBER")\
.agg(
avg('repatha_trx').alias("repatha_trx_avg"),
variance('repatha_trx').alias("repatha_trx_Var")
)\
.show(100)
但这只是给我一个空的数据框。
您可以导入 pyspark functions
来执行聚合。
# load function
from pyspark.sql import functions as F
# aggregate data
df_trx_m = train.groupby('Age').agg(
F.avg(F.col('repatha_trx')).alias('repatha_trx_avg'),
F.variance(F.col('repatha_trx')).alias('repatha_trx_var')
)
注意 pyspark.sql.functions.variance()
returns the population variance. There is another function pyspark.sql.functions.var_samp()
代表无偏样本方差。