电影评分分析
数据
原始数据展示
原始数据是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和评分平均值-实现