├── 1-Data_Collection ├── 艺恩电影票房采集 │ └── yien.py └── 豆瓣电影采集 │ ├── Movie.py │ ├── douban.com.py │ └── login.png ├── 2-Data_Source ├── douban.csv ├── yien1.csv ├── yien2.csv └── 数据模糊匹配.ipynb ├── 3-Data_Cleaning ├── movies_all.csv ├── movies_half.csv └── 数据清洗.ipynb ├── 4-Data_Analysis ├── 不同类型电影的平均时长.ipynb ├── 不同类型电影的平均票房.ipynb ├── 不同类型电影的平均评分.ipynb ├── 不同类型电影的总发行数量.ipynb ├── 不同类型电影的总发行数量占比.ipynb ├── 不同类型电影的总票房.ipynb ├── 总票房最高的10名导演.ipynb ├── 总票房最高的10名演员.ipynb ├── 总票房最高的10名编剧.ipynb ├── 总票房最高的10所制片公司.ipynb ├── 总票房最高的10所发行公司.ipynb ├── 所有电影时长频数分布.ipynb ├── 每年不同类型电影的发行数量与票房.ipynb ├── 每年电影的平均评分.ipynb ├── 电影平均评分最高的10名导演.ipynb ├── 电影平均评分最高的10名演员.ipynb ├── 电影平均评分最高的10名编剧.ipynb └── 票房与评分的关系.ipynb └── 5-Data_Model ├── dadas ├── MovieBoxOffiice.csv ├── MovieBoxOffiice.json ├── MovieSoure.csv └── MovieSoure.json ├── 票房预测模型.ipynb └── 评分预测模型.ipynb /1-Data_Collection/艺恩电影票房采集/yien.py: -------------------------------------------------------------------------------- 1 | # coding:utf-8 2 | import requests 3 | import json 4 | import Xicidaili_spider 5 | import re 6 | import pymongo 7 | import time 8 | 9 | headers = { 10 | 'Host': 'www.endata.com.cn', 11 | 'Origin': 'http://www.endata.com.cn', 12 | 'Pragma': 'no-cache', 13 | 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.9 Safari/537.36', 14 | 'X-Requested-With': 'XMLHttpRequest', 15 | } 16 | areaIds = [ 17 | {"id": 2, "name": "加拿大"}, {"id": 7, "name": "意大利"}, {"id": 14, "name": "西班牙"}, {"id": 42, "name": "墨西哥"}, 18 | {"id": 11, "name": "澳大利亚"}, {"id": 43, "name": "印度"}, {"id": 2102, "name": "尼日利亚"}, 19 | {"id": 24, "name": "丹麦"}, {"id": 20, "name": "荷兰"}, {"id": 26, "name": "瑞典"}, {"id": 32, "name": "捷克"}, 20 | {"id": 8, "name": "巴西"}, {"id": 22, "name": "阿根廷"}, {"id": 19, "name": "比利时"}, {"id": 9, "name": "菲律宾"}, 21 | {"id": 6, "name": "瑞士"}, {"id": 45, "name": "芬兰"}, {"id": 33, "name": "匈牙利"}, {"id": 17, "name": "奥地利"}, 22 | {"id": 31, "name": "俄罗斯"}, {"id": 29, "name": "韩国"}, {"id": 69, "name": "爱尔兰"}, {"id": 3, "name": "波兰"}, 23 | {"id": 44, "name": "葡萄牙"}, {"id": 13, "name": "挪威"}, {"id": 10, "name": "以色列"}, {"id": 21, "name": "希腊"}, 24 | {"id": 74, "name": "古巴"}, {"id": 60, "name": "智利"}, {"id": 15, "name": "土耳其"}, {"id": 28, "name": "新西兰"}, 25 | {"id": 39, "name": "立陶宛"}, {"id": 41, "name": "马耳他"}, {"id": 75, "name": "伊朗"}, {"id": 54, "name": "泰国"}, 26 | {"id": 46, "name": "保加利亚"}, {"id": 64, "name": "克罗地亚"}, {"id": 51, "name": "印度尼西亚"}, 27 | {"id": 23, "name": "哥伦比亚"}, {"id": 66, "name": "罗马尼亚"}, {"id": 18, "name": "南非"}, 28 | {"id": 35, "name": "马来西亚"}, {"id": 48, "name": "塞浦路斯"}, {"id": 49, "name": "巴拿马"}, 29 | {"id": 82, "name": "南联盟"}, {"id": 5, "name": "新加坡"}, {"id": 27, "name": "秘鲁"}, {"id": 52, "name": "黎巴嫩"}, 30 | {"id": 53, "name": "波多黎各"}, {"id": 38, "name": "埃及"}, {"id": 47, "name": "委内瑞拉"}, 31 | {"id": 55, "name": "牙买加"}, {"id": 36, "name": "爱沙尼亚"}, {"id": 56, "name": "特立尼达和多巴哥"}, 32 | {"id": 65, "name": "斯洛文尼亚"}, {"id": 57, "name": "多米尼加"}, {"id": 12, "name": "冰岛"}, 33 | {"id": 34, "name": "卢森堡"}, {"id": 58, "name": "危地马拉"}, {"id": 68, "name": "斯洛伐克"}, 34 | {"id": 59, "name": "乌拉圭"}, {"id": 61, "name": "厄瓜多尔"}, {"id": 62, "name": "玻利维亚"}, 35 | {"id": 63, "name": "拉脱维亚"}, {"id": 67, "name": "南斯拉夫"}, {"id": 70, "name": "肯尼亚"}, 36 | {"id": 72, "name": "乌克兰"}, {"id": 73, "name": "摩洛哥"}, {"id": 76, "name": "坦桑尼亚"}, 37 | {"id": 77, "name": "波黑"}, {"id": 78, "name": "越南"}, {"id": 79, "name": "津巴布韦"}, 38 | {"id": 80, "name": "阿尔及利亚"}, {"id": 81, "name": "巴勒斯坦"}, {"id": 83, "name": "塞内加尔"}, 39 | {"id": 84, "name": "巴基斯坦"}, {"id": 85, "name": "阿尔巴尼亚"}, {"id": 86, "name": "格鲁吉亚"}, 40 | {"id": 87, "name": "布基纳法索"}, {"id": 88, "name": "亚美尼亚"}, {"id": 89, "name": "海地"}, 41 | {"id": 90, "name": "吉尔吉斯坦"}, {"id": 91, "name": "尼泊尔"}, {"id": 92, "name": "哈萨克斯坦"}, 42 | {"id": 93, "name": "突尼斯"}, {"id": 94, "name": "卢旺达"}, {"id": 95, "name": "纳米比亚"}, 43 | {"id": 96, "name": "乌兹别克斯坦"}, {"id": 97, "name": "斯里兰卡"}, {"id": 98, "name": "喀麦隆"}, 44 | {"id": 99, "name": "加纳"}, {"id": 100, "name": "巴哈马"}, {"id": 101, "name": "中国澳门"}, 45 | {"id": 102, "name": "西德"}, {"id": 103, "name": "前苏联"}, {"id": 104, "name": "捷克斯洛伐克"}, 46 | {"id": 105, "name": "东德"}, {"id": 106, "name": "摩纳哥"}, {"id": 107, "name": "列支敦士登"}, 47 | {"id": 108, "name": "利比亚"}, {"id": 109, "name": "象牙海岸"}, {"id": 110, "name": "乍得"}, 48 | {"id": 111, "name": "博茨瓦纳"}, {"id": 112, "name": "阿富汗"}, {"id": 113, "name": "格陵兰岛"}, 49 | {"id": 114, "name": "蒙古"}, {"id": 118, "name": "科威特"}, {"id": 128, "name": "巴林"}, 50 | {"id": 137, "name": "白俄罗斯"}, {"id": 148, "name": "哥斯达黎加"}, {"id": 151, "name": "萨尔瓦多"}, 51 | {"id": 152, "name": "洪都拉斯"}, {"id": 156, "name": "阿拉伯"}, {"id": 158, "name": "马其顿"}, 52 | {"id": 2087, "name": "百慕大群岛"}, {"id": 2088, "name": "苏里南河(荷兰)"}, {"id": 2089, "name": "巴巴多斯岛"}, 53 | {"id": 2090, "name": "叙利亚"}, {"id": 2091, "name": "塞尔维亚"}, {"id": 2092, "name": "全世界"}, 54 | {"id": 2093, "name": "巴拉圭"}, {"id": 2094, "name": "孟加拉国"}, {"id": 2095, "name": "约旦"}, 55 | {"id": 2096, "name": "阿曼"}, {"id": 2097, "name": "新喀里多尼亚"}, {"id": 2099, "name": "卡塔尔"}, 56 | {"id": 2103, "name": "法罗群岛"}, {"id": 2104, "name": "阿鲁巴岛"}, {"id": 2106, "name": "伯利兹城"}, 57 | {"id": 2107, "name": "尼加拉瓜"}, {"id": 2119, "name": "佛得角"}, {"id": 2120, "name": "圭亚那"}, 58 | {"id": 2121, "name": "塞舌尔"}, {"id": 2123, "name": "安哥拉"}, {"id": 2125, "name": "毛里求斯"}, 59 | {"id": 2127, "name": "斐济"}, {"id": 2128, "name": "波斯尼亚"}, {"id": 2131, "name": "莫桑比克"}, 60 | {"id": 2132, "name": "苏丹"}, {"id": 2141, "name": "伊拉克"}, {"id": 2142, "name": "北朝鲜"}, 61 | {"id": 2143, "name": "塞尔维亚和黑山"}, {"id": 2144, "name": "缅甸"}, {"id": 2145, "name": "马达加斯加岛"}, 62 | {"id": 2146, "name": "阿塞拜疆"}, {"id": 2147, "name": "安道尔"}, {"id": 2148, "name": "瓜德罗普岛"}, 63 | {"id": 2149, "name": "马提尼克岛"}, {"id": 2150, "name": "汤加"}, {"id": 2151, "name": "尼日尔"}, 64 | {"id": 2152, "name": "厄立特里亚"}, {"id": 2153, "name": "不丹"}, {"id": 2154, "name": "老挝国"}, 65 | {"id": 2155, "name": "加蓬"}, {"id": 2156, "name": "贝宁湾"}, {"id": 2157, "name": "柬埔寨"}, 66 | {"id": 2158, "name": "多哥"}, {"id": 2159, "name": "中非共和国"}, {"id": 2160, "name": "几内亚"}, 67 | {"id": 2161, "name": "马里"}, {"id": 2162, "name": "塔吉克斯坦"}, {"id": 2163, "name": "巴布亚新几内亚"}, 68 | {"id": 2164, "name": "赞比亚"}, {"id": 2165, "name": "沙特阿拉伯"}, {"id": 2166, "name": "刚果"}, 69 | {"id": 2167, "name": "土库曼斯坦"}, {"id": 2168, "name": "乌干达"}, {"id": 2169, "name": "毛利塔尼亚"}, 70 | {"id": 2170, "name": "摩尔多瓦"}, {"id": 2171, "name": "科索沃"}, {"id": 2172, "name": "埃塞俄比亚"}, 71 | {"id": 2174, "name": "特克斯科斯群岛"}, {"id": 2175, "name": "特克斯和凯科斯群岛"}, {"id": 2176, "name": "利比里"}, 72 | {"id": 2177, "name": "索马里"}, {"id": 2178, "name": "荷属安的列斯群岛"}, {"id": 2179, "name": "刚果民主共和国"}, 73 | {"id": 2180, "name": "也门共和国大使馆"}, {"id": 2181, "name": "莱索托王国大使馆"}, {"id": 2182, "name": "被占领巴勒斯坦领土"}, 74 | {"id": 2183, "name": "安提瓜和巴布达"}, {"id": 2184, "name": "纽埃"}, {"id": 2185, "name": "法属玻利尼西亚"}, 75 | {"id": 2186, "name": "刚果民主共和国"}, {"id": 2187, "name": "几内亚比绍"}, {"id": 2188, "name": "西撒哈拉"}, 76 | {"id": 2189, "name": "布隆迪共和国大使馆"}, {"id": 2190, "name": "圣马力诺"}, {"id": 2194, "name": "中国澳门"}, 77 | {"id": 2202, "name": "几内亚比绍"}] 78 | 79 | def getHtmlData(url): 80 | movies = [] 81 | dailiIP = Xicidaili_spider.getProxies() 82 | data = { 83 | 'areaId': '1', 84 | 'typeId': '0', 85 | 'year': '0', 86 | 'initial': '', 87 | 'pageIndex': '1', 88 | 'pageSize': '10', 89 | 'MethodName': 'BoxOffice_GetMovieData_List', 90 | } 91 | dataCollection = creatDatabaseCollection() 92 | for areaId in areaIds: 93 | data['areaId'] = areaId.get('id') 94 | response = requests.get(url=url, 95 | data=data, 96 | # proxies=dailiIP, 97 | timeout=20, ) 98 | response.encoding = response.apparent_encoding 99 | response = json.loads(response.text) 100 | if response.get('Data').get('Table1')[0].get('TotalCounts') == 0: 101 | continue 102 | else: 103 | # print(areaId.get('id')) 104 | # print(int(response.get('Data').get('Table1')[0].get('TotalPage'))) 105 | for TotalPage in range(int(response.get('Data').get('Table1')[0].get('TotalPage'))): 106 | data['pageIndex'] = '{}'.format(TotalPage + 1) 107 | print('正在获取({})地区第{}页数据'.format(areaId.get('name'),(TotalPage + 1))) 108 | # print(data) 109 | response = requests.get(url=url, 110 | data=data, 111 | # proxies=dailiIP, 112 | timeout=20, ) 113 | response.encoding = response.apparent_encoding 114 | response = json.loads(response.text) 115 | # print(response) 116 | movies = movies + getMoviesIDList(response) 117 | dataToMongdb(getMoviesIDList(response),dataCollection) 118 | # print(movies) 119 | # 存储 120 | # dataToMongdb(movies, creatDatabaseCollection()) 121 | print(movies) 122 | return None 123 | def getMoviesIDList(response): 124 | moviesIdList = [] 125 | for m_id in response.get('Data').get('Table'): 126 | # moviesUrls.append('http://www.endata.com.cn/BoxOffice/MovieStock/movieShow.html?id={}}'.format(m_id.get('ID'))) 127 | moviesIdList.append(m_id.get('ID')) 128 | # print(moviesUrls) 129 | return getMovieInfo(moviesIdList) 130 | 131 | def getMovieInfo(moviesIdList): 132 | movieInfo = [] 133 | pattern = re.compile(r'\|\d+') 134 | for movieID in moviesIdList: 135 | data = { 136 | 'movieId': '{}'.format(movieID), 137 | 'MethodName': 'BoxOffice_GetMovieData_Details', 138 | } 139 | res = requests.post(url='http://www.endata.com.cn/API/GetData.ashx', data=data, headers=headers, timeout=20) 140 | res.encoding = res.apparent_encoding 141 | res = json.loads(res.text) 142 | res = res.get('Data').get('Table')[0] 143 | MovieId = res.get('MovieId') 144 | MovieName = res.get('MovieName') 145 | RealTimeBox = res.get('RealTimeBox') # 实时票房 146 | SumBoxOffice = res.get('SumBoxOffice') # 累计票房 147 | MovieFxAll = res.get('MovieFxAll') # 发行公司 148 | MovieZz = res.get('MovieZz') # 制片公司 149 | if MovieFxAll != None: 150 | MovieFxAll = re.sub(pattern, '', MovieFxAll) 151 | if MovieFxAll[-1] == '/': 152 | MovieFxAll = MovieFxAll[:-1] 153 | if MovieZz != None: 154 | MovieZz = re.sub(pattern, '', MovieZz) 155 | if MovieZz[-1] == '/': 156 | MovieZz = MovieZz[:-1] 157 | # print(MovieId) 158 | movieInfo.append({ 159 | 'MovieName': MovieName, 160 | 'MovieId': MovieId, 161 | 'RealTimeBox': RealTimeBox, 162 | 'SumBoxOffice': SumBoxOffice, 163 | 'MovieFxAll': MovieFxAll, 164 | 'MovieZz': MovieZz, 165 | }) 166 | print('正在爬取《{}》'.format(MovieName)) 167 | time.sleep(1) 168 | # print(movieInfo) 169 | # break 170 | return movieInfo 171 | 172 | def dataToMongdb(movieInfo, mycol): 173 | for m_info in movieInfo: 174 | print('正在存储《{}》的信息'.format(m_info.get('MovieName'))) 175 | mycol.insert_one(m_info) 176 | 177 | 178 | def creatDatabaseCollection(): 179 | myclient = pymongo.MongoClient("mongodb://localhost:27017/") 180 | mydb = myclient["SecondClass"] 181 | dblist = myclient.list_database_names() 182 | # dblist = myclient.database_names() 183 | if "SecondClass" in dblist: 184 | print("数据库已存在!") 185 | # mycol = mydb["movie_append"] 186 | mycol = mydb["movie_collection"] 187 | collist = mydb.list_collection_names() 188 | # collist = mydb.collection_names() 189 | if "movie_collection" in collist: # 判断 sites 集合是否存在 190 | print("集合已存在!") 191 | return mycol 192 | def readDataForMongodb(mycol): 193 | mycol = mycol.find_one({"MovieId":641515}) 194 | print(mycol) 195 | 196 | if __name__ == '__main__': 197 | getHtmlData('http://www.endata.com.cn/API/GetData.ashx') 198 | # getMoviesIDList({'Status': 1, 'Msg': '', 'Data': {'Table': [{'rowNum': 1, 'ID': 641515, 'MovieName': '战狼2', 'MovieEnName': 'Wolf Warriors 2', 'releaseYear': 2017, 'defaultImage': 'http://images.entgroup.cn/group1/M00/00/C2/wKgASVznzXuAZSQEAAB9n21g2SM514.jpg', 'amount': 5679285847.0, 'BoxOffice': 567929}, {'rowNum': 2, 'ID': 662685, 'MovieName': '哪吒之魔童降世', 'MovieEnName': 'Ne Zha', 'releaseYear': 2019, 'defaultImage': 'http://images.entgroup.cn/group2/M00/02/8A/wKgAS10-kBmAKrbcAABr892L23I638.jpg', 'amount': 5013345127.0, 'BoxOffice': 501335}, {'rowNum': 3, 'ID': 642412, 'MovieName': '流浪地球', 'MovieEnName': 'The Wandering Earth', 'releaseYear': 2019, 'defaultImage': 'http://images.entgroup.cn/group1/M00/00/AB/wKgASVzny4uAEWvcAABfH3c7ZxA728.jpg', 'amount': 4684410830.0, 'BoxOffice': 468441}, {'rowNum': 4, 'ID': 655823, 'MovieName': '红海行动', 'MovieEnName': 'Operation Red Sea', 'releaseYear': 2018, 'defaultImage': 'http://images.entgroup.cn/group2/M00/00/55/wKgAS1zny8GAcqTMAAB5ad6sOkg158.jpg', 'amount': 3650787000.0, 'BoxOffice': 365079}, {'rowNum': 5, 'ID': 663419, 'MovieName': '唐人街探案2', 'MovieEnName': 'Detective Chinatown Vol 2', 'releaseYear': 2018, 'defaultImage': 'http://images.entgroup.cn/group2/M00/00/50/wKgAS1znyuSAWjHMAACH710vKVc225.jpg', 'amount': 3397687917.0, 'BoxOffice': 339769}, {'rowNum': 6, 'ID': 626153, 'MovieName': '美人鱼', 'MovieEnName': 'The Mermaid', 'releaseYear': 2016, 'defaultImage': 'http://images.entgroup.cn/group2/M00/00/5E/wKgASlznzS2AcWCeAABwl8jFKb8737.jpg', 'amount': 3392109138.0, 'BoxOffice': 339211}, {'rowNum': 7, 'ID': 691481, 'MovieName': '我和我的祖国', 'MovieEnName': 'My People, My Country', 'releaseYear': 2019, 'defaultImage': 'http://images.entgroup.cn/group1/M00/05/1F/wKgASV1-9TiAGhZmAACCZzeu0MY565.jpg', 'amount': 3171189437.0, 'BoxOffice': 317119}, {'rowNum': 8, 'ID': 676313, 'MovieName': '我不是药神', 'MovieEnName': 'Dying to Survive', 'releaseYear': 2018, 'defaultImage': 'http://images.entgroup.cn/group1/M00/00/A8/wKgASVzny1SAAagSAACIKvFmOFA557.jpg', 'amount': 3099961018.0, 'BoxOffice': 309996}, {'rowNum': 9, 'ID': 681319, 'MovieName': '中国机长', 'MovieEnName': 'The Captain', 'releaseYear': 2019, 'defaultImage': 'http://images.entgroup.cn/group1/M00/05/1F/wKgASV2AgMGAB6kZAAB8yi1T_ZQ512.jpg', 'amount': 2912412039.0, 'BoxOffice': 291241}, {'rowNum': 10, 'ID': 671983, 'MovieName': '西虹市首富', 'MovieEnName': 'Hello Mr. Billionaire', 'releaseYear': 2018, 'defaultImage': 'http://images.entgroup.cn/group2/M00/00/42/wKgASlznyK6AY_1SAABzXedgJUU849.jpg', 'amount': 2547571698.0, 'BoxOffice': 254757}], 'Table1': [{'TotalCounts': 11484, 'TotalPage': 1149.0}]}}) 199 | # readDataForMongodb(creatDatabaseCollection()) 200 | -------------------------------------------------------------------------------- /1-Data_Collection/豆瓣电影采集/Movie.py: -------------------------------------------------------------------------------- 1 | import pymysql 2 | import requests 3 | import csv 4 | import time 5 | from lxml import etree 6 | 7 | 8 | db = pymysql.connect(host = 'localhost',user = 'root',password = 'root',db ="movie_url") 9 | conn = db.cursor() 10 | conn.execute("select url from url ") 11 | # fetchall函数返回多条记录 12 | number = conn.fetchall() 13 | url = set(number) 14 | 15 | url1 = list(url) 16 | f = open("url.csv",'a',newline="") 17 | try: 18 | write = csv.writer(f) 19 | for i in range(len(url1)): 20 | write.writerow(url1[i]) 21 | finally: 22 | f.close() 23 | 24 | headers = { 25 | 'Referer':'https://movie.douban.com/subject/1786231/', 26 | 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3756.400 QQBrowser/10.5.4039.400', 27 | } 28 | requests = requests.session() 29 | movie = [];url2 = [] 30 | def getStr(list): 31 | list1=[];list2=[];list3 = [] 32 | if len(list) != 0 : 33 | for i in range(len(list)): 34 | list1.append(list[i]) 35 | str_list = ','.join(map(str,list1)) 36 | list2.append(str_list) 37 | return list2 38 | else: 39 | return list 40 | 41 | def NULL(str): 42 | s = [] 43 | if str.strip() == '': 44 | return s 45 | else: 46 | return str 47 | 48 | def getMovie_Details(): 49 | r = open("url.csv",'r') 50 | for u in r: 51 | url2.append(u) 52 | print(len(url2)) 53 | for i in range(7000,len(url2)): 54 | print("----------正在爬取第{}部电影----------".format(i+1)) 55 | 56 | response = requests.get(url2[i].strip(),headers = headers) 57 | response.encoding = 'utf-8' 58 | if response.status_code == 403 or response.status_code == 404: 59 | break 60 | html = etree.HTML(response.content,etree.HTMLParser(encoding="utf-8")) 61 | print(html.xpath('//*[@id="content"]/h1/span[1]/text()')) 62 | title = next(iter(html.xpath('//*[@id="content"]/h1/span[1]/text()')),'暂无标题信息') 63 | director = next(iter(html.xpath('//*[@id="info"]/span[1]/span[2]/a/text()')), '暂无导演信息') 64 | Screenwriter = next(iter(getStr(html.xpath('//*[@id="info"]/span[2]/span[2]/a/text()'))), "暂无编剧信息") 65 | performer = next(iter(getStr(html.xpath('//span[@class="actor"]/span[2]/a/text()'))), "暂无演员信息") 66 | Release_time = next(iter(html.xpath('//span[@property="v:initialReleaseDate"]/text()')), '暂无上映时间') 67 | Film_length = next(iter(html.xpath('//span[@property="v:runtime"]/text()')), '暂无电影时长') 68 | type = next(iter(html.xpath('//span[@property="v:genre"]/text()')), '暂无电影类型') 69 | score = next(iter(html.xpath('//*[@id="interest_sectl"]/div[1]/div[2]/strong/text()')), '暂无电影评分') 70 | movie.append([title, director,Screenwriter, performer, Release_time, Film_length, type,score]) 71 | return movie 72 | 73 | 74 | if __name__ == "__main__": 75 | getMovie_Details() 76 | print(movie) 77 | f = open("movie.csv",'a',encoding='utf-8-sig',newline="") 78 | try: 79 | w = csv.writer(f) 80 | # w.writerow(("电影名",'导演','编剧','演员','上映时间','片长','类型','评分')) 81 | for i in range(len(movie)): 82 | w.writerow((movie[i][0],movie[i][1],movie[i][2],movie[i][3],movie[i][4],movie[i][5],movie[i][6],movie[i][7])) 83 | finally: 84 | f.close() -------------------------------------------------------------------------------- /1-Data_Collection/豆瓣电影采集/douban.com.py: -------------------------------------------------------------------------------- 1 | import requests 2 | import json 3 | from selenium import webdriver 4 | import time 5 | from lxml import etree 6 | import pymysql 7 | requests = requests.session() 8 | url1 = []; url = set() 9 | url2 = []; url3 = [] 10 | headers = { 11 | 'Accept':'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8', 12 | 'Accept-Encoding':'utf-8', 13 | 'Accept-Language':'zh-CN,zh;q=0.9', 14 | 'Cache-Control':'max-age=0', 15 | 'Connection':'keep-alive', 16 | 'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/70.0.3538.25 Safari/537.36 Core/1.70.3756.400 QQBrowser/10.5.4039.400', 17 | } 18 | 19 | db = pymysql.connect(host = 'localhost',user = 'root',password = 'root',db = 'Movie_Url',charset = "utf8") 20 | cursor1 = db.cursor() 21 | # cursor1.execute("drop database if exists Movie_Url") 22 | # print("数据库创建中...") 23 | # cursor1.execute("create database Movie_Url character set utf8") 24 | # cursor1.execute("use Movie_Url") 25 | # cursor1.execute("drop database if exists Movie_Url") 26 | # 建表 27 | # sql = "create table Url(id int primary key NOT NULL AUTO_INCREMENT,url varchar(100) not null)character set utf8" 28 | # cursor1.execute(sql) 29 | 30 | def Login(url): 31 | params = { 32 | 'name' : '13272731335', 33 | 'password' : 'cx5201314hyp' 34 | } 35 | response = requests.post(url,params = params,headers=headers) 36 | 37 | def getUrl_200(): 38 | for x in range(0,200,20): 39 | print(x) 40 | response = requests.get('https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=&start='+str(x)+'&genres=情色',headers=headers) 41 | response.encoding = "utf-8" 42 | [url1.append(i["url"]) for i in response.json()['data']] 43 | print(url1) 44 | def getUrl200_400(): 45 | for x in range(200,400,20): 46 | print(x) 47 | response = requests.get('https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=&start='+str(x)+'&genres=情色',headers=headers) 48 | response.encoding = "utf-8" 49 | [ url2.append(i["url"]) for i in response.json()['data']] 50 | print(url2) 51 | def getUrl400_500(): 52 | for x in range(400,500,20): 53 | response = requests.get('https://movie.douban.com/j/new_search_subjects?sort=U&range=0,10&tags=&start='+str(x)+'&genres=情色',headers=headers) 54 | response.encoding = "utf-8" 55 | [ url3.append(i["url"]) for i in response.json()['data']] 56 | print(url3) 57 | 58 | if __name__ =="__main__": 59 | # url ="https://accounts.douban.com/j/mobile/login/basic" 60 | # Login(url) 61 | 62 | # getUrl_200() 63 | # sql = ("insert into Url(url)" " values (%s)") 64 | # for j in range(len(url1)): 65 | # print("已写入{}条记录".format(j)) 66 | # cursor1.execute(sql, (url1[j])) 67 | # cursor1.connection.commit() 68 | # 69 | # time.sleep(60) 70 | # 71 | # getUrl200_400() 72 | # print(url2) 73 | # sql = ("insert into Url(url)" " values (%s)") 74 | # for j in range(len(url2)): 75 | # print("已写入{}条记录".format(j)) 76 | # cursor1.execute(sql, (url2[j])) 77 | # cursor1.connection.commit() 78 | # 79 | # time.sleep(60) 80 | 81 | getUrl400_500() 82 | # sql = ("insert into Url(url)" " values (%s)") 83 | # for j in range(len(url3)): 84 | # print("已写入{}条记录".format(j)) 85 | # cursor1.execute(sql, (url3[j])) 86 | # cursor1.connection.commit() 87 | -------------------------------------------------------------------------------- /1-Data_Collection/豆瓣电影采集/login.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/chinawyl/Film-Data-Analysis-and-visualization/4078101362f7d38053923e694745c5bb4484c4d1/1-Data_Collection/豆瓣电影采集/login.png -------------------------------------------------------------------------------- /3-Data_Cleaning/数据清洗.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "import pandas as pd" 11 | ] 12 | }, 13 | { 14 | "cell_type": "code", 15 | "execution_count": 2, 16 | "metadata": {}, 17 | "outputs": [], 18 | "source": [ 19 | "# 1.合并数据\n", 20 | "\n", 21 | "# 豆瓣数据\n", 22 | "data1 = pd.read_csv('../2-Data_Source/douban.csv')\n", 23 | "\n", 24 | "# 合并艺恩数据\n", 25 | "yien1 = pd.read_csv('../2-Data_Source/yien1.csv') \n", 26 | "yien2 = pd.read_csv('../2-Data_Source/yien2.csv') \n", 27 | "data2 = pd.concat([yien1,yien2])\n", 28 | "\n", 29 | "# 处理艺恩票房数据\n", 30 | "data2 = data2.loc[:,data2.columns != '_id']\n", 31 | "data2 = data2.loc[:,['MovieName','SumBoxOffice','MovieFxAll','MovieZz']]\n", 32 | "data2.columns = ['电影名','票房','发行公司','制片公司']\n", 33 | "\n", 34 | "#合并豆瓣艺恩数据\n", 35 | "data = data1.merge(data2,left_on=\"电影名\",right_on=\"电影名\",how=\"outer\")" 36 | ] 37 | }, 38 | { 39 | "cell_type": "code", 40 | "execution_count": 3, 41 | "metadata": {}, 42 | "outputs": [ 43 | { 44 | "name": "stdout", 45 | "output_type": "stream", 46 | "text": [ 47 | "\n", 48 | "\n", 49 | "Int64Index: 17475 entries, 0 to 21447\n", 50 | "Data columns (total 11 columns):\n", 51 | "电影名 17475 non-null object\n", 52 | "导演 6885 non-null object\n", 53 | "编剧 6885 non-null object\n", 54 | "演员 6885 non-null object\n", 55 | "上映时间 6885 non-null object\n", 56 | "片长 6885 non-null object\n", 57 | "类型 6885 non-null object\n", 58 | "评分 6885 non-null object\n", 59 | "票房 11311 non-null float64\n", 60 | "发行公司 4739 non-null object\n", 61 | "制片公司 7191 non-null object\n", 62 | "dtypes: float64(1), object(10)\n", 63 | "memory usage: 1.6+ MB\n" 64 | ] 65 | } 66 | ], 67 | "source": [ 68 | "# 2.电影名重名处理\n", 69 | "data.drop_duplicates(subset=['电影名'],inplace=True)\n", 70 | "\n", 71 | "print()\n", 72 | "\n", 73 | "# 查看处理后情况\n", 74 | "data.info()" 75 | ] 76 | }, 77 | { 78 | "cell_type": "code", 79 | "execution_count": 4, 80 | "metadata": {}, 81 | "outputs": [ 82 | { 83 | "name": "stdout", 84 | "output_type": "stream", 85 | "text": [ 86 | "\n", 87 | "Int64Index: 6885 entries, 0 to 7538\n", 88 | "Data columns (total 11 columns):\n", 89 | "电影名 6885 non-null object\n", 90 | "导演 6885 non-null object\n", 91 | "编剧 6885 non-null object\n", 92 | "演员 6885 non-null object\n", 93 | "上映时间 6885 non-null object\n", 94 | "片长 6885 non-null object\n", 95 | "类型 6885 non-null object\n", 96 | "评分 6885 non-null object\n", 97 | "票房 721 non-null float64\n", 98 | "发行公司 515 non-null object\n", 99 | "制片公司 634 non-null object\n", 100 | "dtypes: float64(1), object(10)\n", 101 | "memory usage: 645.5+ KB\n", 102 | "\n", 103 | "\n", 104 | "Int64Index: 6841 entries, 0 to 7538\n", 105 | "Data columns (total 11 columns):\n", 106 | "电影名 6841 non-null object\n", 107 | "导演 6841 non-null object\n", 108 | "编剧 6841 non-null object\n", 109 | "演员 6841 non-null object\n", 110 | "上映时间 6841 non-null object\n", 111 | "片长 6841 non-null object\n", 112 | "类型 6841 non-null object\n", 113 | "评分 6841 non-null object\n", 114 | "票房 720 non-null float64\n", 115 | "发行公司 514 non-null object\n", 116 | "制片公司 633 non-null object\n", 117 | "dtypes: float64(1), object(10)\n", 118 | "memory usage: 641.3+ KB\n" 119 | ] 120 | } 121 | ], 122 | "source": [ 123 | "# 3.电影导演处理\n", 124 | "\n", 125 | "#查看导演为空的数据情况\n", 126 | "data.dropna(subset=['导演']).info()\n", 127 | "\n", 128 | "#删除导演为空的数据\n", 129 | "data.dropna(subset=['导演'],inplace=True)\n", 130 | "\n", 131 | "#删除暂无导演信息的数据\n", 132 | "data = data[data['导演'] != '暂无导演信息']\n", 133 | "\n", 134 | "print()\n", 135 | "\n", 136 | "# 查看处理后情况\n", 137 | "data.info()" 138 | ] 139 | }, 140 | { 141 | "cell_type": "code", 142 | "execution_count": 5, 143 | "metadata": {}, 144 | "outputs": [ 145 | { 146 | "name": "stdout", 147 | "output_type": "stream", 148 | "text": [ 149 | "\n", 150 | "Int64Index: 6841 entries, 0 to 7538\n", 151 | "Data columns (total 11 columns):\n", 152 | "电影名 6841 non-null object\n", 153 | "导演 6841 non-null object\n", 154 | "编剧 6841 non-null object\n", 155 | "演员 6841 non-null object\n", 156 | "上映时间 6841 non-null object\n", 157 | "片长 6841 non-null object\n", 158 | "类型 6841 non-null object\n", 159 | "评分 6841 non-null object\n", 160 | "票房 720 non-null float64\n", 161 | "发行公司 514 non-null object\n", 162 | "制片公司 633 non-null object\n", 163 | "dtypes: float64(1), object(10)\n", 164 | "memory usage: 641.3+ KB\n", 165 | "\n", 166 | "\n", 167 | "Int64Index: 6612 entries, 1 to 7538\n", 168 | "Data columns (total 11 columns):\n", 169 | "电影名 6612 non-null object\n", 170 | "导演 6612 non-null object\n", 171 | "编剧 6612 non-null object\n", 172 | "演员 6612 non-null object\n", 173 | "上映时间 6612 non-null object\n", 174 | "片长 6612 non-null object\n", 175 | "类型 6612 non-null object\n", 176 | "评分 6612 non-null object\n", 177 | "票房 717 non-null float64\n", 178 | "发行公司 514 non-null object\n", 179 | "制片公司 631 non-null object\n", 180 | "dtypes: float64(1), object(10)\n", 181 | "memory usage: 619.9+ KB\n" 182 | ] 183 | } 184 | ], 185 | "source": [ 186 | "# 4.电影编剧处理\n", 187 | "\n", 188 | "#查看编剧为空的数据情况\n", 189 | "data.dropna(subset=['编剧']).info()\n", 190 | "\n", 191 | "#删除编剧为空的数据\n", 192 | "data.dropna(subset=['编剧'],inplace=True)\n", 193 | "\n", 194 | "#删除暂无编剧信息的数据\n", 195 | "data = data[data['编剧'] != '暂无编剧信息']\n", 196 | "\n", 197 | "print()\n", 198 | "\n", 199 | "# 查看处理后情况\n", 200 | "data.info()" 201 | ] 202 | }, 203 | { 204 | "cell_type": "code", 205 | "execution_count": 6, 206 | "metadata": {}, 207 | "outputs": [ 208 | { 209 | "name": "stdout", 210 | "output_type": "stream", 211 | "text": [ 212 | "\n", 213 | "Int64Index: 6612 entries, 1 to 7538\n", 214 | "Data columns (total 11 columns):\n", 215 | "电影名 6612 non-null object\n", 216 | "导演 6612 non-null object\n", 217 | "编剧 6612 non-null object\n", 218 | "演员 6612 non-null object\n", 219 | "上映时间 6612 non-null object\n", 220 | "片长 6612 non-null object\n", 221 | "类型 6612 non-null object\n", 222 | "评分 6612 non-null object\n", 223 | "票房 717 non-null float64\n", 224 | "发行公司 514 non-null object\n", 225 | "制片公司 631 non-null object\n", 226 | "dtypes: float64(1), object(10)\n", 227 | "memory usage: 619.9+ KB\n", 228 | "\n", 229 | "\n", 230 | "Int64Index: 6549 entries, 1 to 7538\n", 231 | "Data columns (total 11 columns):\n", 232 | "电影名 6549 non-null object\n", 233 | "导演 6549 non-null object\n", 234 | "编剧 6549 non-null object\n", 235 | "演员 6549 non-null object\n", 236 | "上映时间 6549 non-null object\n", 237 | "片长 6549 non-null object\n", 238 | "类型 6549 non-null object\n", 239 | "评分 6549 non-null object\n", 240 | "票房 715 non-null float64\n", 241 | "发行公司 514 non-null object\n", 242 | "制片公司 631 non-null object\n", 243 | "dtypes: float64(1), object(10)\n", 244 | "memory usage: 614.0+ KB\n" 245 | ] 246 | } 247 | ], 248 | "source": [ 249 | "# 5.电影演员处理\n", 250 | "\n", 251 | "#查看演员为空的数据情况(数据匹配度提高,所以删除)\n", 252 | "data.dropna(subset=['演员']).info()\n", 253 | "\n", 254 | "#删除演员为空的数据\n", 255 | "data.dropna(subset=['演员'],inplace=True)\n", 256 | "\n", 257 | "#删除暂无演员信息的数据\n", 258 | "data = data[data['演员'] != '暂无演员信息']\n", 259 | "\n", 260 | "print()\n", 261 | "\n", 262 | "# 查看处理后情况\n", 263 | "data.info()" 264 | ] 265 | }, 266 | { 267 | "cell_type": "code", 268 | "execution_count": 7, 269 | "metadata": {}, 270 | "outputs": [ 271 | { 272 | "name": "stdout", 273 | "output_type": "stream", 274 | "text": [ 275 | "\n", 276 | "Int64Index: 6549 entries, 1 to 7538\n", 277 | "Data columns (total 11 columns):\n", 278 | "电影名 6549 non-null object\n", 279 | "导演 6549 non-null object\n", 280 | "编剧 6549 non-null object\n", 281 | "演员 6549 non-null object\n", 282 | "上映时间 6549 non-null object\n", 283 | "片长 6549 non-null object\n", 284 | "类型 6549 non-null object\n", 285 | "评分 6549 non-null object\n", 286 | "票房 715 non-null float64\n", 287 | "发行公司 514 non-null object\n", 288 | "制片公司 631 non-null object\n", 289 | "dtypes: float64(1), object(10)\n", 290 | "memory usage: 614.0+ KB\n", 291 | "\n", 292 | "\n", 293 | "Int64Index: 6396 entries, 0 to 6395\n", 294 | "Data columns (total 11 columns):\n", 295 | "电影名 6396 non-null object\n", 296 | "导演 6396 non-null object\n", 297 | "编剧 6396 non-null object\n", 298 | "演员 6396 non-null object\n", 299 | "片长 6396 non-null object\n", 300 | "类型 6396 non-null object\n", 301 | "评分 6396 non-null object\n", 302 | "票房 710 non-null float64\n", 303 | "发行公司 512 non-null object\n", 304 | "制片公司 627 non-null object\n", 305 | "上映时间(年) 6396 non-null object\n", 306 | "dtypes: float64(1), object(10)\n", 307 | "memory usage: 599.6+ KB\n" 308 | ] 309 | } 310 | ], 311 | "source": [ 312 | "# 6.上映时间处理\n", 313 | "\n", 314 | "# 查看上映时间的数据情况\n", 315 | "data.dropna(subset=['上映时间']).info()\n", 316 | "\n", 317 | "# 删除上映时间为空的数据\n", 318 | "data.dropna(subset=['上映时间'],inplace=True)\n", 319 | "\n", 320 | "# 删除暂无上映时间的数据\n", 321 | "data = data[data['上映时间'] != '暂无上映时间']\n", 322 | "\n", 323 | "# 提取上映时间年份\n", 324 | "# (1).将上映时间这列数据取出将ndarray转为list\n", 325 | "list_showtime = data.loc[:,'上映时间'].values.tolist()\n", 326 | "\n", 327 | "# (2).取出年份\n", 328 | "lists_showtime = []\n", 329 | "for list in list_showtime:\n", 330 | " lists_showtime.append(list[:4])\n", 331 | " \n", 332 | "# (3).拼接处理后的数据\n", 333 | "data_showtime = pd.DataFrame(lists_showtime,index=data.index,columns=['上映时间(年)'])\n", 334 | "datas = data.merge(data_showtime,left_on=data.index,right_on=data_showtime.index,how=\"outer\")\n", 335 | "\n", 336 | "# (4).将原上映时间和key_0列删除\n", 337 | "columns = datas.columns[(datas.columns!='key_0') & (datas.columns!='上映时间')]\n", 338 | "data = datas.loc[:,columns]\n", 339 | "\n", 340 | "print()\n", 341 | "\n", 342 | "# 查看处理后情况\n", 343 | "data.info()" 344 | ] 345 | }, 346 | { 347 | "cell_type": "code", 348 | "execution_count": 8, 349 | "metadata": {}, 350 | "outputs": [ 351 | { 352 | "name": "stdout", 353 | "output_type": "stream", 354 | "text": [ 355 | "\n", 356 | "Int64Index: 4814 entries, 0 to 6393\n", 357 | "Data columns (total 11 columns):\n", 358 | "电影名 4814 non-null object\n", 359 | "导演 4814 non-null object\n", 360 | "编剧 4814 non-null object\n", 361 | "演员 4814 non-null object\n", 362 | "片长 4814 non-null object\n", 363 | "类型 4814 non-null object\n", 364 | "评分 4814 non-null object\n", 365 | "票房 521 non-null float64\n", 366 | "发行公司 466 non-null object\n", 367 | "制片公司 462 non-null object\n", 368 | "上映时间(年) 4814 non-null object\n", 369 | "dtypes: float64(1), object(10)\n", 370 | "memory usage: 451.3+ KB\n", 371 | "\n", 372 | "\n", 373 | "Int64Index: 6396 entries, 0 to 6395\n", 374 | "Data columns (total 11 columns):\n", 375 | "电影名 6396 non-null object\n", 376 | "导演 6396 non-null object\n", 377 | "编剧 6396 non-null object\n", 378 | "演员 6396 non-null object\n", 379 | "类型 6396 non-null object\n", 380 | "评分 6396 non-null object\n", 381 | "票房 710 non-null float64\n", 382 | "发行公司 512 non-null object\n", 383 | "制片公司 627 non-null object\n", 384 | "上映时间(年) 6396 non-null object\n", 385 | "电影时长(分钟) 6396 non-null int32\n", 386 | "dtypes: float64(1), int32(1), object(9)\n", 387 | "memory usage: 574.6+ KB\n" 388 | ] 389 | } 390 | ], 391 | "source": [ 392 | "# 7.电影片长处理\n", 393 | "\n", 394 | "# 查看片长不存在的数据情况\n", 395 | "data[data.loc[:,'片长']!='暂无电影时长'].info()\n", 396 | "\n", 397 | "# 将暂无电影时长数据改为0分钟,但类型为str\n", 398 | "data.loc[data[(data['片长']=='暂无电影时长')].index,'片长']='0分钟'\n", 399 | "\n", 400 | "# 将空数据替换为0分钟\n", 401 | "data['片长'].fillna('0分钟',inplace=True)\n", 402 | "\n", 403 | "# 用正则表达式处理电影片长只剩数值部分\n", 404 | "\n", 405 | "# (1).将片长这列数据取出将ndarray转为list\n", 406 | "list_time = data.loc[:,'片长'].values.tolist()\n", 407 | "\n", 408 | "# (2).正则表达式处理\n", 409 | "lists = []\n", 410 | "import re\n", 411 | "for list in list_time:\n", 412 | " lists.append(re.sub(\"\\D\", \"\", list))\n", 413 | "\n", 414 | "# (3).处理特殊数据 \n", 415 | "lists_finally = []\n", 416 | "for i in lists:\n", 417 | " if len(i) < 3:\n", 418 | " lists_finally.append(i)\n", 419 | " elif len(i) > 3 and int(i[:2]) < 20:\n", 420 | " lists_finally.append(i[:3])\n", 421 | " elif len(i) > 3 and int(i[:2]) > 20:\n", 422 | " lists_finally.append(i[:2])\n", 423 | " else:\n", 424 | " lists_finally.append(i)\n", 425 | "\n", 426 | "# (4).将0替换为120,因为电影时长一般都为120\n", 427 | "lists_end = []\n", 428 | "for list in lists_finally:\n", 429 | " if list == str(0):\n", 430 | " lists_end.append(120)\n", 431 | " else:\n", 432 | " lists_end.append(list)\n", 433 | " \n", 434 | "# (5).拼接处理后的数据\n", 435 | "data_movietime = pd.DataFrame(lists_end,index=data.index,columns=['电影时长(分钟)'])\n", 436 | "datas = data.merge(data_movietime,left_on=data.index,right_on=data_movietime.index,how=\"outer\")\n", 437 | "\n", 438 | "# (6).修改电影时长(分钟)的数据类型\n", 439 | "datas['电影时长(分钟)'] = datas['电影时长(分钟)'].astype('int')\n", 440 | "\n", 441 | "# (7).将原片长和key_0列删除\n", 442 | "columns = datas.columns[(datas.columns!='key_0') & (datas.columns!='片长')]\n", 443 | "data = datas.loc[:,columns]\n", 444 | "\n", 445 | "print()\n", 446 | "\n", 447 | "# 查看处理后情况\n", 448 | "data.info()" 449 | ] 450 | }, 451 | { 452 | "cell_type": "code", 453 | "execution_count": 9, 454 | "metadata": {}, 455 | "outputs": [ 456 | { 457 | "name": "stdout", 458 | "output_type": "stream", 459 | "text": [ 460 | "\n", 461 | "Int64Index: 6396 entries, 0 to 6395\n", 462 | "Data columns (total 11 columns):\n", 463 | "电影名 6396 non-null object\n", 464 | "导演 6396 non-null object\n", 465 | "编剧 6396 non-null object\n", 466 | "演员 6396 non-null object\n", 467 | "类型 6396 non-null object\n", 468 | "评分 6396 non-null object\n", 469 | "票房 710 non-null float64\n", 470 | "发行公司 512 non-null object\n", 471 | "制片公司 627 non-null object\n", 472 | "上映时间(年) 6396 non-null object\n", 473 | "电影时长(分钟) 6396 non-null int32\n", 474 | "dtypes: float64(1), int32(1), object(9)\n", 475 | "memory usage: 574.6+ KB\n", 476 | "\n", 477 | "\n", 478 | "Int64Index: 6396 entries, 0 to 6395\n", 479 | "Data columns (total 11 columns):\n", 480 | "电影名 6396 non-null object\n", 481 | "导演 6396 non-null object\n", 482 | "编剧 6396 non-null object\n", 483 | "演员 6396 non-null object\n", 484 | "类型 6396 non-null object\n", 485 | "评分 6396 non-null object\n", 486 | "票房 710 non-null float64\n", 487 | "发行公司 512 non-null object\n", 488 | "制片公司 627 non-null object\n", 489 | "上映时间(年) 6396 non-null object\n", 490 | "电影时长(分钟) 6396 non-null int32\n", 491 | "dtypes: float64(1), int32(1), object(9)\n", 492 | "memory usage: 574.6+ KB\n" 493 | ] 494 | } 495 | ], 496 | "source": [ 497 | "# 8.电影类型处理\n", 498 | "\n", 499 | "# 查看类型为空数据(数据虽然较少,但可以不用删除替换为其他)\n", 500 | "data.dropna(subset=['类型']).info()\n", 501 | "\n", 502 | "#将类型为nan替换为其他\n", 503 | "data['类型'].fillna('其他',inplace=True)\n", 504 | "\n", 505 | "print()\n", 506 | "\n", 507 | "# 查看处理后情况\n", 508 | "data.info()" 509 | ] 510 | }, 511 | { 512 | "cell_type": "code", 513 | "execution_count": 10, 514 | "metadata": {}, 515 | "outputs": [ 516 | { 517 | "name": "stdout", 518 | "output_type": "stream", 519 | "text": [ 520 | "\n", 521 | "Int64Index: 6141 entries, 0 to 6395\n", 522 | "Data columns (total 11 columns):\n", 523 | "电影名 6141 non-null object\n", 524 | "导演 6141 non-null object\n", 525 | "编剧 6141 non-null object\n", 526 | "演员 6141 non-null object\n", 527 | "类型 6141 non-null object\n", 528 | "评分 6141 non-null object\n", 529 | "票房 698 non-null float64\n", 530 | "发行公司 509 non-null object\n", 531 | "制片公司 618 non-null object\n", 532 | "上映时间(年) 6141 non-null object\n", 533 | "电影时长(分钟) 6141 non-null int32\n", 534 | "dtypes: float64(1), int32(1), object(9)\n", 535 | "memory usage: 551.7+ KB\n", 536 | "\n", 537 | "\n", 538 | "Int64Index: 6141 entries, 0 to 6395\n", 539 | "Data columns (total 11 columns):\n", 540 | "电影名 6141 non-null object\n", 541 | "导演 6141 non-null object\n", 542 | "编剧 6141 non-null object\n", 543 | "演员 6141 non-null object\n", 544 | "类型 6141 non-null object\n", 545 | "评分 6141 non-null float64\n", 546 | "票房 698 non-null float64\n", 547 | "发行公司 509 non-null object\n", 548 | "制片公司 618 non-null object\n", 549 | "上映时间(年) 6141 non-null object\n", 550 | "电影时长(分钟) 6141 non-null int32\n", 551 | "dtypes: float64(2), int32(1), object(8)\n", 552 | "memory usage: 551.7+ KB\n" 553 | ] 554 | } 555 | ], 556 | "source": [ 557 | "# 9. 电影评分处理\n", 558 | "\n", 559 | "# 查看暂无电影评分数据(数据较少,可以删除)\n", 560 | "data[data.loc[:,'评分']!='暂无电影评分'].info()\n", 561 | "\n", 562 | "# 电影评分数据类型与小数点精确处理\n", 563 | "data = data[data.loc[:,'评分']!='暂无电影评分']\n", 564 | "data['评分'] = data['评分'].astype('float')\n", 565 | "data['评分'] = data['评分'].fillna(data['评分'].mean()).round(1)\n", 566 | "\n", 567 | "print()\n", 568 | "\n", 569 | "# 查看处理后情况\n", 570 | "data.info()" 571 | ] 572 | }, 573 | { 574 | "cell_type": "code", 575 | "execution_count": 11, 576 | "metadata": {}, 577 | "outputs": [ 578 | { 579 | "name": "stdout", 580 | "output_type": "stream", 581 | "text": [ 582 | "\n", 583 | "Int64Index: 5443 entries, 0 to 6395\n", 584 | "Data columns (total 11 columns):\n", 585 | "电影名 5443 non-null object\n", 586 | "导演 5443 non-null object\n", 587 | "编剧 5443 non-null object\n", 588 | "演员 5443 non-null object\n", 589 | "类型 5443 non-null object\n", 590 | "评分 5443 non-null float64\n", 591 | "票房 0 non-null float64\n", 592 | "发行公司 0 non-null object\n", 593 | "制片公司 0 non-null object\n", 594 | "上映时间(年) 5443 non-null object\n", 595 | "电影时长(分钟) 5443 non-null int32\n", 596 | "dtypes: float64(2), int32(1), object(8)\n", 597 | "memory usage: 489.0+ KB\n", 598 | "\n", 599 | "\n", 600 | "Int64Index: 6141 entries, 0 to 6395\n", 601 | "Data columns (total 11 columns):\n", 602 | "电影名 6141 non-null object\n", 603 | "导演 6141 non-null object\n", 604 | "编剧 6141 non-null object\n", 605 | "演员 6141 non-null object\n", 606 | "类型 6141 non-null object\n", 607 | "评分 6141 non-null float64\n", 608 | "票房 6141 non-null float64\n", 609 | "发行公司 509 non-null object\n", 610 | "制片公司 618 non-null object\n", 611 | "上映时间(年) 6141 non-null object\n", 612 | "电影时长(分钟) 6141 non-null int32\n", 613 | "dtypes: float64(2), int32(1), object(8)\n", 614 | "memory usage: 551.7+ KB\n" 615 | ] 616 | } 617 | ], 618 | "source": [ 619 | "# 10.电影票房处理\n", 620 | "\n", 621 | "# 查看票房为空的电影信息(不能删除nan,否则没多少数据了)\n", 622 | "data[pd.isnull(data['票房'])].info()\n", 623 | "\n", 624 | "# 将票房的nan替换成票房最小值\n", 625 | "data['票房'] = data['票房'].fillna(data['票房'].min())\n", 626 | "\n", 627 | "print()\n", 628 | "\n", 629 | "# 查看处理后情况\n", 630 | "data.info()" 631 | ] 632 | }, 633 | { 634 | "cell_type": "code", 635 | "execution_count": 12, 636 | "metadata": {}, 637 | "outputs": [ 638 | { 639 | "name": "stdout", 640 | "output_type": "stream", 641 | "text": [ 642 | "\n", 643 | "Int64Index: 463 entries, 12 to 6384\n", 644 | "Data columns (total 11 columns):\n", 645 | "电影名 463 non-null object\n", 646 | "导演 463 non-null object\n", 647 | "编剧 463 non-null object\n", 648 | "演员 463 non-null object\n", 649 | "类型 463 non-null object\n", 650 | "评分 463 non-null float64\n", 651 | "票房 463 non-null float64\n", 652 | "发行公司 463 non-null object\n", 653 | "制片公司 463 non-null object\n", 654 | "上映时间(年) 463 non-null object\n", 655 | "电影时长(分钟) 463 non-null int32\n", 656 | "dtypes: float64(2), int32(1), object(8)\n", 657 | "memory usage: 41.6+ KB\n", 658 | "\n", 659 | "\n", 660 | "Int64Index: 6141 entries, 0 to 6395\n", 661 | "Data columns (total 11 columns):\n", 662 | "电影名 6141 non-null object\n", 663 | "导演 6141 non-null object\n", 664 | "编剧 6141 non-null object\n", 665 | "演员 6141 non-null object\n", 666 | "类型 6141 non-null object\n", 667 | "评分 6141 non-null float64\n", 668 | "票房 6141 non-null float64\n", 669 | "发行公司 6141 non-null object\n", 670 | "制片公司 6141 non-null object\n", 671 | "上映时间(年) 6141 non-null object\n", 672 | "电影时长(分钟) 6141 non-null int32\n", 673 | "dtypes: float64(2), int32(1), object(8)\n", 674 | "memory usage: 551.7+ KB\n" 675 | ] 676 | } 677 | ], 678 | "source": [ 679 | "# 11.处理发行公司与制片公司(不能删除nan,否则没多少数据了)\n", 680 | "\n", 681 | "# 查看相应公司为空数据\n", 682 | "data.dropna(subset=['发行公司','制片公司']).info()\n", 683 | "\n", 684 | "# 将nan值替换为暂无相应公司,也不能删除\n", 685 | "data['发行公司'] = data['发行公司'].fillna('暂无发行公司')\n", 686 | "data['制片公司'] = data['制片公司'].fillna('暂无制片公司')\n", 687 | "\n", 688 | "print()\n", 689 | "\n", 690 | "# 查看处理后情况\n", 691 | "data.info()" 692 | ] 693 | }, 694 | { 695 | "cell_type": "code", 696 | "execution_count": 13, 697 | "metadata": {}, 698 | "outputs": [], 699 | "source": [ 700 | "# 12.重新排序index和columns\n", 701 | "\n", 702 | "# 重新排序行索引\n", 703 | "indexs = []\n", 704 | "for i in range(len(data)):\n", 705 | " indexs.append(i)\n", 706 | "data.index = indexs\n", 707 | "\n", 708 | "# 重新排序列索引\n", 709 | "data = data.loc[:,['电影名','导演','编剧','演员','类型','电影时长(分钟)','上映时间(年)','评分','票房','发行公司','制片公司']]" 710 | ] 711 | }, 712 | { 713 | "cell_type": "code", 714 | "execution_count": 14, 715 | "metadata": {}, 716 | "outputs": [], 717 | "source": [ 718 | "# 13.导出csv文件\n", 719 | "\n", 720 | "# 准备两份数据\n", 721 | "movies_all = data\n", 722 | "movies_half = data.loc[:,['电影名','导演','编剧','演员','类型','电影时长(分钟)','上映时间(年)','评分']]\n", 723 | "\n", 724 | "movies_all.to_csv(\"movies_all.csv\",index=None,encoding = \"utf-8\") #包含豆瓣和艺恩数据\n", 725 | "movies_half.to_csv(\"movies_half.csv\",index=None,encoding = \"utf-8\") #只包含豆瓣数据" 726 | ] 727 | }, 728 | { 729 | "cell_type": "code", 730 | "execution_count": null, 731 | "metadata": {}, 732 | "outputs": [], 733 | "source": [] 734 | } 735 | ], 736 | "metadata": { 737 | "kernelspec": { 738 | "display_name": "Python 3", 739 | "language": "python", 740 | "name": "python3" 741 | }, 742 | "language_info": { 743 | "codemirror_mode": { 744 | "name": "ipython", 745 | "version": 3 746 | }, 747 | "file_extension": ".py", 748 | "mimetype": "text/x-python", 749 | "name": "python", 750 | "nbconvert_exporter": "python", 751 | "pygments_lexer": "ipython3", 752 | "version": "3.7.3" 753 | } 754 | }, 755 | "nbformat": 4, 756 | "nbformat_minor": 2 757 | } 758 | -------------------------------------------------------------------------------- /4-Data_Analysis/所有电影时长频数分布.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 1, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "import numpy as np\n", 10 | "import pandas as pd\n", 11 | "from matplotlib import pyplot as plt\n", 12 | "from matplotlib.font_manager import FontProperties\n", 13 | "plt.rcParams['font.sans-serif'] = ['SimHei']\n", 14 | "plt.rcParams['axes.unicode_minus'] = False" 15 | ] 16 | }, 17 | { 18 | "cell_type": "code", 19 | "execution_count": 2, 20 | "metadata": {}, 21 | "outputs": [], 22 | "source": [ 23 | "data = pd.read_csv('../3-Data_Cleaning/movies_half.csv')" 24 | ] 25 | }, 26 | { 27 | "cell_type": "code", 28 | "execution_count": 3, 29 | "metadata": {}, 30 | "outputs": [ 31 | { 32 | "data": { 33 | "text/html": [ 34 | "
\n", 35 | "\n", 48 | "\n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | " \n", 148 | " \n", 149 | " \n", 150 | " \n", 151 | " \n", 152 | " \n", 153 | " \n", 154 | " \n", 155 | " \n", 156 | " \n", 157 | " \n", 158 | " \n", 159 | " \n", 160 | " \n", 161 | " \n", 162 | " \n", 163 | " \n", 164 | " \n", 165 | " \n", 166 | " \n", 167 | " \n", 168 | " \n", 169 | " \n", 170 | " \n", 171 | " \n", 172 | " \n", 173 | " \n", 174 | " \n", 175 | " \n", 176 | " \n", 177 | " \n", 178 | " \n", 179 | " \n", 180 | " \n", 181 | " \n", 182 | " \n", 183 | " \n", 184 | " \n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | " \n", 280 | " \n", 281 | " \n", 282 | " \n", 283 | " \n", 284 | " \n", 285 | " \n", 286 | " \n", 287 | " \n", 288 | " \n", 289 | " \n", 290 | " \n", 291 | " \n", 292 | " \n", 293 | " \n", 294 | " \n", 295 | " \n", 296 | " \n", 297 | " \n", 298 | " \n", 299 | " \n", 300 | " \n", 301 | " \n", 302 | " \n", 303 | " \n", 304 | " \n", 305 | " \n", 306 | " \n", 307 | " \n", 308 | " \n", 309 | " \n", 310 | " \n", 311 | " \n", 312 | " \n", 313 | " \n", 314 | " \n", 315 | " \n", 316 | " \n", 317 | " \n", 318 | " \n", 319 | " \n", 320 | " \n", 321 | " \n", 322 | " \n", 323 | " \n", 324 | " \n", 325 | " \n", 326 | " \n", 327 | " \n", 328 | " \n", 329 | " \n", 330 | " \n", 331 | " \n", 332 | " \n", 333 | " \n", 334 | " \n", 335 | " \n", 336 | " \n", 337 | " \n", 338 | " \n", 339 | " \n", 340 | " \n", 341 | " \n", 342 | " \n", 343 | " \n", 344 | " \n", 345 | " \n", 346 | " \n", 347 | " \n", 348 | " \n", 349 | " \n", 350 | " \n", 351 | " \n", 352 | " \n", 353 | " \n", 354 | " \n", 355 | " \n", 356 | " \n", 357 | " \n", 358 | " \n", 359 | " \n", 360 | " \n", 361 | " \n", 362 | " \n", 363 | " \n", 364 | " \n", 365 | " \n", 366 | " \n", 367 | " \n", 368 | " \n", 369 | " \n", 370 | " \n", 371 | " \n", 372 | " \n", 373 | " \n", 374 | " \n", 375 | " \n", 376 | " \n", 377 | " \n", 378 | " \n", 379 | " \n", 380 | " \n", 381 | " \n", 382 | " \n", 383 | " \n", 384 | " \n", 385 | " \n", 386 | " \n", 387 | " \n", 388 | " \n", 389 | " \n", 390 | " \n", 391 | " \n", 392 | " \n", 393 | " \n", 394 | " \n", 395 | " \n", 396 | " \n", 397 | " \n", 398 | " \n", 399 | " \n", 400 | " \n", 401 | " \n", 402 | " \n", 403 | " \n", 404 | " \n", 405 | " \n", 406 | " \n", 407 | " \n", 408 | " \n", 409 | " \n", 410 | " \n", 411 | " \n", 412 | " \n", 413 | " \n", 414 | " \n", 415 | " \n", 416 | " \n", 417 | " \n", 418 | " \n", 419 | " \n", 420 | " \n", 421 | " \n", 422 | " \n", 423 | " \n", 424 | " \n", 425 | " \n", 426 | " \n", 427 | " \n", 428 | " \n", 429 | " \n", 430 | " \n", 431 | " \n", 432 | " \n", 433 | " \n", 434 | " \n", 435 | " \n", 436 | " \n", 437 | " \n", 438 | " \n", 439 | " \n", 440 | " \n", 441 | " \n", 442 | " \n", 443 | " \n", 444 | " \n", 445 | " \n", 446 | " \n", 447 | " \n", 448 | " \n", 449 | " \n", 450 | " \n", 451 | " \n", 452 | " \n", 453 | " \n", 454 | " \n", 455 | " \n", 456 | " \n", 457 | " \n", 458 | " \n", 459 | " \n", 460 | " \n", 461 | " \n", 462 | " \n", 463 | " \n", 464 | " \n", 465 | " \n", 466 | " \n", 467 | " \n", 468 | " \n", 469 | " \n", 470 | " \n", 471 | " \n", 472 | " \n", 473 | " \n", 474 | " \n", 475 | " \n", 476 | " \n", 477 | " \n", 478 | " \n", 479 | " \n", 480 | " \n", 481 | " \n", 482 | " \n", 483 | " \n", 484 | " \n", 485 | " \n", 486 | " \n", 487 | " \n", 488 | " \n", 489 | " \n", 490 | " \n", 491 | " \n", 492 | " \n", 493 | " \n", 494 | " \n", 495 | " \n", 496 | " \n", 497 | " \n", 498 | " \n", 499 | " \n", 500 | " \n", 501 | " \n", 502 | " \n", 503 | " \n", 504 | " \n", 505 | " \n", 506 | " \n", 507 | " \n", 508 | " \n", 509 | " \n", 510 | " \n", 511 | " \n", 512 | " \n", 513 | " \n", 514 | " \n", 515 | " \n", 516 | " \n", 517 | " \n", 518 | " \n", 519 | " \n", 520 | " \n", 521 | " \n", 522 | " \n", 523 | " \n", 524 | " \n", 525 | " \n", 526 | " \n", 527 | " \n", 528 | " \n", 529 | " \n", 530 | " \n", 531 | " \n", 532 | " \n", 533 | " \n", 534 | " \n", 535 | " \n", 536 | " \n", 537 | " \n", 538 | " \n", 539 | " \n", 540 | " \n", 541 | " \n", 542 | " \n", 543 | " \n", 544 | " \n", 545 | " \n", 546 | " \n", 547 | " \n", 548 | " \n", 549 | " \n", 550 | " \n", 551 | " \n", 552 | " \n", 553 | " \n", 554 | " \n", 555 | " \n", 556 | " \n", 557 | " \n", 558 | " \n", 559 | " \n", 560 | " \n", 561 | " \n", 562 | " \n", 563 | " \n", 564 | " \n", 565 | " \n", 566 | " \n", 567 | " \n", 568 | " \n", 569 | " \n", 570 | " \n", 571 | " \n", 572 | " \n", 573 | " \n", 574 | " \n", 575 | " \n", 576 | " \n", 577 | " \n", 578 | " \n", 579 | " \n", 580 | " \n", 581 | " \n", 582 | " \n", 583 | " \n", 584 | " \n", 585 | " \n", 586 | " \n", 587 | " \n", 588 | " \n", 589 | " \n", 590 | " \n", 591 | " \n", 592 | " \n", 593 | " \n", 594 | " \n", 595 | " \n", 596 | " \n", 597 | " \n", 598 | " \n", 599 | " \n", 600 | " \n", 601 | " \n", 602 | " \n", 603 | " \n", 604 | " \n", 605 | " \n", 606 | " \n", 607 | " \n", 608 | " \n", 609 | " \n", 610 | " \n", 611 | " \n", 612 | " \n", 613 | " \n", 614 | " \n", 615 | " \n", 616 | " \n", 617 | " \n", 618 | " \n", 619 | " \n", 620 | " \n", 621 | " \n", 622 | " \n", 623 | " \n", 624 | " \n", 625 | " \n", 626 | " \n", 627 | " \n", 628 | " \n", 629 | " \n", 630 | " \n", 631 | " \n", 632 | " \n", 633 | " \n", 634 | " \n", 635 | " \n", 636 | " \n", 637 | " \n", 638 | " \n", 639 | " \n", 640 | " \n", 641 | " \n", 642 | " \n", 643 | " \n", 644 | " \n", 645 | " \n", 646 | " \n", 647 | " \n", 648 | " \n", 649 | " \n", 650 | " \n", 651 | " \n", 652 | " \n", 653 | " \n", 654 | " \n", 655 | " \n", 656 | " \n", 657 | " \n", 658 | " \n", 659 | " \n", 660 | " \n", 661 | " \n", 662 | " \n", 663 | " \n", 664 | " \n", 665 | " \n", 666 | " \n", 667 | " \n", 668 | " \n", 669 | " \n", 670 | " \n", 671 | " \n", 672 | " \n", 673 | " \n", 674 | " \n", 675 | " \n", 676 | " \n", 677 | " \n", 678 | " \n", 679 | " \n", 680 | " \n", 681 | " \n", 682 | " \n", 683 | " \n", 684 | " \n", 685 | " \n", 686 | " \n", 687 | " \n", 688 | " \n", 689 | " \n", 690 | " \n", 691 | " \n", 692 | " \n", 693 | " \n", 694 | " \n", 695 | " \n", 696 | " \n", 697 | " \n", 698 | " \n", 699 | " \n", 700 | " \n", 701 | " \n", 702 | " \n", 703 | " \n", 704 | " \n", 705 | " \n", 706 | " \n", 707 | " \n", 708 | " \n", 709 | " \n", 710 | " \n", 711 | " \n", 712 | " \n", 713 | " \n", 714 | " \n", 715 | " \n", 716 | " \n", 717 | " \n", 718 | " \n", 719 | " \n", 720 | " \n", 721 | " \n", 722 | " \n", 723 | " \n", 724 | " \n", 725 | " \n", 726 | " \n", 727 | " \n", 728 | " \n", 729 | " \n", 730 | " \n", 731 | " \n", 732 | " \n", 733 | " \n", 734 | " \n", 735 | "
电影名导演编剧演员类型电影时长(分钟)上映时间(年)评分
0角斗士 Gladiator雷德利·斯科特大卫·弗兰佐尼,约翰·洛根,威廉姆·尼克尔森罗素·克劳,华金·菲尼克斯,康妮·尼尔森,奥列佛·里德,理查德·哈里斯,德里克·雅各比,杰曼...剧情15520008.5
1外出就餐3:饕餮自助 Eating Out 3: All You Can Eat葛伦·盖洛菲利普·J·巴特尔,亚伦·布洛卡利百加·科汉,克里斯·萨尔瓦多,迈克尔E.R.沃克,敏科·斯荳,莱斯利·乔丹,素玛立·蒙塔诺...喜剧8020096.6
2蝴蝶效应2 The Butterfly Effect 2约翰·R·莱昂耐迪Michael D. Weiss埃里克·里夫利,埃莉卡·杜兰斯,达斯汀·米利甘,吉娜·赫尔顿,林赛·麦克斯维尔剧情9220066.1
3铁血柔情 Love Me Tender罗伯特·D·韦布莫里斯·杰拉蒂,罗伯特·巴克纳Richard Egan,Debra Paget,Elvis Presley剧情8919567.2
4冰川时代 Ice Age卡洛斯·沙尔丹哈迈克尔·伯格 ,迈克尔·J·威尔森,彼得·阿克曼雷·罗马诺,约翰·雷吉扎莫,丹尼斯·利瑞,杰克·布莱克喜剧8120028.6
5危情雪夜陈国星郝建陶泽如,吴越,高明,何冰,马伊琍,张涵予剧情8420045.9
6李尔王 Great Performances: King Lear特雷弗·纳恩莎士比亚伊恩·麦克莱恩,菲利普·文切斯特,弗兰西斯·巴贝,莫妮卡·杜兰,萝玛拉·嘉瑞,西尔维斯特·迈...剧情15020088.3
7极限特工2 xXx: State of the Union李·塔玛霍瑞西蒙·金伯格艾斯·库珀,塞缪尔·杰克逊,威廉·达福,斯科特·斯比德曼,彼得·斯特劳斯,桑妮·马布雷,诺娜·加耶动作10120056.6
8大逃杀 バトル・ロワイアル深作欣二深作健太,高见广春藤原龙也,前田亚季,山本太郎,北野武,栗山千明,高冈奏辅,塚本高史,小谷幸弘,石川绘里,神谷...剧情11420008.0
9蜀山奇侠萧笙林少枝,钟政良,吴玉章,曾广平杨宝玲,李婉华,李丽丽,龚慈恩,关礼杰爱情12019908.2
10范海辛 Van Helsing斯蒂芬·索莫斯斯蒂芬·索莫斯休·杰克曼,凯特·贝金赛尔,理查德·劳斯伯格,大卫·文翰,舒勒·汉斯利,埃伦娜·安纳亚,威尔...剧情13120047.1
11三生三世枕上书杨玄梁振华,胡雅婷,黄姗姗,何庆平迪丽热巴,高伟光,陈楚河,郭品超,刘雨欣,刘芮麟,王骁,李东恒,袁雨萱,黄俊捷剧情12020206.5
12芭啦芭啦樱之花马楚成陈淑贤郭富城,张柏芝,阿牛,韩雪,恬妞剧情10120016.1
13中国有嘻哈车澈岑俊义吴亦凡,张震岳,姚中仁,潘玮柏音乐12020177.2
14伟大的寂静 Il grande silenzio赛尔乔·科尔布奇马里奥·阿门多拉,布鲁诺·科尔布奇,赛尔乔·科尔布奇,Vittoriano Petrilli让-路易·特兰蒂尼昂,克劳斯·金斯基,弗兰克·沃尔夫剧情10519687.5
15茜茜公主2 Sissi - Die junge Kaiserin恩斯特·马里施卡恩斯特·马里施卡罗密·施奈德,卡尔海因茨·伯姆,玛格达·施奈德,古斯塔夫·克努特,威尔玛·德吉舍尔剧情10719568.4
16牧场之家好做伴 A Prairie Home Companion罗伯特·奥特曼加里森·凯勒尔梅丽尔·斯特里普,莉莉·汤姆林,伍迪·哈里森,琳赛·洛翰,汤米·李·琼斯,加里森·凯勒尔,凯...剧情10520067.7
17失忆风云 4Got10 (2015)Timothy Woodward Jr.Sean Ryan约翰尼·梅辛纳,杜夫·龙格尔,丹尼·特雷霍动作8420154.9
18非常完美金依萌金依萌章子怡,范冰冰,何润东,苏志燮,姚晨,林心如,王姬喜剧10720095.9
19疯狂的麦克斯3 Mad Max Beyond Thunderdome乔治·米勒乔治·米勒,特里·海斯梅尔·吉布森,蒂娜·特纳,亚当·科克伯恩,布鲁斯·斯宾斯,弗兰克·思林,Angelo Ros...动作10719856.6
20我是证人安相勋顾小白,安相勋,尹昌业,崔民硕杨幂,鹿晗,王景春,朱亚文,刘芮麟,赖艺,柴蔚,李溪芮剧情11220156.2
21人不彪悍枉少年邓科孙笑侯明昊,万鹏,张耀,代露娃,李明德,潘美烨,王森剧情12020187.6
22爱上艾略特 Doing ElliotNoel AlejandroNoel AlejandroCyrill,Tristan短片2120167.1
23银魂 第二季 延长篇 銀魂' 延長戦藤田阳一大和屋晓,横手美智子,下山健人,空知英秋杉田智和,钉宫理惠,阪口大助,石田彰,中井和哉,高桥美佳子,雪野五月,折笠富美子,铃村健一,...剧情12020129.6
24暮光之城4:破晓(下) The Twilight Saga: Breaking Dawn -...比尔·康顿斯蒂芬妮·梅耶克里斯汀·斯图尔特,罗伯特·帕丁森,泰勒·洛特纳,彼得·费辛利,伊莉莎白·里瑟,阿什丽·格林...剧情11520126.9
25莫娣 Maudie艾斯林·沃什谢丽·怀特莎莉·霍金斯,伊桑·霍克,卡瑞·玛切特,加布里埃尔·罗斯,扎卡里·贝内特,比利·麦克莱伦,劳...剧情11520169.1
26昆虫总动员2——来自远方的后援军 Minuscule 2 - Les mandibules...海琳·吉罗海琳·吉罗,托马斯·绍博布鲁诺·萨拉曼,蒂埃里·弗雷蒙,斯特凡·库隆,让·南加,萨拉·科恩-阿德里亚,让-保罗·居永...动画9120198.3
27平原上的夏洛克徐磊徐磊徐朝英,张占义,宿树合剧情9820197.9
28特洛耶·希文:安抚我 Troye Sivan: Talk Me DownTim MattiaMatthew Eriksson,特洛耶·希文Matthew Eriksson,特洛耶·希文短片12020159.4
29铁齿铜牙纪晓岚刘家成陈文贵,邹静之,郑万隆,王振潜,王琛,史航,顾言张国立,王刚,张铁林,袁立,赵敏芬,杨丽菁,张春年剧情12020018.3
...........................
6111斯托克 Stoker朴赞郁温特沃斯·米勒米娅·华希科沃斯卡,妮可·基德曼,马修·古迪,德蒙特·莫罗尼,卢卡斯·提尔,阿尔登·埃伦瑞奇...剧情9920137.5
6112深海寻人徐克徐克李心洁,梁洛施,张震,郭晓东,梁家辉,张震岳,高振鹏剧情11820085.9
6113红色气球 紅色氣球税成铎李政达,刘沿玱,陈嘉轩徐韬,陈昊森,亮哲,谢坤达,方志友,信剧情12020178.3
6114盘龙卧虎高山顶延艺高建群,谭力,葛水平潘粤明,刘涛剧情12020107.3
6115雨中的蜗牛 שבלולים בגשם亚里夫·莫泽尔亚里夫·莫泽尔,约西·艾弗尼·莱维约夫·卢温,耶胡达·那哈利,亚里夫·莫泽尔,莫兰·罗森布拉特,埃兰·列夫,哈瓦·奥特曼,埃亚...剧情8220136.8
6116红猪 紅の豚宫崎骏宫崎骏森山周一郎,加藤登纪子,冈村明美,桂三枝,上条恒彦,大塚明夫,关弘子,稻垣雅之,古本新之辅,...喜剧9419928.5
6117美国犯罪故事 第二季 American Crime Story Season 2瑞恩·墨菲汤姆·罗伯·史密斯,莫琳·奥思,玛吉·科恩埃德加·拉米雷兹,达伦·克里斯,瑞奇·马丁,佩内洛普·克鲁兹,达丝莎·坡兰科,威尔·切斯,杰...剧情12020188.5
6118加菲猫2 Garfield: A Tail of Two KittiesTim HillJoel Cohen,Alec Sokolow比尔·默瑞,布瑞金·梅耶,詹妮弗·洛芙·休伊特,蒂姆·克里,比利·康诺利喜剧7820067.5
6119赤裸特工程小东王晶李美琪,安雅,吴彦祖,李菲,郑佩佩,黄佩霞,连凯,卢淑仪,吴嘉龙剧情9220026.4
6120皮囊之下 Under the Skin乔纳森·格雷泽瓦尔特·坎贝尔,米歇尔·法贝尔,乔纳森·格雷泽斯嘉丽·约翰逊,杰里米·麦克威廉姆斯,琳西·泰勒·麦凯,道基·麦康奈尔,凯文·麦卡林登,克里...科幻10720136.2
6121无主之地 Ničija zemlja丹尼斯·塔诺维奇丹尼斯·塔诺维奇布兰科·德约里奇,瑞内·比托拉贾奇,菲利普·索瓦戈维奇,乔治斯·西蒂斯,凯特琳·卡特利吉剧情9820018.6
6122太阳浩劫 Sunshine丹尼·博伊尔亚历克斯·加兰基里安·墨菲,杨紫琼,特洛伊·格雷提,罗丝·伯恩,真田广之,本尼迪克特·王,克里斯·埃文斯,...科幻10720076.9
6123爱情公寓4韦正汪远娄艺潇,陈赫,李金铭,孙艺洲,李佳航,王传君,邓家佳,金世佳喜剧12020147.4
6124嗝嗝老师 Hichki西达夫·马贺拉奥库勒·查乌赫雷,西达夫·马贺拉,巴·哈达普,加内萨·潘德特拉妮·玛克赫吉,内拉吉·卡比,萨钦,苏普丽雅·皮尔加卡尔,罗希特·萨拉夫,维克拉姆·戈克哈尔...剧情12020187.5
6125企业战士 僕のセクシャルハラスメント杜野幼青柏倉つとむ,小杉十郎太,森川智之柏倉つとむ,小杉十郎太,森川智之动画12019946.4
6126日常对话 日常對話黄惠侦黄惠侦黄惠侦纪录片8820178.3
6127九层妖塔陆川陆川,天下霸唱赵又廷,姚晨,凤小岳,李晨,唐嫣,冯瓅,李光洁,王庆祥,吴军,王德顺动作11520154.3
6128花蕊纹身 花芯の刺青 熟れた壺小沼勝松岡清治谷奈绪美,北河多香子,中丸信,花柳幻舟,蟹江敬三,長弘,結城マミ,小見山玉樹,北上忠行,近江...剧情7419766.7
6129星期恋人:前篇 セブンデイズ MONDAY→THURSDAY横井健司高桥奈津子广濑智纪,山田·詹姆斯·武,田中日奈子,日和佑贵,泷口幸广爱情6620156.1
6130北京遇上西雅图之不二情书薛晓路薛晓路,焦华静汤唯,吴秀波,惠英红,秦沛,吴彦姝,颜卓灵,王志文,陆毅,祖峰,王茜,刘志宏,张一白,艾丽娅...喜剧13120166.4
6131摩登情爱 第一季 Modern Love Season 1约翰·卡尼约翰·卡尼,莎朗·豪根,汤姆·豪尔,奥黛丽·威尔斯安妮·海瑟薇,安德鲁·斯科特,蒂娜·菲,约翰·斯拉特里,戴夫·帕特尔,凯瑟琳·基纳,安迪·加...喜剧12020198.7
6132窈窕淑女 My Fair Lady乔治·库克艾伦·杰伊·勒纳,萧伯纳奥黛丽·赫本,雷克斯·哈里森,斯坦利·霍洛威,维尔弗雷德·海德-怀特,格拉黛丝·库珀,杰瑞米...剧情17219648.1
6133Miss. 女教师 Miss.女教師竹内法博竹内法博星野光剧情7220065.0
6134甜蜜的复仇 Sweetwater罗根·米勒罗根·米勒,诺亚·米勒,Andrew McKenzie艾德·哈里斯,詹纽瑞·琼斯,詹森·艾萨克,爱德华多·诺列加,斯蒂芬·鲁特,杰森·阿尔丁,迪兰·科宁西部9520135.9
6135随我婆娑 Shall We Dance马克·桑德里奇艾伦·斯科特,欧内斯特·帕加诺,哈罗德·布克曼弗雷德·阿斯泰尔,金杰·罗杰斯,爱德华·艾沃瑞特·霍顿喜剧10919378.3
6136爱是漫长旅程 Love's Long JourneyMichael Landon Jr.Erin Cottrell,罗根·巴塞洛缪,威廉姆·摩根·谢泼德Erin Cottrell,罗根·巴塞洛缪,威廉姆·摩根·谢泼德剧情12020058.0
6137天外飞仙黄伟明邓紫珊胡歌,林依晨,李勤勤,赵亮,谢君豪,郭妃丽,窦智孔,吕一,唐宸禹,韩雪,陈秀丽,徐锦江,邬倩...爱情12020067.9
6138小叮当:永无兽传奇 Tinker Bell and the Legend of the Ne...史蒂夫·伦特汤姆·罗杰斯,罗伯特·斯库利,马克·麦科克尔,凯特·康杜尔,史蒂夫·伦特金妮弗·古德温,梅·惠特曼,罗莎里奥·道森,刘玉玲,帕梅拉·阿德龙,雷文-西蒙尼,梅根·希尔...动画7620148.1
6139魔幻手机余明生九年李滨,陈创,舒畅,谢宁,洪乙心,陈明昊,于珈若,王伟光,柳小海,张倩,焦恩俊,刘希媛,丁健,...喜剧12020087.9
6140我是特种兵刘猛刘猛谷智鑫,徐佳,刘晓洁,任天野,任柯诺,何达,傅浤鸣,郎峰,侯勇,王奎荣,周惠林,杨舒,杨烁,赵荀剧情12020118.2
\n", 736 | "

