import pandas as pd
import matplotlib.pyplot as plt
from matplotlib.pyplot import axis
def get_985(jd_tmp,tmp):
jd_985=[]
for i in range(len(jd_tmp)):
if(tmp[i]=='√'):
jd_985.append(jd_tmp[i])
return jd_985
def get_school_dict(school_set,school_value):
dict_school={}
for i in range(0,len(school_set)):
dict_school[unicode(school_set[i])]=school_value
return dict_school
def get_value_list(datalist,dict_211,dict_211_value,dict_985,dict_985_value):
stulist=[]
for i in range(0,len(datalist)):
tmp=0
if(dict_211.get(unicode(datalist[i]))==1):
if(dict_985.get(unicode(datalist[i]))==2):
tmp=dict_985_value
else:
tmp=dict_211_value
else:
tmp=0
stulist.append(tmp)
stulist.reverse()
return stulist
studata=pd.read_excel(r'e:/test/src.xls')
judgedata=pd.read_excel(r'e:/test/judge.xlsx')
jd_211=judgedata[u'院校名称'].tolist()
jd_985=get_985(jd_211,judgedata[985])
dict_985=get_school_dict(jd_985,2)
dict_211=get_school_dict(jd_211,1)
datalist=studata[u'报考院校'].tolist()
stulist=get_value_list(datalist,dict_211,1,dict_985,2)
cnt_211=0
cnt_985=0
cnt=0
for i in range(len(stulist)):
if(stulist[i]==2):
cnt_985+=1
elif(stulist[i]==1):
cnt_211+=1
elif(stulist[i]==0):
cnt+=1
axis([0, 1600, -1, 3])
plt.title("985 school:%d,211 school:%d,others:%d" %(cnt_985,cnt_211,cnt))
plt.plot(range(0,len(stulist)),stulist,color='g',marker='o')
plt.savefig(r'e:/test/school.png')
plt.show()
数据来源是某院校的考研报名统计,985,211院校的名单表格从网上下载一份即可,统计了考生报名双非,211,985的人数分布,绘制成图如下:(0表示双非,1表示211,2表示985)