Python 在apache spark中查找groupby之后的总计数和项目数
我需要找到每个Python 在apache spark中查找groupby之后的总计数和项目数,python,apache-spark,Python,Apache Spark,我需要找到每个类别的设备类型实体的平均数量 我已将数据读入csv文件,并从该csv文件中创建了一个数据框,其中包含类别和设备类型 我阅读了数据帧: test_df.groupby('category').count().show() 它显示“类别”列和“计数”列 如何获得: “类别”列中分组的项目总数,以及 计数列中所有项目的总和 我需要: 读这两个,然后 取计数列所有行中的项目总数,然后 除以“类别”列中的项目数 演示: >>> df.show() +--------
类别的设备类型
实体的平均数量
我已将数据读入csv文件,并从该csv文件中创建了一个数据框,其中包含类别
和设备类型
我阅读了数据帧:
test_df.groupby('category').count().show()
它显示“类别”列和“计数”列
如何获得:
- “类别”列中分组的项目总数,以及
- 计数列中所有项目的总和
- 读这两个,然后
- 取计数列所有行中的项目总数,然后
- 除以“类别”列中的项目数
>>> df.show()
+--------+---+
|category|val|
+--------+---+
| cat1| 13|
| cat2| 12|
| cat3| 23|
| cat1| 20|
| cat1| 10|
| cat2| 30|
| cat3| 11|
| cat1| 7|
+--------+---+
>>> res = df.groupBy('category').count()
>>> res.show()
+--------+-----+
|category|count|
+--------+-----+
| cat2| 2|
| cat3| 2|
| cat1| 4|
+--------+-----+
>>> res.groupBy().agg({"category":"count","count":"sum"}).show()
+----------+---------------+
|sum(count)|count(category)|
+----------+---------------+
| 8| 3|
+----------+---------------+
更新:
from pyspark.sql.functions import *
>>> res.groupBy() \
... .agg({"category":"count","count":"sum"}) \
... .withColumnRenamed("sum(count)","sum_cats") \
... .withColumnRenamed("count(category)","uniq_cats") \
... .select("uniq_cats","sum_cats",expr("sum_cats/uniq_cats as avg_cats")) \
... .show()
+---------+--------+------------------+
|uniq_cats|sum_cats| avg_cats|
+---------+--------+------------------+
| 3| 8|2.6666666666666665|
+---------+--------+------------------+
你能提供一个小的可复制数据集和期望的数据集(输出)吗?试图澄清你的问题,但仍然不清楚你想问什么。您的问题最初以“and”结尾,因此还不清楚您是否列出了要列出的步骤。感谢您提供的解决方案。你能帮我找出平均值吗?是总和/计数还是8/3。谢谢你能告诉我是否有任何中值函数用于上述数据吗?