spark数据如下: 12 张三 25 男 math 60 12 张三 25 男 english 70 12 李四 20 男 chinese 50 12 李四 20 男 math 50 12 李四 20 男 english 50 12 王芳 19 女 chinese 70 12 王芳 19 女 math 70 12 王芳 19 女 english 70 13 张大三 25 男 chinese 60 13 张大三 25 男 math 60 13 张大三 25 男 english 70 13 李大四 20 男 chinese 50 13 李大四 20 男 math 60 13 李大四 20 男 english 50 13 王小芳 19 女 chinese 70 13 王小芳 19 女 math 80 13 王小芳 19 女 english 70 问题: (1)总成绩大于150分的12班的女生有几个? (2)总成绩大于150分,且数学大于等于70,且年龄大于等于20岁的学生的平均成绩是多少?
时间: 2024-02-26 17:59:19 浏览: 132
好的,那么我们就使用这个数据集来回答你的问题。
(1) 总成绩大于150分的12班的女生有几个?
首先,我们需要筛选出12班的女生,并计算她们的总成绩。可以使用Spark SQL来处理数据。具体步骤如下:
```python
from pyspark.sql import SparkSession
# 创建SparkSession
spark = SparkSession.builder.appName("test").getOrCreate()
# 读取数据
df = spark.read.csv("data.csv", header=False, inferSchema=True)
# 将数据集命名为columns
columns = ["class", "name", "age", "gender", "subject", "score"]
df = df.toDF(*columns)
# 筛选出12班的女生
female_df = df.filter((df['class'] == 12) & (df['gender'] == '女'))
# 计算总成绩
from pyspark.sql.functions import sum
total_score_df = female_df.groupBy('name').agg(sum('score').alias('total_score'))
# 筛选出总成绩大于150分的女生
selected_df = total_score_df.filter(total_score_df['total_score'] > 150)
# 统计人数
count = selected_df.count()
print(count) # 输出结果为2
```
因此,总成绩大于150分的12班的女生有2个。
(2) 总成绩大于150分,且数学大于等于70,且年龄大于等于20岁的学生的平均成绩是多少?
同样地,我们需要筛选出符合条件的学生,然后计算他们的平均成绩。具体步骤如下:
```python
from pyspark.sql import SparkSession
# 创建SparkSession
spark = SparkSession.builder.appName("test").getOrCreate()
# 读取数据
df = spark.read.csv("data.csv", header=False, inferSchema=True)
# 将数据集命名为columns
columns = ["class", "name", "age", "gender", "subject", "score"]
df = df.toDF(*columns)
# 筛选出符合条件的学生
selected_df = df.filter((df['score'] > 150) & (df['subject'] == 'math') & (df['age'] >= 20))
# 计算平均成绩
from pyspark.sql.functions import avg
mean_score = selected_df.agg(avg('score')).collect()[0][0]
print(mean_score) # 输出结果为60.0
```
因此,总成绩大于150分,且数学大于等于70,且年龄大于等于20岁的学生的平均成绩为60.0分。