在scala实现对rating.csv文件操作,统计每部电影的评分人数,对评分人数进行排序,在movies.csv文件中过滤出评分人数最多的电影名称
时间: 2023-11-22 20:55:42 浏览: 77
以下是实现代码:
```scala
import scala.io.Source
// 读取rating.csv文件,统计每部电影的评分人数
val ratingFile = Source.fromFile("rating.csv")
val ratingLines = ratingFile.getLines().toList
val ratingCounts = ratingLines.tail.map(line => line.split(",")(1)).groupBy(identity).mapValues(_.size)
// 对评分人数进行排序
val sortedCounts = ratingCounts.toSeq.sortBy(_._2).reverse
// 读取movies.csv文件,过滤出评分人数最多的电影名称
val moviesFile = Source.fromFile("movies.csv")
val moviesLines = moviesFile.getLines().toList
val movieNames = moviesLines.tail.map(line => {
val fields = line.split(",")
(fields(0), fields(1))
}).toMap
val topMovieId = sortedCounts.head._1
val topMovieName = movieNames(topMovieId)
println("评分人数最多的电影名称:" + topMovieName)
```
代码逻辑:
1. 首先读取rating.csv文件,使用tail方法跳过第一行表头,然后对每行数据取出电影ID,使用groupBy方法统计每部电影的评分人数。
2. 对评分人数进行排序,使用toSeq方法将Map转换为Seq,然后使用sortBy方法按照评分人数降序排序。
3. 读取movies.csv文件,使用tail方法跳过第一行表头,然后将每行数据的电影ID和电影名称存储到一个Map中。
4. 取出评分人数最多的电影ID,使用Map的apply方法获取对应的电影名称。
5. 打印评分人数最多的电影名称。
阅读全文