douban_comment_data.db中包含三个表:comment、movie、movie_chinese。三个表中的数据模块定义(DDL)如下:
1.comment
CREATE TABLE comment (
ID INTEGER PRIMARY KEY AUTOINCREMENT,
TIME TEXT NOT NULL,
MOVIEID TEXT NOT NULL,
RATING INT NOT NULL,
CONTENT TEXT NOT NULL,
CREATOR TEXT NOT NULL,
ADD_TIME TEXT NOT NULL
);
2.movie
CREATE TABLE movie (
ID TEXT PRIMARY KEY
NOT NULL,
NAME TEXT NOT NULL,
ADD_TIME TEXT NOT NULL
);
3.movie_chinese
CREATE TABLE movie_chinese (
ID TEXT PRIMARY KEY
NOT NULL,
NAME TEXT NOT NULL,
ADD_TIME TEXT NOT NULL
);
可以看出我们能从comment表里面得到电影的得分(rating)信息,能从movie或者movie_chinese中获取电影名字信息(name)。这样,我们就可以运用pandas读取数据库数据和一些简单的筛选、引用、求平均分的操作来实现标题的功能啦。
代码如下:
import sqlite3
import pandas as pd
movie_id = "1292052"
conn = sqlite3.connect('data/douban_comment_data.db')
movie_list = pd.read_sql_query("select * from movie;",conn)
comment_list = pd.read_sql_query("select * from comment;",conn)
movie_name = movie_list[movie_list.ID==movie_id].NAME.iloc[0] #Series的取单元格数据操作
movie_info = comment_list[comment_list.MOVIEID==movie_id]
movie_rating = movie_info.RATING.mean()
print(movie_name)
print(movie_rating)
运行结果如下:
我们成功的查到了movie_id为"1292052"的电影是大名鼎鼎的肖申克的救赎,他的平均得分是3.1/5
之后,我们只需要修改movie_id中的值,就可以查询到豆瓣电影的信息了。