《Python春晚数据分析.doc》由会员分享,可在线阅读,更多相关《Python春晚数据分析.doc(3页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、Python春晚数据分析import xlrdimport numpy as npimport matplotlib.pyplot as pltimport pandas as pdfrom flask import Flask, jsonify, render_template, requestfrom pyecharts import *#pyecharts 0.5.0from imageio import imreadapp = Flask(_name_)plt.rcParamsfont.sans-serif=SimHei# 设置中字体class Exc():def _init_(sel
2、f,filePath,sheetName):self.data=xlrd.open_workbook(filePath)# 件路径self.table=self.data.sheet_by_name(sheetName)#excel 中的表名# 获取第列的key值self.keys = self.table.row_values(0)# 获取总数self.rowNum = self.table.nrows# 获取总列数self.colNum = self.table.ncolsdef draw(self,):cls=#以年份为单位,计数各类型节数量ycls=#存放单独年给类型节数量,循环清空y
3、ears=1983# 初始年份1983,后随读取年份变化zoncate=# 各类型节总数量rna=#存放所有演员名单rname=# 存放所有演员及其登场次数rnamel=#list 存放排序后的演员名单zoncatel=#list存放排序前后节名单if self.rowNum=1:print( 数据可取)else:r=j=1for i in range (self.rowNum-1):s=values=self.table.row_values(j)# 换读取存数据#print(values)for x in range(self.colNum):# 存各列数据sself.keysx=valu
4、esxif int(sself.keys3)!=years:# 判断是否为同年节#print(years, 年各种节数:,cls)years=int(sself.keys3)cls=rna=sself.keys2.split( 、)#对单个节的每个演员分开计数for i in rna:try:rnamei+=1# 记表演名单及其出场次数except:rnamei=1try:clssself.keys0+=1# 计各种节个数except:clssself.keys0=1try:try:zoncatesself.keys0+=1# 各节类型总表演次数except:zoncatesself.keys
5、0=1j+=1#数加r.append(s)yclsyears=clsrname.pop()rnamel=zip(rname.values(),rname.keys()# 对次字典进 键、值 分包,值放前zoncatel=zip(zoncate.values(),zoncate.keys()# 对类次字典进 键、值 分包,值放前rnamel=sorted(rnamel)# 从到以包中在前的登场次数values排名#print(rnamel)zoncatel=sorted(zoncatel)#print( 所有的节种类次数:,zoncatel)#-rna=rnum=rna2=rnum2=caten
6、a=catenum=inyear=1983self.yearpie=yearsyearslist=list(range(1983,years+1)# 创建个年份列表 作为折线图x轴for i in rnamel-10:rna.append(i1)rnum.append(i0)barr = Bar( 排名前的演员的登场次数)barr.add( 演员, rna, rnum, mark_line=average,title= 排名前的演员的登场次数)#bar.render( 排名前的演员的登场次数.html)for i in rnamel:rna2.append(i1)rnum2.append(i0
7、)rna2.remove(1)rnum2.remove(1)cy=WordCloud( 演员词云)cy.add(,rna2,rnum2,shape=circle)cy2=WordCloud( 节词云)cy2.add(,list(zoncate.keys(),list(zoncate.values()for i in zoncatel-10:catena.append(i1)catenum.append(i0)line=Line(n 排名前节的每年表演次数变化)for i in catena:plty=radern=0for j in yearslist:try:plty.append(ycls
8、ji)except KeyError:plty.append(0)#print(plty)#radern0=pltyline.add(i, yearslist, plty, mark_point=max, min,mark_line=average)#print(ycls)piez=Pie(n1983-2018 年各类节表演次数饼图)piez.add(,catena,catenum, is_more_utils=True)self.yclspie=ycls#-page=Page()page.add(cy)page.add(cy2)page.add(barr)page.add(line)page
9、.add(piez)page.render(templates/ 历年春晚数据图表.html)def drawpie(self,ye):inyear = 1983pie = Pie(nnnn 年各种节数对.format(ye)cnum = list(self.yclspieye.values()cname = list(self.yclspieye.keys()pie.add( 年各种节数对.format(inyear), cname, cnum, radius=30, 75, is_more_utils=True)pie.render(templates/ 年各种节数对.html.forma
10、t(ye)app.route(/home)def home():data.draw()return render_template( 历年春晚数据图表.html)app.route(/index)def index():return render_template(index.html)app.route(/year, methods=GET, POST)def getValues():yearslist = list(range(1983, 2019)text = request.form.get(year)text = int(text)if text in yearslist:data.drawpie(text)return render_template( 年各种节数对.html.format(text)else:return 不存在if _name_=_main_:filePath=春晚节单.xlsxsheetName=春晚节单data=Exc(filePath,sheetName)#print(data.dict_data()#data.draw()app.run(host=127.0.0.1, port=8080, debug=True)#data.drawpie()