案例分析-电影评分分析

数据

原始数据展示

原始数据是json数据,大约有100万条数据,样例数据如下:

{"movie":"608","rate":"4","timeStamp":"978301398","uid":"1"}
{"movie":"1246","rate":"4","timeStamp":"978302091","uid":"1"}
{"movie":"1357","rate":"5","timeStamp":"978298709","uid":"2"}
{"movie":"3068","rate":"4","timeStamp":"978299000","uid":"2"}
{"movie":"1537","rate":"4","timeStamp":"978299620","uid":"2"}
{"movie":"647","rate":"3","timeStamp":"978299351","uid":"2"}

json格式说明

json是一种常用的数据格式,广泛的适用于数据的存储和数据的传输。数据是使用大括号,冒号,双引号,中括号组成,这些元素是可以嵌套的。

  • {}表示一个对象
  • Key-value(中间使用冒号分割:)
  • 每一个key-value中间使用逗号分割
  • []中括号表示数组

数据字段含义

电影评分数据包含了电影id,电影评分,评论时间,用户id。

  • movie 电影的id
  • rate 电影评分
  • timestamp 评论时间
  • uid 用户id

需求

1.每个用户评分最高的10部电影评分信息(用户最喜爱的十部电影)

样例结果:

uid=1的前十条数据
{"movie":"1193","rate":"5","timeStamp":"978300760","uid":"1"}
{"movie":"2355","rate":"5","timeStamp":"978824291","uid":"1"}
{"movie":"1287","rate":"5","timeStamp":"978302039","uid":"1"}
{"movie":"2804","rate":"5","timeStamp":"978300719","uid":"1"}
。。。此处省略六条。。。
uid=2的前十条数据
{"movie":"1357","rate":"5","timeStamp":"978298709","uid":"2"}
{"movie":"2268","rate":"5","timeStamp":"978299297","uid":"2"}
{"movie":"648","rate":"4","timeStamp":"978299913","uid":"2"}
。。。此处省略n条数据。。。

2.每个用户的uid和评分的平均值。

样例结果:

uid=1	平均分=4.98
uid=2	平均分=4.39
uid=3	平均分=4.87
uid=4	平均分=4.98
uid=5	平均分=5.00
。。。此处省略n条数据。。。

3.最大方(评分平均值高)的n个用户的uid和评分平均值。

其实就是在问题2的基础上找出平均数比较高的前n条数据。
样例输出:

uid=5	平均分=5.00
uid=329	平均分=4.98
uid=23	平均分=4.95
uid=435	平均分=4.89
uid=324	平均分=4.89

4.最热门的10部电影id和评价次数。

热门的定义: 评论次数多的就是热门
样例输出数据:

movie=217	评论次数:737284
movie=2345	评论次数:733213
movie=748	评论次数:684372
。。。此处省略七条数据。。。

5.评价最高的10部电影id和评分均值

样例数据输出:

movie=5	平均分=5.00
movie=329	平均分=4.98
movie=23	平均分=4.95
movie=435	平均分=4.89
movie=324	平均分=4.89
。。。此处省略5条数据。。。

需求实现

json解析测试

json解析是把数据解析成对象,所以需要先创建json数据相对应的javabean
json对应的javaBean

package cn.pengpeng.day01.bean;

/**
 * json数据对应的javabean
 * @author pengpeng
 */
public class RateBean {
	//{"movie":"1193","rate":"5","timeStamp":"978300760","uid":"1"}
	private String movie;
	private int rate;
	private String timeStamp;
	private String uid;
	public String getMovie() {
		return movie;
	}
	public void setMovie(String movie) {
		this.movie = movie;
	}
	public int getRate() {
		return rate;
	}
	public void setRate(int rate) {
		this.rate = rate;
	}
	public String getTimeStamp() {
		return timeStamp;
	}
	public void setTimeStamp(String timeStamp) {
		this.timeStamp = timeStamp;
	}
	public String getUid() {
		return uid;
	}
	public void setUid(String uid) {
		this.uid = uid;
	}
	@Override
	public String toString() {
		return "RateBean [movie=" + movie + ", rate=" + rate + ", timeStamp=" + timeStamp + ", uid=" + uid + "]";
	}
}

测试fastjson使用

package cn.pengpeng.day01.test;

import com.alibaba.fastjson.JSON;

import cn.pengpeng.day01.bean.RateBean;

/**
 * 测试json数据,json和javabean相互转换
 */
public class TestJson {
	public static void main(String[] args) {
		String json = "{\"movie\":\"1193\",\"rate\":\"5\",\"timeStamp\":\"978300760\",\"uid\":\"1\"}";
		RateBean bean = JSON.parseObject(json, RateBean.class);
		System.out.println(bean);
		
		Object object = JSON.toJSON(bean);
		String string = object.toString();
		System.out.println(object);	
	}
}

1.每个用户评分最高的10部电影评分信息-实现


2.每个用户的uid和评分的平均值-实现


3.最大方(评分平均值高)的n个用户的uid和评分平均值-实现


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值