版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
武汉大学计算机学院本科生课程设计报告专业名称:数学与应用数学课程名称:Python程序设计学生学号:二。二。年七月个人型设计报告学术声明示例:郑重声明本人呈交的设计报告,是在指导老师的指导下,独立进行实验工作所取得的成果,所有数据、图片资料真实可靠。尽我所知,除文中已经注明引用的内容外,本设计报告不包含他人享有著作权的内容。对本设计报告做出贡献的其他个人和集体,均已在文中以明确的方式标明。本设计报告的知识产权归属于培养单位。本人签名:' 日期:2人0.7.10【目录】【一、实验目的和意义】【二、实验内容及要求】【三、实验设计思路】【四、实验过程主要步骤】【五、实验结果】一、实验目的和意义练习numpy、scipy、Pandas、matplotlib扩展库的基本使用方法。练习用Pandas进行简单的数据分析。练习用matplotlib绘图的基本技巧。二、实验内容及要求.数据分析和可视化:分析IMDB电影数据中最受关注的3类电影、收益最高的3类电影、参演电影类型最多的3位演员以及分析电影评分与票房的关系.文本文件分析和检索程序的设计与实现:定义一个类AnalysisTxt,包括:file_name实例属性,用来保存文件名称,并在_init__中设置DrawWordCloud(max_words)实例方法,该方法绘制文本文件词云。GetWordCount(word)实例方法,返回指定词语出现次数。定义一个test函数测试AnalysisTxt类的功能三、实验设计思路.最受关注、收益最高的电影类型分别意味着将相同类型的电影的票房或票数相加,最后比较每种类型的票房或者票数总和;对于演员参演电影数量的分析,参演电影数量即等于演员名字在actors中出现的次数;分析评分与票房关系,考虑到不包含时间因素,因此直观上绘制评分一票房的二维散点图。.考虑到AnalysisTxt中绘制词云和返回次数都和具体文本相关联,因此都是设置实例方法,相当于定义两个函数,通过类进行包装。考虑
到返回指定词语的次数,可以通过字典的功能来实现。四、实验过程及主要步骤1.导入pandas和numpy,读取要分析的数据(注意数据类型)[口[1]:mpoftpandasaspdlapartnuipyasnpId[2];df-pd.r-?ittd_csv-Ci-'C-\U5er5','ZYXl'.DoG«i!unt5\7e:oceiitFile.sM021389,7Q9\Fi1?Rccv\pythpr-Wimdbjovic}df构造一个列表pairs_r,其中每个元素是电影类型和他所对应的一部电影票房所构成的元组,再构造电影种类和电影票房一一配对的二维表格,应用groupby函数对电影种类一列操作(统计票房总和),返回电影种类一票房总和的表格;最后返回前三票房最高的电影类型pairs_r=:foriinrange(len(df)):genres=dz.ari,'Genre'".spliiC.:)forgenreingenres:pair_r=(df.at[i.,Revenue(MiJlions)5_.genre)pairs_r.appendtpair_i)pairs_rindex,r= 1.forireuiinpairs,r.daTc_r=_i~em_0]forireniinpairs_r_df2=pd.DataFranie({J电影种类”:indexr,s票房':data_r})result_r=df2.groupbyC电影种类:as_lndex=False).siunOresult_r,columns=「电影种类二‘票房总和’]resulti.nlaxgest(3,[票房总和'类似可得每种类型的投票总和:pairs_v-__foriinrange(len(df)):genres=df.at.i,1Geiu'e'__spli:(\1)forgenreingenres:paii'_v-(dLat[i.,Votes'genre)pairs_v.append(pairvipairs_vindeA_v.itej];-1]for,:eininpairs_v]daxa_v=[itemEO]foriteminpairsv_df3=p±DataFrame({'电影种类’:index,v,'质数':data_v:)result_v=df3.groupbyC,阻到种类二as_index=False).stlmOresulT_v.columns=「电J影种类','票数R和']resulT_v.nlargest(3,['票数总和二)下面构造一个列表pairs,其中每个元素是演员和他所参演电影对应类型所构成的元组,考虑到一行数据(一场电影)中有多种类型和多个演员,因此构造列表
和上述方法有区别(多使用了一层循环)pairs=口foriinrange(len(df)):acrors=at匚.1Actors''.spEi!)genres=df,a~.i,1Genrespli".1)foractorinactors:forgenreingenres:pair=(actor*gejire)pairs,append(pair)pairs但考虑到列表元素会出现重复现象,因此利用集合去重:pairs_ne^list(set(pairs))再构造演员和电影一一配对的二维表格,应用groupby函数对演员一列操作(统计演员名字出现次数),返回演员一出现次数(即参演数量)的表格index\cento]foriter,injpairs_nev-■.lata--iteml'1foritetninpairs_ne/dfl-pdDataFrajnet{n演1:index,'电影种类':data})result=dfl.groupby("?.ijM',as_index=False).colin"।result,colums=['演员二'裁演电影种类翻量’]result,nlargest(34.参演电盛布类敌图二)#1飞:£€0日1晨奉演电点种类艘"二71,最后,显示参演数量前3多的三行数据result.nlargest(3i.参演电影数量']}*但是考虑到参演种类数量为12的演员(运行结果)的可能不止三个,因此再使用注释的语句提取发现,参演数量为12的演员有且只有3个。导入matplotlib.pyplot,以便绘图;分别提取revenue和metascore两列数据,绘制散点图importmatplotlib.pyplctaspity=df.Revenue(Millians?.x-df-Metascore,]pit.plot(x,v,'rd)pit.axis([0..120,0,12001)pit,grid(True)pit.shovO2.定义类AnalysisTxt,和实例属性file_nameimportwordcloildimportjiebaclassAnalysts-xt:def_init_(self,file_name):se_f.f_1e_name-i_i_&_naine考虑到绘制词云和返回指定词语出现次数的函数都要应用切割的词组成的列表,因此定义一个返回列表属性wordList的函数:读取txt文档,jieba的lcut返回词
语元素构成的列表defTnrdListfself):-■-ope?i(seifilename+txt','y'.enc&ding-'u---9h)txt=f.read()f.close()wordList=jieba.IcUt(txt)return^ordList绘制词云:考虑到用户有必要自定义词语出现频率来选择词云所展示的词语,因此在wordcloud.WordCloud中修改参数max_words为自定义参量;generate生成词频,最后转换为图片并保存。defDrawWordClciud(self!s):word1s=Ana1ysisTxt.WordList(self)wcstr-''.joiriCTCirdls)wc-wordcloud.WordCloud(r'nsyh.ttc"siFidth=Ei4Gliheight=4805ibackgi'Gund_coLor=Pwhite1.nax_Tords=E)wcim=wc.generatefwcstr)wcim_to_imge(}.save「Tc_news.png1)返回指定词语出现次数:基于wordList,遍历wordList并记录次数,生成键值对为:词语一次数的字典。通过input,得到用户反馈的指定词语,最后由字典返回“键”所对应的“值”defGetWordCotlnt(seiz)::vordls=AnalysisT^t.WordList(5el-1w=inputwordwantedtocount:')wordDict-{)forwordincordis:iflen(word)।::wardDict[word.=wordDict.get(word,0)+1retarnwordDict[w]Test:定义test函数,运行实例,以检验AnalysisTxt的可行性助Ficmetlioddeftest0:AnalysisTxt(r'D:\threekingdotJis').Dra^ordClolid(100)[AnalysisTxt(rJD:\threekingdonis').GetWordCotmt(.)五、实验结果参演电影数量前3的演员:演员参演电荆种类裁量574HughJackman121嵬7JakeGyllenhaal121991JohnnyDepp12
•票房前3的电影:电重种类票房总和1Adventure33852.61。Action35605,426Drama2W31.45•最受关注前3的电影:电怒种类票数总和6Drama747S4098QAction714357681Adventure6681S104•评分一票房的散点图:1200•评分一票房的散点图:120010。。■o12M1Be印4020oooooo80604020score可以看出:票房400(单位:百万)以上的电影评分集中在55—85之间,;通过比较0—20区间和80—100区间,可以得出:评分高的电影票房普遍高于
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年注册岩土工程师之《岩土基础知识》模拟考试试卷及答案详解(考点梳理)
- 浆砌片石挡土墙专项施工方案
- 2025年注册岩土工程师之《岩土基础知识》练习题库含答案详解(综合卷)
- 钢结构除锈油漆施工方案
- 2026诏安县霞葛中心卫生院编外人员招聘2人备考题库及答案详解(各地真题)
- 2026西安市经开第一中学招聘(6人)笔试参考题库及答案解析
- 2026年4月广西梧州市苍梧县城镇公益性岗位人员招聘2人备考题库附参考答案详解(轻巧夺冠)
- 2026河南郑州同安中医骨伤科医院招聘备考题库附参考答案详解(能力提升)
- 2026北京城建集团建筑工程总承包部成熟人才招聘5人笔试模拟试题及答案解析
- 2026年医院医疗废物规范化管理实施方案
- 统编版(新版)道德与法治八年级下册课件13.1全面依法治国的指导思想
- 2025年三季度云南航空产业投资集团招聘(云南云航投现代物流有限公司岗位)考试笔试历年常考点试题专练附带答案详解2套试卷
- 公路工程项目首件工程认可制监理实施细则
- 3.长方体和正方体(单元测试)2025-2026学年五年级数学下册人教版(含答案)
- 八大特殊作业安全管理流程图(可编辑)
- 【《基于西门子S7-300PLC的液位控制系统设计与实现》9300字(论文)】
- 2026年鄂尔多斯生态环境职业学院高职单招职业适应性考试参考题库带答案解析
- 拓展训练红黑商战
- 《NBT 20485-2018 核电厂应急柴油发电机组设计和试验要求》(2026年)实施指南
- 足浴店安全管理制度及安全措施
- 深圳仓库出租合同范本
评论
0/150
提交评论