对Excel表中的集美大学各省录取分数分析

2019/12/9 16:08:43 人评论 次浏览 分类:学习教程

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/CJY1204/article/details/103459686

对Excel表中的集美大学各省录取分数分析

主要功能

分析文件文件‘集美大学各省录取分数.xlsx’,完成:

集美大学2015-2018年间不同省份在本一批的平均分数(柱状图)

福建省这3年各批次成绩情况(折线图)

其他省份数据

首先要安装类库:

xlrd库 numpy matplotlib.pyplot pandas pyecharts

	#####        安装方式  pip install  库名 -i https://pypi.douban.com/simple
import xlrd
import numpy as np
import matplotlib.pyplot as plt
import pandas as pd
from pyecharts import Line
from pyecharts import Map

plt.rcParams['font.sans-serif']=['SimHei']

class Exc():
    def __init__(self,filePath,sheetName):
        self.data=xlrd.open_workbook(filePath)
        self.table=self.data.sheet_by_name(sheetName)
        self.rowNum = self.table.nrows
        print(u"总行数:", self.rowNum)
        self.colNum = self.table.ncols
        print(u"总列数:", self.colNum)
        self.j=1
        self.databs={}
        
        for i in range(self.rowNum-1):
            values=self.table.row_values(self.j)
            self.databs[self.j]=values
            #print(self.databs[self.j])
            self.j=self.j+1
            
    def draw1(self,years):
        sfdict={}
        sflist=[]
        sfname=[]
        sfnum=[]
        qs={}
        for i in range(1,self.rowNum):
            if self.databs[i][7]==years and self.databs[i][1]=='本一批':
                try:
                    sfdict[self.databs[i][0]]=(sfdict[self.databs[i][0]]+self.databs[i][6])/2
                except KeyError:
                    sfdict[self.databs[i][0]]=self.databs[i][6]
        mapsfname=list(sfdict.keys())
        mapsfnum=list(sfdict.values())
        map=Map('{}年全国各省本一批平均成绩'.format(years),'中国地图',width=1200,height=600)
        
        map.add("", mapsfname, mapsfnum,  maptype='china',visual_range=[300, 700], is_visualmap=True,
            visual_text_color='#000')
        map.render(path="{}年全国各省本一批平均成绩.html".format(years))

        sflist=sorted(zip(sfdict.values(),sfdict.keys()))
        for i in sflist[-10:]:
            sfname.append(i[1])
            sfnum.append(i[0])
        qs['省份']=sfname
        qs['平均分']=sfnum
        print(qs)
        qs=pd.DataFrame(qs)    
        qs.plot(x='省份',y='平均分',kind='bar')
        
        for i in range(len(sfnum)):
           plt.text(i-0.2,sfnum[i],sfnum[i])
        plt.title("{}年本一批平均分数排名前十的省份".format(years),fontsize=20)
        plt.xticks(fontsize=8,rotation=0)
        plt.savefig('{}年本一批平均分数排名前十的省份.jpg'.format(years),bbox_inches='tight')
        
        plt.show()
        
    def setV(sfpc,years,i):
        xdic={}
        for j in years:
                
            xdic[j]=sfpc[j][i]
        return xdic
        
    def draw2(self,sf):
        sfpc={}
        pc={}
        pc2016={}
        pc2017={}
        pc2018={}
        xdic={}
        pclist=[]
        sfpclist=[]
        sfpcname=[]
        sfpcnum=[]
        years=[2016,2017,2018]
        #for i in range(1,self.rowNum):
         #   if self.databs[i][0]==sf and self.databs[i][2]=='理工':
          #      if self.databs[i][1] not in pclist:
           #         pclist.append(self.databs[i][1])
        
        for i in range(1,self.rowNum):
            
            if self.databs[i][0]==sf and self.databs[i][2]=='理工' and self.databs[i][7]==2017:
                pc2017[self.databs[i][1]]=self.databs[i][5]
                sfpc[self.databs[i][7]]=pc2017
                if self.databs[i][1] not in pclist:
                    pclist.append(self.databs[i][1])
            elif self.databs[i][0]==sf and self.databs[i][2]=='理工' and self.databs[i][7]==2018:
                pc2018[self.databs[i][1]]=self.databs[i][5]
                sfpc[self.databs[i][7]]=pc2018
            elif self.databs[i][0]==sf and self.databs[i][2]=='理工' and self.databs[i][7]==2016:
                pc2016[self.databs[i][1]]=self.databs[i][5]
                sfpc[self.databs[i][7]]=pc2016
        #print(sfpc)
        line = Line("福建省这3年各批次成绩情况",title_top="90%")
        
        n=0
        for i in pclist:
            for j in years:
                
                sfpcnum.append(sfpc[j][i])
            #print(i)
            line.add(i,years,sfpcnum[n:],is_label_show=True)#i 批次的名字 yeas 表示Y轴   sfpcnum 表示录取成绩 
            pc[i]=Exc.setV(sfpc,years,i)
            n=n+3
        
        #pc=zip(sfpc.keys(),sfpc.values())
        #print(pc)
        line.render('福建省这3年各批次成绩情况.html')
                            
if __name__=='__main__':
    filePath="E:\Python_str\集美录取分\集美录取分\\集美大学各省录取分数.xlsx"
    sheetName='集美大学各省录取分数'
    data=Exc(filePath,sheetName)
    #print(data.dict_data())
    data.draw1(2015)   
    data.draw1(2016) 
    data.draw1(2017) 
    data.draw1(2018) 
    data.draw2('福建')
    #data.draw3()

实验结果

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

相关资讯

    暂无相关的资讯...

共有访客发表了评论 网友评论

验证码: 看不清楚?
    -->