# 1-9 统计不同类型(中国菜、美式、墨西哥)的餐厅类型及数量
df9 = df.select(explode(split(df.categories, ', ')).alias('category')) \
.where((col('category')=='Chinese') | (col('category').like('American%')) | (col('category')=='Mexican')) \
.groupBy(col('category')) \
.agg(count(col('category')).alias('count')) \
.show()
# 1-10 统计不同类型(中国菜、美式、墨西哥)的餐厅的评论数量
df10_1 = df \
.select(col('name'),col('categories'),col('review_count')) \
.where("categories like '%Chinese%'") \
.agg(sum("review_count")) \
.withColumnRenamed("sum(review_count)","sum_Chinese") \
.show()
df10_2 = df \
.select(col('name'),col('categories'),col('review_count')) \
.where("categories like '%Mexican%'") \
.agg(sum("review_count")) \
.withColumnRenamed("sum(review_count)", "sum_Mexican") \
.show()
df10_3 = df \
.select(col('name'),col('categories'),col('review_count')) \
.where("categories like '%American%'") \
.agg(sum("review_count")) \
.withColumnRenamed("sum(review_count)", "sum_American") \
.show()
# 1-11 统计不同类型(中国菜、美式、墨西哥)的餐厅的评分分布
# 建立三张表,分别有1—5分的评分对应数量
# 中国菜
df11_1 = df \
.select(col('categories'),col("stars")) \
.where("categories like '%Chinese%'") \
.groupBy("stars") \
.agg(count("stars")) \
.withColumnRenamed("stars","stars_Chinese") \
.orderBy(col('stars_Chinese').desc()) \
.show()
# 墨西哥
df11_2 = df \
.select(col('categories'),col("stars")) \
.where("categories like '%Mexican%'") \
.groupBy("stars") \
.agg(count("stars")) \
.withColumnRenamed("stars","stars_Mexican") \
.orderBy(col('stars_Mexican').desc()) \
.show()
# 美式
df11_3 = df \
.select(col('categories'),col("stars")) \
.where("categories like '%American%'") \
.groupBy("stars") \
.agg(count("stars")) \
.withColumnRenamed("stars","stars_American") \
.orderBy(col('stars_American').desc()) \
.show()
# 文章中出现的df,请查看第一章节即可知晓。
"""
如果通过上述文章未能解决你的问题,请联系QQ:1491284097,请注明来意,将协助你解决问题。
"""