6141 rows × 8 columns

\n", 737 | "
" 738 | ], 739 | "text/plain": [ 740 | " 电影名 导演 \\\n", 741 | "0 角斗士 Gladiator 雷德利·斯科特 \n", 742 | "1 外出就餐3:饕餮自助 Eating Out 3: All You Can Eat 葛伦·盖洛 \n", 743 | "2 蝴蝶效应2 The Butterfly Effect 2 约翰·R·莱昂耐迪 \n", 744 | "3 铁血柔情 Love Me Tender 罗伯特·D·韦布 \n", 745 | "4 冰川时代 Ice Age 卡洛斯·沙尔丹哈 \n", 746 | "5 危情雪夜 陈国星 \n", 747 | "6 李尔王 Great Performances: King Lear 特雷弗·纳恩 \n", 748 | "7 极限特工2 xXx: State of the Union 李·塔玛霍瑞 \n", 749 | "8 大逃杀 バトル・ロワイアル 深作欣二 \n", 750 | "9 蜀山奇侠 萧笙 \n", 751 | "10 范海辛 Van Helsing 斯蒂芬·索莫斯 \n", 752 | "11 三生三世枕上书 杨玄 \n", 753 | "12 芭啦芭啦樱之花 马楚成 \n", 754 | "13 中国有嘻哈 车澈 \n", 755 | "14 伟大的寂静 Il grande silenzio 赛尔乔·科尔布奇 \n", 756 | "15 茜茜公主2 Sissi - Die junge Kaiserin 恩斯特·马里施卡 \n", 757 | "16 牧场之家好做伴 A Prairie Home Companion 罗伯特·奥特曼 \n", 758 | "17 失忆风云 4Got10 (2015) Timothy Woodward Jr. \n", 759 | "18 非常完美 金依萌 \n", 760 | "19 疯狂的麦克斯3 Mad Max Beyond Thunderdome 乔治·米勒 \n", 761 | "20 我是证人 安相勋 \n", 762 | "21 人不彪悍枉少年 邓科 \n", 763 | "22 爱上艾略特 Doing Elliot Noel Alejandro \n", 764 | "23 银魂 第二季 延长篇 銀魂' 延長戦 藤田阳一 \n", 765 | "24 暮光之城4:破晓(下) The Twilight Saga: Breaking Dawn -... 比尔·康顿 \n", 766 | "25 莫娣 Maudie 艾斯林·沃什 \n", 767 | "26 昆虫总动员2——来自远方的后援军 Minuscule 2 - Les mandibules... 海琳·吉罗 \n", 768 | "27 平原上的夏洛克 徐磊 \n", 769 | "28 特洛耶·希文:安抚我 Troye Sivan: Talk Me Down Tim Mattia \n", 770 | "29 铁齿铜牙纪晓岚 刘家成 \n", 771 | "... ... ... \n", 772 | "6111 斯托克 Stoker 朴赞郁 \n", 773 | "6112 深海寻人 徐克 \n", 774 | "6113 红色气球 紅色氣球 税成铎 \n", 775 | "6114 盘龙卧虎高山顶 延艺 \n", 776 | "6115 雨中的蜗牛 שבלולים בגשם 亚里夫·莫泽尔 \n", 777 | "6116 红猪 紅の豚 宫崎骏 \n", 778 | "6117 美国犯罪故事 第二季 American Crime Story Season 2 瑞恩·墨菲 \n", 779 | "6118 加菲猫2 Garfield: A Tail of Two Kitties Tim Hill \n", 780 | "6119 赤裸特工 程小东 \n", 781 | "6120 皮囊之下 Under the Skin 乔纳森·格雷泽 \n", 782 | "6121 无主之地 Ničija zemlja 丹尼斯·塔诺维奇 \n", 783 | "6122 太阳浩劫 Sunshine 丹尼·博伊尔 \n", 784 | "6123 爱情公寓4 韦正 \n", 785 | "6124 嗝嗝老师 Hichki 西达夫·马贺拉 \n", 786 | "6125 企业战士 僕のセクシャルハラスメント 杜野幼青 \n", 787 | "6126 日常对话 日常對話 黄惠侦 \n", 788 | "6127 九层妖塔 陆川 \n", 789 | "6128 花蕊纹身 花芯の刺青 熟れた壺 小沼勝 \n", 790 | "6129 星期恋人:前篇 セブンデイズ MONDAY→THURSDAY 横井健司 \n", 791 | "6130 北京遇上西雅图之不二情书 薛晓路 \n", 792 | "6131 摩登情爱 第一季 Modern Love Season 1 约翰·卡尼 \n", 793 | "6132 窈窕淑女 My Fair Lady 乔治·库克 \n", 794 | "6133 Miss. 女教师 Miss.女教師 竹内法博 \n", 795 | "6134 甜蜜的复仇 Sweetwater 罗根·米勒 \n", 796 | "6135 随我婆娑 Shall We Dance 马克·桑德里奇 \n", 797 | "6136 爱是漫长旅程 Love's Long Journey Michael Landon Jr. \n", 798 | "6137 天外飞仙 黄伟明 \n", 799 | "6138 小叮当:永无兽传奇 Tinker Bell and the Legend of the Ne... 史蒂夫·伦特 \n", 800 | "6139 魔幻手机 余明生 \n", 801 | "6140 我是特种兵 刘猛 \n", 802 | "\n", 803 | " 编剧 \\\n", 804 | "0 大卫·弗兰佐尼,约翰·洛根,威廉姆·尼克尔森 \n", 805 | "1 菲利普·J·巴特尔,亚伦·布洛卡 \n", 806 | "2 Michael D. Weiss \n", 807 | "3 莫里斯·杰拉蒂,罗伯特·巴克纳 \n", 808 | "4 迈克尔·伯格 ,迈克尔·J·威尔森,彼得·阿克曼 \n", 809 | "5 郝建 \n", 810 | "6 莎士比亚 \n", 811 | "7 西蒙·金伯格 \n", 812 | "8 深作健太,高见广春 \n", 813 | "9 林少枝,钟政良,吴玉章,曾广平 \n", 814 | "10 斯蒂芬·索莫斯 \n", 815 | "11 梁振华,胡雅婷,黄姗姗,何庆平 \n", 816 | "12 陈淑贤 \n", 817 | "13 岑俊义 \n", 818 | "14 马里奥·阿门多拉,布鲁诺·科尔布奇,赛尔乔·科尔布奇,Vittoriano Petrilli \n", 819 | "15 恩斯特·马里施卡 \n", 820 | "16 加里森·凯勒尔 \n", 821 | "17 Sean Ryan \n", 822 | "18 金依萌 \n", 823 | "19 乔治·米勒,特里·海斯 \n", 824 | "20 顾小白,安相勋,尹昌业,崔民硕 \n", 825 | "21 孙笑 \n", 826 | "22 Noel Alejandro \n", 827 | "23 大和屋晓,横手美智子,下山健人,空知英秋 \n", 828 | "24 斯蒂芬妮·梅耶 \n", 829 | "25 谢丽·怀特 \n", 830 | "26 海琳·吉罗,托马斯·绍博 \n", 831 | "27 徐磊 \n", 832 | "28 Matthew Eriksson,特洛耶·希文 \n", 833 | "29 陈文贵,邹静之,郑万隆,王振潜,王琛,史航,顾言 \n", 834 | "... ... \n", 835 | "6111 温特沃斯·米勒 \n", 836 | "6112 徐克 \n", 837 | "6113 李政达,刘沿玱,陈嘉轩 \n", 838 | "6114 高建群,谭力,葛水平 \n", 839 | "6115 亚里夫·莫泽尔,约西·艾弗尼·莱维 \n", 840 | "6116 宫崎骏 \n", 841 | "6117 汤姆·罗伯·史密斯,莫琳·奥思,玛吉·科恩 \n", 842 | "6118 Joel Cohen,Alec Sokolow \n", 843 | "6119 王晶 \n", 844 | "6120 瓦尔特·坎贝尔,米歇尔·法贝尔,乔纳森·格雷泽 \n", 845 | "6121 丹尼斯·塔诺维奇 \n", 846 | "6122 亚历克斯·加兰 \n", 847 | "6123 汪远 \n", 848 | "6124 奥库勒·查乌赫雷,西达夫·马贺拉,巴·哈达普,加内萨·潘德特 \n", 849 | "6125 柏倉つとむ,小杉十郎太,森川智之 \n", 850 | "6126 黄惠侦 \n", 851 | "6127 陆川,天下霸唱 \n", 852 | "6128 松岡清治 \n", 853 | "6129 高桥奈津子 \n", 854 | "6130 薛晓路,焦华静 \n", 855 | "6131 约翰·卡尼,莎朗·豪根,汤姆·豪尔,奥黛丽·威尔斯 \n", 856 | "6132 艾伦·杰伊·勒纳,萧伯纳 \n", 857 | "6133 竹内法博 \n", 858 | "6134 罗根·米勒,诺亚·米勒,Andrew McKenzie \n", 859 | "6135 艾伦·斯科特,欧内斯特·帕加诺,哈罗德·布克曼 \n", 860 | "6136 Erin Cottrell,罗根·巴塞洛缪,威廉姆·摩根·谢泼德 \n", 861 | "6137 邓紫珊 \n", 862 | "6138 汤姆·罗杰斯,罗伯特·斯库利,马克·麦科克尔,凯特·康杜尔,史蒂夫·伦特 \n", 863 | "6139 九年 \n", 864 | "6140 刘猛 \n", 865 | "\n", 866 | " 演员 类型 电影时长(分钟) \\\n", 867 | "0 罗素·克劳,华金·菲尼克斯,康妮·尼尔森,奥列佛·里德,理查德·哈里斯,德里克·雅各比,杰曼... 剧情 155 \n", 868 | "1 利百加·科汉,克里斯·萨尔瓦多,迈克尔E.R.沃克,敏科·斯荳,莱斯利·乔丹,素玛立·蒙塔诺... 喜剧 80 \n", 869 | "2 埃里克·里夫利,埃莉卡·杜兰斯,达斯汀·米利甘,吉娜·赫尔顿,林赛·麦克斯维尔 剧情 92 \n", 870 | "3 Richard Egan,Debra Paget,Elvis Presley 剧情 89 \n", 871 | "4 雷·罗马诺,约翰·雷吉扎莫,丹尼斯·利瑞,杰克·布莱克 喜剧 81 \n", 872 | "5 陶泽如,吴越,高明,何冰,马伊琍,张涵予 剧情 84 \n", 873 | "6 伊恩·麦克莱恩,菲利普·文切斯特,弗兰西斯·巴贝,莫妮卡·杜兰,萝玛拉·嘉瑞,西尔维斯特·迈... 剧情 150 \n", 874 | "7 艾斯·库珀,塞缪尔·杰克逊,威廉·达福,斯科特·斯比德曼,彼得·斯特劳斯,桑妮·马布雷,诺娜·加耶 动作 101 \n", 875 | "8 藤原龙也,前田亚季,山本太郎,北野武,栗山千明,高冈奏辅,塚本高史,小谷幸弘,石川绘里,神谷... 剧情 114 \n", 876 | "9 杨宝玲,李婉华,李丽丽,龚慈恩,关礼杰 爱情 120 \n", 877 | "10 休·杰克曼,凯特·贝金赛尔,理查德·劳斯伯格,大卫·文翰,舒勒·汉斯利,埃伦娜·安纳亚,威尔... 剧情 131 \n", 878 | "11 迪丽热巴,高伟光,陈楚河,郭品超,刘雨欣,刘芮麟,王骁,李东恒,袁雨萱,黄俊捷 剧情 120 \n", 879 | "12 郭富城,张柏芝,阿牛,韩雪,恬妞 剧情 101 \n", 880 | "13 吴亦凡,张震岳,姚中仁,潘玮柏 音乐 120 \n", 881 | "14 让-路易·特兰蒂尼昂,克劳斯·金斯基,弗兰克·沃尔夫 剧情 105 \n", 882 | "15 罗密·施奈德,卡尔海因茨·伯姆,玛格达·施奈德,古斯塔夫·克努特,威尔玛·德吉舍尔 剧情 107 \n", 883 | "16 梅丽尔·斯特里普,莉莉·汤姆林,伍迪·哈里森,琳赛·洛翰,汤米·李·琼斯,加里森·凯勒尔,凯... 剧情 105 \n", 884 | "17 约翰尼·梅辛纳,杜夫·龙格尔,丹尼·特雷霍 动作 84 \n", 885 | "18 章子怡,范冰冰,何润东,苏志燮,姚晨,林心如,王姬 喜剧 107 \n", 886 | "19 梅尔·吉布森,蒂娜·特纳,亚当·科克伯恩,布鲁斯·斯宾斯,弗兰克·思林,Angelo Ros... 动作 107 \n", 887 | "20 杨幂,鹿晗,王景春,朱亚文,刘芮麟,赖艺,柴蔚,李溪芮 剧情 112 \n", 888 | "21 侯明昊,万鹏,张耀,代露娃,李明德,潘美烨,王森 剧情 120 \n", 889 | "22 Cyrill,Tristan 短片 21 \n", 890 | "23 杉田智和,钉宫理惠,阪口大助,石田彰,中井和哉,高桥美佳子,雪野五月,折笠富美子,铃村健一,... 剧情 120 \n", 891 | "24 克里斯汀·斯图尔特,罗伯特·帕丁森,泰勒·洛特纳,彼得·费辛利,伊莉莎白·里瑟,阿什丽·格林... 剧情 115 \n", 892 | "25 莎莉·霍金斯,伊桑·霍克,卡瑞·玛切特,加布里埃尔·罗斯,扎卡里·贝内特,比利·麦克莱伦,劳... 剧情 115 \n", 893 | "26 布鲁诺·萨拉曼,蒂埃里·弗雷蒙,斯特凡·库隆,让·南加,萨拉·科恩-阿德里亚,让-保罗·居永... 动画 91 \n", 894 | "27 徐朝英,张占义,宿树合 剧情 98 \n", 895 | "28 Matthew Eriksson,特洛耶·希文 短片 120 \n", 896 | "29 张国立,王刚,张铁林,袁立,赵敏芬,杨丽菁,张春年 剧情 120 \n", 897 | "... ... ... ... \n", 898 | "6111 米娅·华希科沃斯卡,妮可·基德曼,马修·古迪,德蒙特·莫罗尼,卢卡斯·提尔,阿尔登·埃伦瑞奇... 剧情 99 \n", 899 | "6112 李心洁,梁洛施,张震,郭晓东,梁家辉,张震岳,高振鹏 剧情 118 \n", 900 | "6113 徐韬,陈昊森,亮哲,谢坤达,方志友,信 剧情 120 \n", 901 | "6114 潘粤明,刘涛 剧情 120 \n", 902 | "6115 约夫·卢温,耶胡达·那哈利,亚里夫·莫泽尔,莫兰·罗森布拉特,埃兰·列夫,哈瓦·奥特曼,埃亚... 剧情 82 \n", 903 | "6116 森山周一郎,加藤登纪子,冈村明美,桂三枝,上条恒彦,大塚明夫,关弘子,稻垣雅之,古本新之辅,... 喜剧 94 \n", 904 | "6117 埃德加·拉米雷兹,达伦·克里斯,瑞奇·马丁,佩内洛普·克鲁兹,达丝莎·坡兰科,威尔·切斯,杰... 剧情 120 \n", 905 | "6118 比尔·默瑞,布瑞金·梅耶,詹妮弗·洛芙·休伊特,蒂姆·克里,比利·康诺利 喜剧 78 \n", 906 | "6119 李美琪,安雅,吴彦祖,李菲,郑佩佩,黄佩霞,连凯,卢淑仪,吴嘉龙 剧情 92 \n", 907 | "6120 斯嘉丽·约翰逊,杰里米·麦克威廉姆斯,琳西·泰勒·麦凯,道基·麦康奈尔,凯文·麦卡林登,克里... 科幻 107 \n", 908 | "6121 布兰科·德约里奇,瑞内·比托拉贾奇,菲利普·索瓦戈维奇,乔治斯·西蒂斯,凯特琳·卡特利吉 剧情 98 \n", 909 | "6122 基里安·墨菲,杨紫琼,特洛伊·格雷提,罗丝·伯恩,真田广之,本尼迪克特·王,克里斯·埃文斯,... 科幻 107 \n", 910 | "6123 娄艺潇,陈赫,李金铭,孙艺洲,李佳航,王传君,邓家佳,金世佳 喜剧 120 \n", 911 | "6124 拉妮·玛克赫吉,内拉吉·卡比,萨钦,苏普丽雅·皮尔加卡尔,罗希特·萨拉夫,维克拉姆·戈克哈尔... 剧情 120 \n", 912 | "6125 柏倉つとむ,小杉十郎太,森川智之 动画 120 \n", 913 | "6126 黄惠侦 纪录片 88 \n", 914 | "6127 赵又廷,姚晨,凤小岳,李晨,唐嫣,冯瓅,李光洁,王庆祥,吴军,王德顺 动作 115 \n", 915 | "6128 谷奈绪美,北河多香子,中丸信,花柳幻舟,蟹江敬三,長弘,結城マミ,小見山玉樹,北上忠行,近江... 剧情 74 \n", 916 | "6129 广濑智纪,山田·詹姆斯·武,田中日奈子,日和佑贵,泷口幸广 爱情 66 \n", 917 | "6130 汤唯,吴秀波,惠英红,秦沛,吴彦姝,颜卓灵,王志文,陆毅,祖峰,王茜,刘志宏,张一白,艾丽娅... 喜剧 131 \n", 918 | "6131 安妮·海瑟薇,安德鲁·斯科特,蒂娜·菲,约翰·斯拉特里,戴夫·帕特尔,凯瑟琳·基纳,安迪·加... 喜剧 120 \n", 919 | "6132 奥黛丽·赫本,雷克斯·哈里森,斯坦利·霍洛威,维尔弗雷德·海德-怀特,格拉黛丝·库珀,杰瑞米... 剧情 172 \n", 920 | "6133 星野光 剧情 72 \n", 921 | "6134 艾德·哈里斯,詹纽瑞·琼斯,詹森·艾萨克,爱德华多·诺列加,斯蒂芬·鲁特,杰森·阿尔丁,迪兰·科宁 西部 95 \n", 922 | "6135 弗雷德·阿斯泰尔,金杰·罗杰斯,爱德华·艾沃瑞特·霍顿 喜剧 109 \n", 923 | "6136 Erin Cottrell,罗根·巴塞洛缪,威廉姆·摩根·谢泼德 剧情 120 \n", 924 | "6137 胡歌,林依晨,李勤勤,赵亮,谢君豪,郭妃丽,窦智孔,吕一,唐宸禹,韩雪,陈秀丽,徐锦江,邬倩... 爱情 120 \n", 925 | "6138 金妮弗·古德温,梅·惠特曼,罗莎里奥·道森,刘玉玲,帕梅拉·阿德龙,雷文-西蒙尼,梅根·希尔... 动画 76 \n", 926 | "6139 李滨,陈创,舒畅,谢宁,洪乙心,陈明昊,于珈若,王伟光,柳小海,张倩,焦恩俊,刘希媛,丁健,... 喜剧 120 \n", 927 | "6140 谷智鑫,徐佳,刘晓洁,任天野,任柯诺,何达,傅浤鸣,郎峰,侯勇,王奎荣,周惠林,杨舒,杨烁,赵荀 剧情 120 \n", 928 | "\n", 929 | " 上映时间(年) 评分 \n", 930 | "0 2000 8.5 \n", 931 | "1 2009 6.6 \n", 932 | "2 2006 6.1 \n", 933 | "3 1956 7.2 \n", 934 | "4 2002 8.6 \n", 935 | "5 2004 5.9 \n", 936 | "6 2008 8.3 \n", 937 | "7 2005 6.6 \n", 938 | "8 2000 8.0 \n", 939 | "9 1990 8.2 \n", 940 | "10 2004 7.1 \n", 941 | "11 2020 6.5 \n", 942 | "12 2001 6.1 \n", 943 | "13 2017 7.2 \n", 944 | "14 1968 7.5 \n", 945 | "15 1956 8.4 \n", 946 | "16 2006 7.7 \n", 947 | "17 2015 4.9 \n", 948 | "18 2009 5.9 \n", 949 | "19 1985 6.6 \n", 950 | "20 2015 6.2 \n", 951 | "21 2018 7.6 \n", 952 | "22 2016 7.1 \n", 953 | "23 2012 9.6 \n", 954 | "24 2012 6.9 \n", 955 | "25 2016 9.1 \n", 956 | "26 2019 8.3 \n", 957 | "27 2019 7.9 \n", 958 | "28 2015 9.4 \n", 959 | "29 2001 8.3 \n", 960 | "... ... ... \n", 961 | "6111 2013 7.5 \n", 962 | "6112 2008 5.9 \n", 963 | "6113 2017 8.3 \n", 964 | "6114 2010 7.3 \n", 965 | "6115 2013 6.8 \n", 966 | "6116 1992 8.5 \n", 967 | "6117 2018 8.5 \n", 968 | "6118 2006 7.5 \n", 969 | "6119 2002 6.4 \n", 970 | "6120 2013 6.2 \n", 971 | "6121 2001 8.6 \n", 972 | "6122 2007 6.9 \n", 973 | "6123 2014 7.4 \n", 974 | "6124 2018 7.5 \n", 975 | "6125 1994 6.4 \n", 976 | "6126 2017 8.3 \n", 977 | "6127 2015 4.3 \n", 978 | "6128 1976 6.7 \n", 979 | "6129 2015 6.1 \n", 980 | "6130 2016 6.4 \n", 981 | "6131 2019 8.7 \n", 982 | "6132 1964 8.1 \n", 983 | "6133 2006 5.0 \n", 984 | "6134 2013 5.9 \n", 985 | "6135 1937 8.3 \n", 986 | "6136 2005 8.0 \n", 987 | "6137 2006 7.9 \n", 988 | "6138 2014 8.1 \n", 989 | "6139 2008 7.9 \n", 990 | "6140 2011 8.2 \n", 991 | "\n", 992 | "[6141 rows x 8 columns]" 993 | ] 994 | }, 995 | "execution_count": 3, 996 | "metadata": {}, 997 | "output_type": "execute_result" 998 | } 999 | ], 1000 | "source": [ 1001 | "data" 1002 | ] 1003 | }, 1004 | { 1005 | "cell_type": "code", 1006 | "execution_count": 4, 1007 | "metadata": {}, 1008 | "outputs": [ 1009 | { 1010 | "name": "stdout", 1011 | "output_type": "stream", 1012 | "text": [ 1013 | "\n", 1014 | "RangeIndex: 6141 entries, 0 to 6140\n", 1015 | "Data columns (total 8 columns):\n", 1016 | "电影名 6141 non-null object\n", 1017 | "导演 6141 non-null object\n", 1018 | "编剧 6141 non-null object\n", 1019 | "演员 6141 non-null object\n", 1020 | "类型 6141 non-null object\n", 1021 | "电影时长(分钟) 6141 non-null int64\n", 1022 | "上映时间(年) 6141 non-null int64\n", 1023 | "评分 6141 non-null float64\n", 1024 | "dtypes: float64(1), int64(2), object(5)\n", 1025 | "memory usage: 383.9+ KB\n" 1026 | ] 1027 | } 1028 | ], 1029 | "source": [ 1030 | "data.info()" 1031 | ] 1032 | }, 1033 | { 1034 | "cell_type": "code", 1035 | "execution_count": 5, 1036 | "metadata": {}, 1037 | "outputs": [ 1038 | { 1039 | "data": { 1040 | "image/png": "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\n", 1041 | "text/plain": [ 1042 | "
" 1043 | ] 1044 | }, 1045 | "metadata": { 1046 | "needs_background": "light" 1047 | }, 1048 | "output_type": "display_data" 1049 | } 1050 | ], 1051 | "source": [ 1052 | "#计算组数\n", 1053 | "d = 10 #组距\n", 1054 | "time = data['电影时长(分钟)']\n", 1055 | "num_bins = (max(time)-min(time)) // d\n", 1056 | "\n", 1057 | "#设置图片大小\n", 1058 | "plt.figure(figsize=(20,8),dpi=80)\n", 1059 | "\n", 1060 | "#设置字体\n", 1061 | "my_font = FontProperties(fname=r\"C:\\Windows\\Fonts\\simsun.ttc\", size=14)\n", 1062 | "\n", 1063 | "#绘制图片\n", 1064 | "plt.hist(time,num_bins)\n", 1065 | "\n", 1066 | "#设置x轴的刻度\n", 1067 | "plt.xticks(range(min(time),max(time)+d,d))\n", 1068 | "\n", 1069 | "#绘制表格\n", 1070 | "plt.grid()\n", 1071 | "\n", 1072 | "#添加描述信息\n", 1073 | "plt.xlabel(\"电影时长\",fontproperties=my_font)\n", 1074 | "plt.ylabel(\"电影数\",fontproperties=my_font)\n", 1075 | "plt.title(\"所有电影时长频数分布\",fontproperties=my_font)\n", 1076 | "\n", 1077 | "#保存图片\n", 1078 | "plt.savefig(\"./所有电影时长频数分布.png\") #保存为.svg格式矢量图,不会有失帧\n", 1079 | "\n", 1080 | "#展示图片\n", 1081 | "plt.show()" 1082 | ] 1083 | }, 1084 | { 1085 | "cell_type": "code", 1086 | "execution_count": null, 1087 | "metadata": {}, 1088 | "outputs": [], 1089 | "source": [] 1090 | } 1091 | ], 1092 | "metadata": { 1093 | "kernelspec": { 1094 | "display_name": "Python 3", 1095 | "language": "python", 1096 | "name": "python3" 1097 | }, 1098 | "language_info": { 1099 | "codemirror_mode": { 1100 | "name": "ipython", 1101 | "version": 3 1102 | }, 1103 | "file_extension": ".py", 1104 | "mimetype": "text/x-python", 1105 | "name": "python", 1106 | "nbconvert_exporter": "python", 1107 | "pygments_lexer": "ipython3", 1108 | "version": "3.7.3" 1109 | } 1110 | }, 1111 | "nbformat": 4, 1112 | "nbformat_minor": 2 1113 | } 1114 | -------------------------------------------------------------------------------- /5-Data_Model/票房预测模型.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 32, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "# 1.导入库和模块\n", 10 | "\n", 11 | "import numpy as np\n", 12 | "import pandas as pd\n", 13 | "import matplotlib.pyplot as plt\n", 14 | "from sklearn import model_selection\n", 15 | "from sklearn.neural_network import MLPRegressor as MLP\n", 16 | "from sklearn.ensemble import AdaBoostRegressor as ABR\n", 17 | "from sklearn.tree import DecisionTreeRegressor as DTR\n", 18 | "from sklearn.ensemble import RandomForestRegressor as RFR\n", 19 | "from sklearn.linear_model import LinearRegression as LR\n", 20 | "from sklearn.linear_model import Ridge as R\n", 21 | "from sklearn.linear_model import Lasso as L" 22 | ] 23 | }, 24 | { 25 | "cell_type": "code", 26 | "execution_count": 33, 27 | "metadata": {}, 28 | "outputs": [ 29 | { 30 | "data": { 31 | "text/html": [ 32 | "
\n", 33 | "\n", 46 | "\n", 47 | " \n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | " \n", 125 | " \n", 126 | " \n", 127 | " \n", 128 | " \n", 129 | " \n", 130 | " \n", 131 | " \n", 132 | " \n", 133 | " \n", 134 | " \n", 135 | " \n", 136 | " \n", 137 | " \n", 138 | " \n", 139 | " \n", 140 | " \n", 141 | " \n", 142 | " \n", 143 | " \n", 144 | " \n", 145 | " \n", 146 | " \n", 147 | "
电影名导演编剧演员类型电影时长(分钟)上映时间(年)评分地区语言票房发行公司制片公司
0角斗士 Gladiator雷德利·斯科特大卫·弗兰佐尼,约翰·洛根,威廉姆·尼克尔森罗素·克劳,华金·菲尼克斯,康妮·尼尔森,奥列佛·里德,理查德·哈里斯,德里克·雅各比,杰曼...剧情15520008.5德国西班牙语0.0暂无发行公司暂无制片公司
1外出就餐3:饕餮自助 Eating Out 3: All You Can Eat葛伦·盖洛菲利普·J·巴特尔,亚伦·布洛卡利百加·科汉,克里斯·萨尔瓦多,迈克尔E.R.沃克,敏科·斯荳,莱斯利·乔丹,素玛立·蒙塔诺...喜剧8020096.6法国汉语普通话0.0暂无发行公司暂无制片公司
2蝴蝶效应2 The Butterfly Effect 2约翰·R·莱昂耐迪Michael D. Weiss埃里克·里夫利,埃莉卡·杜兰斯,达斯汀·米利甘,吉娜·赫尔顿,林赛·麦克斯维尔剧情9220066.1印度汉语粤语0.0暂无发行公司暂无制片公司
3铁血柔情 Love Me Tender罗伯特·D·韦布莫里斯·杰拉蒂,罗伯特·巴克纳Richard Egan,Debra Paget,Elvis Presley剧情8919567.2法国德语0.0暂无发行公司暂无制片公司
4冰川时代 Ice Age卡洛斯·沙尔丹哈迈克尔·伯格 ,迈克尔·J·威尔森,彼得·阿克曼雷·罗马诺,约翰·雷吉扎莫,丹尼斯·利瑞,杰克·布莱克喜剧8120028.6英国法语0.0暂无发行公司暂无制片公司
\n", 148 | "
" 149 | ], 150 | "text/plain": [ 151 | " 电影名 导演 \\\n", 152 | "0 角斗士 Gladiator 雷德利·斯科特 \n", 153 | "1 外出就餐3:饕餮自助 Eating Out 3: All You Can Eat 葛伦·盖洛 \n", 154 | "2 蝴蝶效应2 The Butterfly Effect 2 约翰·R·莱昂耐迪 \n", 155 | "3 铁血柔情 Love Me Tender 罗伯特·D·韦布 \n", 156 | "4 冰川时代 Ice Age 卡洛斯·沙尔丹哈 \n", 157 | "\n", 158 | " 编剧 \\\n", 159 | "0 大卫·弗兰佐尼,约翰·洛根,威廉姆·尼克尔森 \n", 160 | "1 菲利普·J·巴特尔,亚伦·布洛卡 \n", 161 | "2 Michael D. Weiss \n", 162 | "3 莫里斯·杰拉蒂,罗伯特·巴克纳 \n", 163 | "4 迈克尔·伯格 ,迈克尔·J·威尔森,彼得·阿克曼 \n", 164 | "\n", 165 | " 演员 类型 电影时长(分钟) 上映时间(年) \\\n", 166 | "0 罗素·克劳,华金·菲尼克斯,康妮·尼尔森,奥列佛·里德,理查德·哈里斯,德里克·雅各比,杰曼... 剧情 155 2000 \n", 167 | "1 利百加·科汉,克里斯·萨尔瓦多,迈克尔E.R.沃克,敏科·斯荳,莱斯利·乔丹,素玛立·蒙塔诺... 喜剧 80 2009 \n", 168 | "2 埃里克·里夫利,埃莉卡·杜兰斯,达斯汀·米利甘,吉娜·赫尔顿,林赛·麦克斯维尔 剧情 92 2006 \n", 169 | "3 Richard Egan,Debra Paget,Elvis Presley 剧情 89 1956 \n", 170 | "4 雷·罗马诺,约翰·雷吉扎莫,丹尼斯·利瑞,杰克·布莱克 喜剧 81 2002 \n", 171 | "\n", 172 | " 评分 地区 语言 票房 发行公司 制片公司 \n", 173 | "0 8.5 德国 西班牙语 0.0 暂无发行公司 暂无制片公司 \n", 174 | "1 6.6 法国 汉语普通话 0.0 暂无发行公司 暂无制片公司 \n", 175 | "2 6.1 印度 汉语粤语 0.0 暂无发行公司 暂无制片公司 \n", 176 | "3 7.2 法国 德语 0.0 暂无发行公司 暂无制片公司 \n", 177 | "4 8.6 英国 法语 0.0 暂无发行公司 暂无制片公司 " 178 | ] 179 | }, 180 | "execution_count": 33, 181 | "metadata": {}, 182 | "output_type": "execute_result" 183 | } 184 | ], 185 | "source": [ 186 | "# 2.查看数据\n", 187 | "\n", 188 | "data = pd.read_csv('./dadas/MovieBoxOffiice.csv')\n", 189 | "data.head()" 190 | ] 191 | }, 192 | { 193 | "cell_type": "code", 194 | "execution_count": 34, 195 | "metadata": {}, 196 | "outputs": [ 197 | { 198 | "data": { 199 | "text/html": [ 200 | "
\n", 201 | "\n", 214 | "\n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | " \n", 244 | " \n", 245 | " \n", 246 | " \n", 247 | " \n", 248 | " \n", 249 | " \n", 250 | " \n", 251 | " \n", 252 | " \n", 253 | " \n", 254 | " \n", 255 | " \n", 256 | " \n", 257 | " \n", 258 | " \n", 259 | " \n", 260 | " \n", 261 | " \n", 262 | " \n", 263 | " \n", 264 | " \n", 265 | " \n", 266 | " \n", 267 | " \n", 268 | " \n", 269 | " \n", 270 | " \n", 271 | " \n", 272 | " \n", 273 | " \n", 274 | " \n", 275 | " \n", 276 | " \n", 277 | " \n", 278 | " \n", 279 | "
类型电影时长(分钟)上映时间(年)评分地区语言票房
0剧情15520008.5德国西班牙语0.0
1喜剧8020096.6法国汉语普通话0.0
2剧情9220066.1印度汉语粤语0.0
3剧情8919567.2法国德语0.0
4喜剧8120028.6英国法语0.0
\n", 280 | "
" 281 | ], 282 | "text/plain": [ 283 | " 类型 电影时长(分钟) 上映时间(年) 评分 地区 语言 票房\n", 284 | "0 剧情 155 2000 8.5 德国 西班牙语 0.0\n", 285 | "1 喜剧 80 2009 6.6 法国 汉语普通话 0.0\n", 286 | "2 剧情 92 2006 6.1 印度 汉语粤语 0.0\n", 287 | "3 剧情 89 1956 7.2 法国 德语 0.0\n", 288 | "4 喜剧 81 2002 8.6 英国 法语 0.0" 289 | ] 290 | }, 291 | "execution_count": 34, 292 | "metadata": {}, 293 | "output_type": "execute_result" 294 | } 295 | ], 296 | "source": [ 297 | "# 3.选取分析数据\n", 298 | "\n", 299 | "df = data.iloc[:,4:-2]\n", 300 | "df.head()" 301 | ] 302 | }, 303 | { 304 | "cell_type": "code", 305 | "execution_count": 39, 306 | "metadata": {}, 307 | "outputs": [], 308 | "source": [ 309 | "# 4.建立预测票房函数\n", 310 | "\n", 311 | "def predict_boxoffiice(df,movietype,movietime,movieyear,moviegraden,movieplace,movielanguage,movieboxoffiice,model):\n", 312 | " df.loc[len(df)] = [movietype,movietime,movieyear,moviegraden,movieplace,movielanguage,movieboxoffiice]\n", 313 | " \n", 314 | " dftype = pd.get_dummies(df['类型'],prefix='类型')\n", 315 | " datas = pd.concat([df,dftype],axis=1)\n", 316 | " dfplace = pd.get_dummies(df['地区'],prefix='地区')\n", 317 | " datas = pd.concat([datas,dfplace],axis=1)\n", 318 | " dflanguage = pd.get_dummies(df['语言'],prefix='语言')\n", 319 | " datas = pd.concat([datas,dflanguage],axis=1)\n", 320 | " \n", 321 | " datas = datas.loc[:,(datas.columns != '类型') & (datas.columns != '地区') & (datas.columns != '语言')]\n", 322 | " \n", 323 | " x = datas.loc[:,datas.columns != '票房'].values\n", 324 | " y = datas.loc[:,datas.columns == '票房'].values.reshape(-1,1)\n", 325 | " x_train, y_train, x_test, y_test = x[:-1], y[:-1], x[-1], y[-1]\n", 326 | " x_test = x_test.reshape(1,-1)\n", 327 | " \n", 328 | " Model = model()\n", 329 | " Model.fit(x_train,y_train)\n", 330 | " y_pred = Model.predict(x_test)\n", 331 | " \n", 332 | " return y_pred,datas" 333 | ] 334 | }, 335 | { 336 | "cell_type": "code", 337 | "execution_count": 40, 338 | "metadata": {}, 339 | "outputs": [], 340 | "source": [ 341 | "# 5.建立票房模型评价score函数\n", 342 | "\n", 343 | "def predict_score(datas,model):\n", 344 | " x = datas.loc[:,datas.columns != '票房'].values\n", 345 | " y = datas.loc[:,datas.columns == '票房'].values.reshape(-1,1)\n", 346 | " x_train, x_test, y_train, y_test = model_selection.train_test_split(x,y,test_size=0.3)\n", 347 | " \n", 348 | " Model = model()\n", 349 | " Model.fit(x_train,y_train)\n", 350 | " score = Model.score(x_test,y_test)\n", 351 | " \n", 352 | " return score" 353 | ] 354 | }, 355 | { 356 | "cell_type": "code", 357 | "execution_count": 43, 358 | "metadata": {}, 359 | "outputs": [ 360 | { 361 | "name": "stderr", 362 | "output_type": "stream", 363 | "text": [ 364 | "D:\\ANACONDA\\lib\\site-packages\\sklearn\\utils\\validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", 365 | " return f(**kwargs)\n", 366 | "D:\\ANACONDA\\lib\\site-packages\\sklearn\\neural_network\\_multilayer_perceptron.py:585: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (200) reached and the optimization hasn't converged yet.\n", 367 | " % self.max_iter, ConvergenceWarning)\n", 368 | "D:\\ANACONDA\\lib\\site-packages\\sklearn\\utils\\validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", 369 | " return f(**kwargs)\n", 370 | "D:\\ANACONDA\\lib\\site-packages\\sklearn\\neural_network\\_multilayer_perceptron.py:585: ConvergenceWarning: Stochastic Optimizer: Maximum iterations (200) reached and the optimization hasn't converged yet.\n", 371 | " % self.max_iter, ConvergenceWarning)\n", 372 | "D:\\ANACONDA\\lib\\site-packages\\sklearn\\utils\\validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", 373 | " return f(**kwargs)\n" 374 | ] 375 | }, 376 | { 377 | "name": "stdout", 378 | "output_type": "stream", 379 | "text": [ 380 | " 0.00043821783804054437\n", 381 | "期望票房 50000\n", 382 | "预测票房 2.5e+03\n" 383 | ] 384 | }, 385 | { 386 | "name": "stderr", 387 | "output_type": "stream", 388 | "text": [ 389 | "D:\\ANACONDA\\lib\\site-packages\\sklearn\\utils\\validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", 390 | " return f(**kwargs)\n" 391 | ] 392 | }, 393 | { 394 | "name": "stdout", 395 | "output_type": "stream", 396 | "text": [ 397 | " -3.420621417645803\n", 398 | "期望票房 50000\n", 399 | "预测票房 1.7e+04\n", 400 | " -1.2070759014372343\n", 401 | "期望票房 50000\n", 402 | "预测票房 4e+04\n" 403 | ] 404 | }, 405 | { 406 | "name": "stderr", 407 | "output_type": "stream", 408 | "text": [ 409 | "D:\\ANACONDA\\lib\\site-packages\\ipykernel_launcher.py:21: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", 410 | "D:\\ANACONDA\\lib\\site-packages\\ipykernel_launcher.py:9: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", 411 | " if __name__ == '__main__':\n" 412 | ] 413 | }, 414 | { 415 | "name": "stdout", 416 | "output_type": "stream", 417 | "text": [ 418 | " -0.03255907606398978\n", 419 | "期望票房 50000\n", 420 | "预测票房 4.4e+04\n", 421 | " 0.03239991617591054\n", 422 | "期望票房 50000\n", 423 | "预测票房 8.5e+03\n", 424 | " 0.016689808633070347\n", 425 | "期望票房 50000\n", 426 | "预测票房 8.6e+03\n", 427 | " 0.025703404155649978\n", 428 | "期望票房 50000\n", 429 | "预测票房 8.8e+03\n" 430 | ] 431 | } 432 | ], 433 | "source": [ 434 | "# 6.打印各模型准确率即预测值\n", 435 | "\n", 436 | "modellist = [MLP,ABR,DTR,RFR,LR,R,L]\n", 437 | "for m in modellist:\n", 438 | "\n", 439 | " # movietype = input()\n", 440 | " # movietime = eval(input())\n", 441 | " # movieyear = eval(input())\n", 442 | " # moviegraden = eval(input())\n", 443 | " # movieplace = input()\n", 444 | " # movielanguage = input()\n", 445 | " # movieboxoffiice = eval(input())\n", 446 | " # model = input()\n", 447 | "\n", 448 | " movietype = '喜剧'\n", 449 | " movietime = 80\n", 450 | " movieyear = 2009\n", 451 | " moviegraden = 6.6\n", 452 | " movieplace = '法国'\n", 453 | " movielanguage = '汉语普通话'\n", 454 | " movieboxoffiice = 50000\n", 455 | " model = m\n", 456 | " \n", 457 | " boxoffiice,datas = predict_boxoffiice(df,movietype,movietime,movieyear,moviegraden,movieplace,movielanguage,movieboxoffiice,model)\n", 458 | " score = predict_score(datas,model)\n", 459 | " \n", 460 | " print(str(model)+' '+str(score))\n", 461 | " \n", 462 | " boxoffiice_train = movieboxoffiice\n", 463 | " boxoffiice_test = \"{:.2}\".format(boxoffiice.flatten()[0])\n", 464 | " print('期望票房' + ' ' + str(boxoffiice_train))\n", 465 | " print('预测票房' + ' ' + str(boxoffiice_test))" 466 | ] 467 | }, 468 | { 469 | "cell_type": "code", 470 | "execution_count": null, 471 | "metadata": {}, 472 | "outputs": [], 473 | "source": [] 474 | } 475 | ], 476 | "metadata": { 477 | "kernelspec": { 478 | "display_name": "Python 3", 479 | "language": "python", 480 | "name": "python3" 481 | }, 482 | "language_info": { 483 | "codemirror_mode": { 484 | "name": "ipython", 485 | "version": 3 486 | }, 487 | "file_extension": ".py", 488 | "mimetype": "text/x-python", 489 | "name": "python", 490 | "nbconvert_exporter": "python", 491 | "pygments_lexer": "ipython3", 492 | "version": "3.7.3" 493 | } 494 | }, 495 | "nbformat": 4, 496 | "nbformat_minor": 2 497 | } 498 | -------------------------------------------------------------------------------- /5-Data_Model/评分预测模型.ipynb: -------------------------------------------------------------------------------- 1 | { 2 | "cells": [ 3 | { 4 | "cell_type": "code", 5 | "execution_count": 14, 6 | "metadata": {}, 7 | "outputs": [], 8 | "source": [ 9 | "# 1.导入库和模块\n", 10 | "\n", 11 | "import numpy as np\n", 12 | "import pandas as pd\n", 13 | "import matplotlib.pyplot as plt\n", 14 | "from sklearn import model_selection\n", 15 | "from sklearn.neural_network import MLPRegressor as MLP\n", 16 | "from sklearn.ensemble import AdaBoostRegressor as ABR\n", 17 | "from sklearn.tree import DecisionTreeRegressor as DTR\n", 18 | "from sklearn.ensemble import RandomForestRegressor as RFR\n", 19 | "from sklearn.linear_model import LinearRegression as LR\n", 20 | "from sklearn.linear_model import Ridge as R\n", 21 | "from sklearn.linear_model import Lasso as L\n", 22 | "from math import sqrt" 23 | ] 24 | }, 25 | { 26 | "cell_type": "code", 27 | "execution_count": 11, 28 | "metadata": {}, 29 | "outputs": [ 30 | { 31 | "data": { 32 | "text/html": [ 33 | "
\n", 34 | "\n", 47 | "\n", 48 | " \n", 49 | " \n", 50 | " \n", 51 | " \n", 52 | " \n", 53 | " \n", 54 | " \n", 55 | " \n", 56 | " \n", 57 | " \n", 58 | " \n", 59 | " \n", 60 | " \n", 61 | " \n", 62 | " \n", 63 | " \n", 64 | " \n", 65 | " \n", 66 | " \n", 67 | " \n", 68 | " \n", 69 | " \n", 70 | " \n", 71 | " \n", 72 | " \n", 73 | " \n", 74 | " \n", 75 | " \n", 76 | " \n", 77 | " \n", 78 | " \n", 79 | " \n", 80 | " \n", 81 | " \n", 82 | " \n", 83 | " \n", 84 | " \n", 85 | " \n", 86 | " \n", 87 | " \n", 88 | " \n", 89 | " \n", 90 | " \n", 91 | " \n", 92 | " \n", 93 | " \n", 94 | " \n", 95 | " \n", 96 | " \n", 97 | " \n", 98 | " \n", 99 | " \n", 100 | " \n", 101 | " \n", 102 | " \n", 103 | " \n", 104 | " \n", 105 | " \n", 106 | " \n", 107 | " \n", 108 | " \n", 109 | " \n", 110 | " \n", 111 | " \n", 112 | " \n", 113 | " \n", 114 | " \n", 115 | " \n", 116 | " \n", 117 | " \n", 118 | " \n", 119 | " \n", 120 | " \n", 121 | " \n", 122 | " \n", 123 | " \n", 124 | "
导演编剧演员类型电影时长(分钟)上映时间(年)评分地区语言
0雷德利·斯科特大卫·弗兰佐尼,约翰·洛根,威廉姆·尼克尔森罗素·克劳,华金·菲尼克斯,康妮·尼尔森,奥列佛·里德,理查德·哈里斯,德里克·雅各比,杰曼...剧情15520008.5德国西班牙语
1葛伦·盖洛菲利普·J·巴特尔,亚伦·布洛卡利百加·科汉,克里斯·萨尔瓦多,迈克尔E.R.沃克,敏科·斯荳,莱斯利·乔丹,素玛立·蒙塔诺...喜剧8020096.6法国汉语普通话
2约翰·R·莱昂耐迪Michael D. Weiss埃里克·里夫利,埃莉卡·杜兰斯,达斯汀·米利甘,吉娜·赫尔顿,林赛·麦克斯维尔剧情9220066.1印度汉语粤语
3罗伯特·D·韦布莫里斯·杰拉蒂,罗伯特·巴克纳Richard Egan,Debra Paget,Elvis Presley剧情8919567.2法国德语
4卡洛斯·沙尔丹哈迈克尔·伯格 ,迈克尔·J·威尔森,彼得·阿克曼雷·罗马诺,约翰·雷吉扎莫,丹尼斯·利瑞,杰克·布莱克喜剧8120028.6英国法语
\n", 125 | "
" 126 | ], 127 | "text/plain": [ 128 | " 导演 编剧 \\\n", 129 | "0 雷德利·斯科特 大卫·弗兰佐尼,约翰·洛根,威廉姆·尼克尔森 \n", 130 | "1 葛伦·盖洛 菲利普·J·巴特尔,亚伦·布洛卡 \n", 131 | "2 约翰·R·莱昂耐迪 Michael D. Weiss \n", 132 | "3 罗伯特·D·韦布 莫里斯·杰拉蒂,罗伯特·巴克纳 \n", 133 | "4 卡洛斯·沙尔丹哈 迈克尔·伯格 ,迈克尔·J·威尔森,彼得·阿克曼 \n", 134 | "\n", 135 | " 演员 类型 电影时长(分钟) 上映时间(年) \\\n", 136 | "0 罗素·克劳,华金·菲尼克斯,康妮·尼尔森,奥列佛·里德,理查德·哈里斯,德里克·雅各比,杰曼... 剧情 155 2000 \n", 137 | "1 利百加·科汉,克里斯·萨尔瓦多,迈克尔E.R.沃克,敏科·斯荳,莱斯利·乔丹,素玛立·蒙塔诺... 喜剧 80 2009 \n", 138 | "2 埃里克·里夫利,埃莉卡·杜兰斯,达斯汀·米利甘,吉娜·赫尔顿,林赛·麦克斯维尔 剧情 92 2006 \n", 139 | "3 Richard Egan,Debra Paget,Elvis Presley 剧情 89 1956 \n", 140 | "4 雷·罗马诺,约翰·雷吉扎莫,丹尼斯·利瑞,杰克·布莱克 喜剧 81 2002 \n", 141 | "\n", 142 | " 评分 地区 语言 \n", 143 | "0 8.5 德国 西班牙语 \n", 144 | "1 6.6 法国 汉语普通话 \n", 145 | "2 6.1 印度 汉语粤语 \n", 146 | "3 7.2 法国 德语 \n", 147 | "4 8.6 英国 法语 " 148 | ] 149 | }, 150 | "execution_count": 11, 151 | "metadata": {}, 152 | "output_type": "execute_result" 153 | } 154 | ], 155 | "source": [ 156 | "# 2.查看数据\n", 157 | "\n", 158 | "data = pd.read_csv('./dadas/MovieSoure.csv')\n", 159 | "data.head()" 160 | ] 161 | }, 162 | { 163 | "cell_type": "code", 164 | "execution_count": 12, 165 | "metadata": {}, 166 | "outputs": [ 167 | { 168 | "data": { 169 | "text/html": [ 170 | "
\n", 171 | "\n", 184 | "\n", 185 | " \n", 186 | " \n", 187 | " \n", 188 | " \n", 189 | " \n", 190 | " \n", 191 | " \n", 192 | " \n", 193 | " \n", 194 | " \n", 195 | " \n", 196 | " \n", 197 | " \n", 198 | " \n", 199 | " \n", 200 | " \n", 201 | " \n", 202 | " \n", 203 | " \n", 204 | " \n", 205 | " \n", 206 | " \n", 207 | " \n", 208 | " \n", 209 | " \n", 210 | " \n", 211 | " \n", 212 | " \n", 213 | " \n", 214 | " \n", 215 | " \n", 216 | " \n", 217 | " \n", 218 | " \n", 219 | " \n", 220 | " \n", 221 | " \n", 222 | " \n", 223 | " \n", 224 | " \n", 225 | " \n", 226 | " \n", 227 | " \n", 228 | " \n", 229 | " \n", 230 | " \n", 231 | " \n", 232 | " \n", 233 | " \n", 234 | " \n", 235 | " \n", 236 | " \n", 237 | " \n", 238 | " \n", 239 | " \n", 240 | " \n", 241 | " \n", 242 | " \n", 243 | "
类型电影时长(分钟)上映时间(年)评分地区语言
0剧情15520008.5德国西班牙语
1喜剧8020096.6法国汉语普通话
2剧情9220066.1印度汉语粤语
3剧情8919567.2法国德语
4喜剧8120028.6英国法语
\n", 244 | "
" 245 | ], 246 | "text/plain": [ 247 | " 类型 电影时长(分钟) 上映时间(年) 评分 地区 语言\n", 248 | "0 剧情 155 2000 8.5 德国 西班牙语\n", 249 | "1 喜剧 80 2009 6.6 法国 汉语普通话\n", 250 | "2 剧情 92 2006 6.1 印度 汉语粤语\n", 251 | "3 剧情 89 1956 7.2 法国 德语\n", 252 | "4 喜剧 81 2002 8.6 英国 法语" 253 | ] 254 | }, 255 | "execution_count": 12, 256 | "metadata": {}, 257 | "output_type": "execute_result" 258 | } 259 | ], 260 | "source": [ 261 | "# 3.选取分析数据\n", 262 | "\n", 263 | "df = data.iloc[:,-6:]\n", 264 | "df.head()" 265 | ] 266 | }, 267 | { 268 | "cell_type": "code", 269 | "execution_count": 13, 270 | "metadata": {}, 271 | "outputs": [], 272 | "source": [ 273 | "# 4.建立预测评分函数\n", 274 | "\n", 275 | "def predict_graden(df,movietype,movietime,movieyear,moviegraden,movieplace,movielanguage,model):\n", 276 | " df.loc[len(df)] = [movietype,movietime,movieyear,moviegraden,movieplace,movielanguage]\n", 277 | " \n", 278 | " dftype = pd.get_dummies(df['类型'],prefix='类型')\n", 279 | " datas = pd.concat([df,dftype],axis=1)\n", 280 | " dfplace = pd.get_dummies(df['地区'],prefix='地区')\n", 281 | " datas = pd.concat([datas,dfplace],axis=1)\n", 282 | " dflanguage = pd.get_dummies(df['语言'],prefix='语言')\n", 283 | " datas = pd.concat([datas,dflanguage],axis=1)\n", 284 | " \n", 285 | " datas = datas.loc[:,(datas.columns != '类型') & (datas.columns != '地区') & (datas.columns != '语言')]\n", 286 | " \n", 287 | " x = datas.loc[:,datas.columns != '评分'].values\n", 288 | " y = datas.loc[:,datas.columns == '评分'].values.reshape(-1,1)\n", 289 | " x_train, y_train, x_test, y_test = x[:-1], y[:-1], x[-1], y[-1]\n", 290 | " x_test = x_test.reshape(1,-1)\n", 291 | " \n", 292 | " Model = model()\n", 293 | " Model.fit(x_train,y_train)\n", 294 | " y_pred = Model.predict(x_test)\n", 295 | " \n", 296 | " return y_pred,datas" 297 | ] 298 | }, 299 | { 300 | "cell_type": "code", 301 | "execution_count": 17, 302 | "metadata": {}, 303 | "outputs": [], 304 | "source": [ 305 | "# 5.建立评分模型评价score函数\n", 306 | "\n", 307 | "def predict_score(datas,model):\n", 308 | " x = datas.loc[:,datas.columns != '评分'].values\n", 309 | " y = datas.loc[:,datas.columns == '评分'].values.reshape(-1,1)\n", 310 | " x_train, x_test, y_train, y_test = model_selection.train_test_split(x,y,test_size=0.3)\n", 311 | " \n", 312 | " Model = model()\n", 313 | " Model.fit(x_train,y_train)\n", 314 | " pre = Model.predict(x_test)\n", 315 | " \n", 316 | " error_sum = 0\n", 317 | " for i,j in zip(y_test,pre):\n", 318 | " error_sum+=sqrt((i-j)**2)\n", 319 | " pre_sum=sum(pre)\n", 320 | " \n", 321 | " return (1-(error_sum/pre_sum))" 322 | ] 323 | }, 324 | { 325 | "cell_type": "code", 326 | "execution_count": 18, 327 | "metadata": {}, 328 | "outputs": [ 329 | { 330 | "name": "stderr", 331 | "output_type": "stream", 332 | "text": [ 333 | "D:\\ANACONDA\\lib\\site-packages\\sklearn\\utils\\validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", 334 | " return f(**kwargs)\n", 335 | "D:\\ANACONDA\\lib\\site-packages\\sklearn\\utils\\validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", 336 | " return f(**kwargs)\n" 337 | ] 338 | }, 339 | { 340 | "name": "stdout", 341 | "output_type": "stream", 342 | "text": [ 343 | " 0.8772255567713343\n", 344 | "期望评分 6.6\n", 345 | "预测评分 6.8\n" 346 | ] 347 | }, 348 | { 349 | "name": "stderr", 350 | "output_type": "stream", 351 | "text": [ 352 | "D:\\ANACONDA\\lib\\site-packages\\sklearn\\utils\\validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", 353 | " return f(**kwargs)\n", 354 | "D:\\ANACONDA\\lib\\site-packages\\sklearn\\utils\\validation.py:73: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples, ), for example using ravel().\n", 355 | " return f(**kwargs)\n" 356 | ] 357 | }, 358 | { 359 | "name": "stdout", 360 | "output_type": "stream", 361 | "text": [ 362 | " 0.8648272890643154\n", 363 | "期望评分 6.6\n", 364 | "预测评分 6.7\n", 365 | " 0.8519367399377529\n", 366 | "期望评分 6.6\n", 367 | "预测评分 6.6\n" 368 | ] 369 | }, 370 | { 371 | "name": "stderr", 372 | "output_type": "stream", 373 | "text": [ 374 | "D:\\ANACONDA\\lib\\site-packages\\ipykernel_launcher.py:21: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", 375 | "D:\\ANACONDA\\lib\\site-packages\\ipykernel_launcher.py:9: DataConversionWarning: A column-vector y was passed when a 1d array was expected. Please change the shape of y to (n_samples,), for example using ravel().\n", 376 | " if __name__ == '__main__':\n" 377 | ] 378 | }, 379 | { 380 | "name": "stdout", 381 | "output_type": "stream", 382 | "text": [ 383 | " 0.886350564245825\n", 384 | "期望评分 6.6\n", 385 | "预测评分 6.6\n", 386 | " [0.88153593]\n", 387 | "期望评分 6.6\n", 388 | "预测评分 7.1\n", 389 | " [0.88393468]\n", 390 | "期望评分 6.6\n", 391 | "预测评分 7.1\n", 392 | " 0.875860964781132\n", 393 | "期望评分 6.6\n", 394 | "预测评分 7.2\n" 395 | ] 396 | } 397 | ], 398 | "source": [ 399 | "# 6.打印各模型准确率及预测值\n", 400 | "\n", 401 | "modellist = [MLP,ABR,DTR,RFR,LR,R,L]\n", 402 | "for m in modellist:\n", 403 | "\n", 404 | " # movietype = input()\n", 405 | " # movietime = eval(input())\n", 406 | " # movieyear = eval(input())\n", 407 | " # moviegraden = eval(input())\n", 408 | " # movieplace = input()\n", 409 | " # movielanguage = input()\n", 410 | " # model = input()\n", 411 | "\n", 412 | " movietype = '喜剧'\n", 413 | " movietime = 80\n", 414 | " movieyear = 2009\n", 415 | " moviegraden = 6.6\n", 416 | " movieplace = '法国'\n", 417 | " movielanguage = '汉语普通话'\n", 418 | " model = m\n", 419 | "\n", 420 | " garden,datas = predict_graden(df,movietype,movietime,movieyear,moviegraden,movieplace,movielanguage,model)\n", 421 | " score = predict_score(datas,model)\n", 422 | " \n", 423 | " print(str(model)+' '+str(score))\n", 424 | " \n", 425 | " garden_train = moviegraden\n", 426 | " garden_test = \"{:.2}\".format(garden.flatten()[0])\n", 427 | " print('期望评分' + ' ' + str(garden_train))\n", 428 | " print('预测评分' + ' ' + str(garden_test))" 429 | ] 430 | }, 431 | { 432 | "cell_type": "code", 433 | "execution_count": null, 434 | "metadata": {}, 435 | "outputs": [], 436 | "source": [] 437 | } 438 | ], 439 | "metadata": { 440 | "kernelspec": { 441 | "display_name": "Python 3", 442 | "language": "python", 443 | "name": "python3" 444 | }, 445 | "language_info": { 446 | "codemirror_mode": { 447 | "name": "ipython", 448 | "version": 3 449 | }, 450 | "file_extension": ".py", 451 | "mimetype": "text/x-python", 452 | "name": "python", 453 | "nbconvert_exporter": "python", 454 | "pygments_lexer": "ipython3", 455 | "version": "3.7.3" 456 | } 457 | }, 458 | "nbformat": 4, 459 | "nbformat_minor": 2 460 | } 461 | --------------------------------------------------------------------------------