使用Scala统计不同省份商品点击总数并排序

本示例演示如何使用Scala语言,根据不同省份商品的点击数据,统计每个省份的商品点击总数并按升序排序输出。

数据格式

数据存放到Map集合中,具体格式如下:

Map( (('吉林','玉米'), 2),  (('吉林','袜子'), 10),  (('河南','山药'), 18),  (('河南','鞋'), 3),  (('河南','衣服'), 9),  (('河北','箱包'), 11),  (('河北','鸭梨'), 5),  (('吉林','木耳'), 7) )

代码实现

object ClickCount {
  def main(args: Array[String]): Unit = {
    val data = Map(
      (('吉林','玉米'),2),
      (('吉林','袜子'),10),
      (('河南','山药'),18),
      (('河南','鞋'),3),
      (('河南','衣服'),9),
      (('河北','箱包'),11),
      (('河北','鸭梨'),5),
      (('吉林','木耳'),7)
    )

    // 将数据格式转换为('省份','商品',点击数)的格式
    val newData = data.map{case ((province, product), clickCount) => (province, product, clickCount)}

    // 按省份进行分组
    val groupedData = newData.groupBy(_._1)

    // 统计每个省份所有商品的点击数量总数
    val clickCountByProvince = groupedData.mapValues(_.map(_._3).sum)

    // 按升序排序
    val sortedData = clickCountByProvince.toList.sortBy(_._2)

    // 输出结果
    println(clickCountByProvince)
    println(sortedData)
  }
}

输出结果

Map(河南 -> 30, 吉林 -> 19, 河北 -> 16)
List((河北,16), (吉林,19), (河南,30))

代码解释

  1. 数据转换: 使用map方法将原始数据格式转换为(省份, 商品, 点击数)的三元组格式。
  2. 分组: 使用groupBy方法按省份对数据进行分组。
  3. 统计总数: 使用mapValues方法,对每个省份的数据进行遍历,统计所有商品的点击总数。
  4. 排序: 使用sortBy方法对统计结果按点击总数进行升序排序。
  5. 输出结果: 打印统计结果和排序后的结果。

总结

本示例展示了如何使用Scala语言进行数据统计和排序操作。通过合理利用map, groupBy, mapValuessortBy等方法,可以轻松实现数据分析和处理。

Scala统计不同省份商品点击总数并排序

原文地址: https://www.cveoy.top/t/topic/kwfO 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录