# 集美大學各省錄取分數分析(學號尾數為2,3同學完成) # 分析文件‘集美大學各省錄取分數.xlsx’,完成: # 1)集美大學2015-2018年間不同省份在本一批的平均分數,柱狀圖展示排名前10的省份, # 2)分析福建省這3年各批次成績情況,使用折線圖展示結果,並預測2019年錄取成績(數據... ...
一、項目簡介
1.1 項目博客地址
https://rpc.cnblogs.com/metaweblog/yyh28
1.2 項目完成的功能與特色
分析文件‘集美大學各省錄取分數.xlsx’,完成以下功能:
1)集美大學2015-2018年間不同省份在本一批的平均分數,柱狀圖展示排名前10的省份,
2)分析福建省這3年各批次成績情況,使用折線圖展示結果,並預測2019年錄取成績
3)分析其他省份數據。用熱力圖,地圖方式繪製所有省份數據情況。
1.3 項目採用的技術棧
Numpy:矩陣計算與其它大多數框架的數據處理基礎;
Matplotlab:專業畫圖工具,話說這個單詞還是真是在Matlab之間插入了plot這個詞形成的;
Pandas:提供類似於R語言的DataFrame操作,非常方便;
百度地圖API
熱力圖
1.3 項目借鑒源代碼的地址
https://www.jianshu.com/p/c18dedc38b7b
1.4 團隊成員任務分配表
二、項目的需求分析
對文件數據進行提取、分析
三、項目功能架構圖、主要功能流程圖
四、系統模塊說明
4.1 系統模塊列表
柱狀圖、折線圖、熱力圖
4.2 各模塊詳細描述(名稱,功能,運行截圖,關鍵源代碼)
4.2.1柱狀圖:集美大學2015-2018年間不同省份在本一批的平均分數,展示排名前10的省份。
#繪圖 plt.figure() plt.bar(x=province_dict_keys,height=province_dict_values,alpha=0.8) for x,y in enumerate(province_dict_values): plt.text(x, y, '%s' % y, ha='center', va='bottom') #設置標題 plt.title("排名前10的省份") # 為兩條坐標軸設置名稱 plt.xlabel("省份") plt.ylabel("平均分") #圖片的顯示及存儲 log = datetime.datetime.now().strftime('%Y-%m-%d') # plt.savefig('./logging/%s_all_a.jpg' % log) #圖片的存儲 # plt.close() #關閉matplotlib
4.2.2折線圖:分析福建省這3年各批次成績情況,使用折線圖展示結果,並預測2019年錄取成績
#折線圖 plt.figure() plt.plot(grade_year,grade,'ro-', color='#4169E1', alpha=0.8, label='提前批航海類(理工)') plt.plot(grade_year,grade1,'ro-', color='#FFFA12', alpha=0.8, label='師範類(面向全省)(理工)') plt.plot(grade_year,grade2,'ro-', color='#78FF1D', alpha=0.8, label='師範類(面向廈門)(理工)') plt.plot(grade_year,grade3,'ro-', color='#1CFFB7', alpha=0.8, label='農村專項計劃(理工)') plt.plot(grade_year,grade4,'ro-', color='#1BE9FF', alpha=0.8, label='本一批(理工)') plt.plot(grade_year,grade5,'ro-', color='#1F98FF', alpha=0.8, label='本一批(面向廈門)(理工)') plt.plot(grade_year,grade6,'ro-', color='#2237FF', alpha=0.8, label='閩台合作(理工)') plt.plot(grade_year,grade7,'ro-', color='#BA6BFF', alpha=0.8, label='預科批(理工)') #在當前繪圖對象繪圖(X軸,Y軸,藍色虛線,線寬度) for y in [grade,grade1,grade2,grade3,grade4,grade5,grade6,grade7]: for x,yy in zip(grade_year,y): plt.text(x, yy+1,str(yy), ha='center', va='bottom', fontsize=7) plt.xlabel("年份") #X軸標簽 plt.ylabel("分數線") #Y軸標簽 plt.title("福建省這3年理工各批次成績情況") #標題 # plt.savefig('./logging/%s_all_b.jpg' % log) #圖片的存儲 #顯示圖示 plt.legend() plt.show()
4.2.3熱力圖:分析其他省份數據。有精力同學可以研究熱力圖,地圖方式繪製所有省份數據情況。
gr=batch('本一批','理工') gr=sorted(gr.items(),key=lambda x:x[1],reverse=True) file = open(r'../point.json','w') #建立json數據文件 point_pr(gr,file) #獲取經緯度 def getlnglat(address): url = 'http://api.map.baidu.com/geocoding/v3/' output = 'json' ak = '8atpMUyuexdbuYFU838ejPvSPnWYZoks' add = quote(address) #由於本文城市變數為中文,為防止亂碼,先用quote進行編碼 uri = url + '?' + 'address=' + add + '&output=' + output + '&ak=' + ak req = urlopen(uri) res = req.read().decode() #將其他編碼的字元串解碼成unicode temp = json.loads(res) #對json數據進行解析 return temp def point_pr(gr,file): #每個省份的經緯度 print(gr) for line in gr: # line是個list,取得所有需要的值 b = line[0] #將第一列city讀取出來並清除不需要字元 if b == '西藏' or b == '': continue c= line[1]#將第二列price讀取出來並清除不需要字元 lng = getlnglat(b)['result']['location']['lng'] #採用構造的函數來獲取經度 lat = getlnglat(b)['result']['location']['lat'] #獲取緯度 str_temp = '{"lat":' + str(lat) + ',"lng":' + str(lng) + ',"count":' + str(c) +'},' # print(str_temp) #也可以通過列印出來,把數據copy到百度熱力地圖api的相應位置上 file.write(str_temp) #寫入文檔 file.close()
五、項目總結
5.1 特點
對集美大學近幾年的錄取分數進行分析,並生成圖表
5.2 不足之處
整體不夠美觀
碼雲地址:https://gitee.com/leaf28/university.git