HUST EIC 研究生学生数据分析
学生数据获取
最近学院官网上公式了每个研究生本学年奖学金的信息,三个年级的同学以及对应导师的信息都比较明确,刚好可以进行相关的统计分析。从数据角度来分析电子信息与通信学院各专业的分布情况。基本的数据分析,各参数的关系图绘制是后续深度分析的基础。
一般来说,前期数据来源都是用爬虫先去准备,爬虫的相关帖子后续再好好写一个,此贴主要是数据分析的基本流程,数据清洗,插值,修改,绘图,以及预测。
数据来源:http://ei.hust.edu.cn/
数据导入与清洗
import numpy as np
import pandas as pd
import matplotlib.pyplot as plt
import seaborn as sns
import copy
import warnings
warnings.filterwarnings('ignore')
pd.set_option('display.max_rows', None) # 设置显示最大行 让列表全显示
pd.set_option('display.max_columns',1000)
pd.set_option('display.width', 1000)# 设置字符显示宽度
pd.set_option('display.max_colwidth',1000)
sns.set_style('whitegrid')
#数据导入
df=pd.read_excel('D:/demo/data/2019年研究生学业奖学金公示名单.xlsx')
#数据清洗 删除重复的数据 查看是否有重复的行
cf_index=df.duplicated('学号') #寻找重的行数 返回的True 不是字符串而是bool形
cf_index_daf = {'values':cf_index.values} #生成了字典
DF_tr = pd.DataFrame(cf_index_daf) #字典转成dataframe
DF_tr_2=DF_tr[(DF_tr['values']==True)].index.tolist() #找到重复的行
df=df.drop_duplicates('学号',keep=False) #清理完毕
# 将数据中异常值修改 休学的同学奖学金置位0
df=df.replace('休学',0)
df.loc[250:642,['录取类别','奖学金']]=df.loc[250:642,['奖学金','录取类别']].values
df.loc[250:391,['考试方式','录取类别']]=df.loc[250:391,['录取类别','考试方式']].values
df.loc[396:642,['考试方式','学位类型']]=df.loc[396:642,['学位类型','考试方式']].values
df=df.replace({'科学学位':'科学硕士','专业学位':'专业硕士'})
df.loc[250:391,['学位类型']]='科学硕士'
df_baifei=copy.deepcopy(df)
df.head()
#在图表上显示中文,首先需要进行中文设置
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
sns.set(font='SimHei')
EIC全院专硕学硕比例,以及按照年级的分布
19级新生 包含学硕和专硕 18级研二 包含学硕和专硕 17级研三 由于当年的专硕已经毕业(华科专硕学制两年)所以仅仅包含学硕
sns.set(rc={'figure.figsize':(8,6)})
#在图表上显示中文,首先需要进行中文设置
plt.rcParams['font.sans-serif']=['SimHei'] #用来正常显示中文标签
plt.rcParams['axes.unicode_minus']=False #用来正常显示负号
sns.set(font='SimHei')
sns.countplot(x='学位类型', data=df)
sns.countplot(x='学位类型',hue='年级', data=df)
从近三年的趋势来看,学硕人数是逐年增加的,专硕的人数也在慢慢减少,每年变化大概4到5个名额。
导师招生信息
华中科技大学电信学院 学硕专业分为:信息与通信工程 电磁场与微波技术 电路与系统 每个专业有不同的老师 学院按专业招生 专硕:统称电子与通信工程 录取后 根据学生与老师双向选择 自愿加入上述三个专业的老师 没有专业限制
全院所有导师人数较多,上述统计所有导师的所带学生的表过于庞大,不便于分析,现在将导师按专业切片,每个专业进行单独统计与分析,同时也分析19年各专业不同老师招生来源,即保研和考研的分析,可以这样理解,保研比例越高的老师可以一定程度上的表明:师德好、研究方向好热门、学术能力强 、项目多、所带毕业生就业好 (注意没有任何老板是十全十美的,同时也不能苛责导师像高中老师那样,读研和毕业更多是在于自己)
# 提取19年学生数据 以及各专业导师切片
df['学位类型'].value_counts(normalize = True, dropna = False).head()
#提取2019级的 数据 针对2019级数据进行分析
data_2019=df[0:248]
#统计元素个数
data_2019['学位类型'].value_counts(normalize = True, dropna = False).head()
##科学硕士 0.600806
##专业硕士 0.399194
##Name: 学位类型, dtype: float64
#统计2019级 各学生科硕 学硕 保研 考研 比例 先统计各属性数据
data1k=data_2019.loc[data_2019['学位类型']=='科学硕士']
data2z=data_2019.loc[data_2019['学位类型']=='专业硕士']
zero_col_count = dict(data1k['考试方式'].value_counts())
three_row_count = dict(data2z['考试方式'].value_counts())
print('19级学硕招生分布:',zero_col_count)
print('19级专硕招生分布:',three_row_count)
##19级学硕招生分布: {'推荐免试': 112, '全国统考': 35, '强军计划': 2}
##19级专硕招生分布: {'全国统考': 53, '推荐免试': 46}
#画饼图
#根据计算统计的数据画饼图
labels = '19科硕保研','19科硕考研','19科硕强军','19专硕保研','19专硕考研','19专硕强军' ## 定义的是元组 无法修改
size= [112,35,2,46,53,0] ##大小列表 根据上述分析统计出来的人数
colors=['red','deeppink','plum','cornflowerblue','lightblue','cyan'] ##列表
explode=(0.1,0,0,0.1,0,0)
##绘制饼图
plt.figure(figsize=(8,6))
plt.pie(size,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',shadow=True , startangle=90) ##注意中文字符
plt.axis('equal')
plt.show()
刚入学的19级研究生,科硕比例明显高于专硕,而且科硕大部分也是招收保研同学。有一个共识,考研难度越来越大,一方面是由保研比例加大,导师更愿意要本校或者外校的优质保研生,顺位较高的老师都被保研的同学抢走了。另一方面,专硕比例在逐年下降,但是报考人数不见少。
#分专业切片 首先查看全院总体专业分布
zydata=df['专业'].value_counts(normalize = True, dropna = False)
print(zydata)
zydata['信息与通信工程']
#画饼图
#根据计算统计的数据画饼图
labels = '信息与通信工程','电磁场与微波技术','电路与系统','电子与通信工程' ## 定义的是元组 无法修改
size= [zydata['信息与通信工程'],zydata['电磁场与微波技术'],zydata['电路与系统'],zydata['电子与通信工程']] ##大小列表 根据上述分析统计出来的人数
colors=['red','deeppink','cornflowerblue','lightblue'] ##列表
explode=(0,0,0,0)
##绘制饼图
plt.figure(figsize=(8,6))
plt.pie(size,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',shadow=True , startangle=90) ##注意中文字符
plt.axis('equal')
plt.title('三个年级专业分布')
plt.show()
学院三个年级各专业的分布
#画饼图
#根据计算统计的数据画饼图
labels = '信息与通信工程','电磁场与微波技术','电路与系统','电子与通信工程' ## 定义的是元组 无法修改
size= [zydata19['信息与通信工程'],zydata19['电磁场与微波技术'],zydata19['电路与系统'],zydata19['电子与通信工程']] ##大小列表 根据上述分析统计出来的人数
colors=['red','deeppink','cornflowerblue','lightblue'] ##列表
explode=(0,0,0,0)
##绘制饼图
plt.figure(figsize=(8,6))
plt.pie(size,explode=explode,labels=labels,colors=colors,autopct='%1.1f%%',shadow=True , startangle=90) ##注意中文字符
plt.axis('equal')
plt.title('19级专业分布')
plt.show()
1、信息与通信工程招生汇总
全院该专业导师与学生分布
19级该专业导师与学生分布
信息与通信系老师是最多的,同时学生也是最多的,很多同学都集中选择信息与通信系,同时该专业作为计算机附属专业,近几年就业情况也是最好的,当然有些大导师所有专业都可以招生,有些导师前几年是其他专业招生,现在由转专业招生,这种情况得小心点,如果想了解导师具体的研究方向,还是建议通过查询近几年导师发表的论文期刊来确定,这样比较准确。同时也能看看自己是否和导师研究方向匹配,官网介绍不太准。
2、电磁场与微波技术
# 3 电磁场与微波技术各老师招生情况
fig=plt.figure(figsize=(8,6))
ax1=fig.add_subplot(211)
ax1=sns.countplot(x ='导师姓名',data = df_dianci)
plt.title('电磁场与微波技术各老师所带学生总数')
fig=plt.figure(figsize=(8,6))
ax2=fig.add_subplot(212)
ax2=sns.countplot(x ='导师姓名',hue='考试方式',data = df_dianci_19)
plt.title('19年电磁场与微波技术各老师所带学生招考方式')
电磁场专业导师比较少,有感兴趣的同学可以提前一一了解每个导师的研究方向,然后来确定自己的目标。不像信息与通信系,该专业考研比例蛮高的。
3、电路与系统
# 3 电路与系统各老师招生情况
fig=plt.figure(figsize=(8,6))
ax1=fig.add_subplot(211)
ax1=sns.countplot(x ='导师姓名',data = df_dianlu)
plt.title('电路与系统各老师所带学生总数')
fig=plt.figure(figsize=(8,6))
ax2=fig.add_subplot(212)
ax2=sns.countplot(x ='导师姓名',hue='考试方式',data = df_dianlu_19)
plt.title('19年电路与系统各老师所带学生招考方式')
4、专硕 电子信息与通信工程
fig=plt.figure(figsize=(40,6))
ax1=fig.add_subplot(211)
ax1=sns.countplot(x ='导师姓名',data = df_diantong)
plt.title('电子与通信工程各老师所带学生总数')
fig=plt.figure(figsize=(40,6))
ax2=fig.add_subplot(212)
ax2=sns.countplot(x ='导师姓名',hue='考试方式',data = df_diantong_19)
plt.title('19年电子与通信工程各老师所带学生招考方式')
基本数据分析就到这里了 ^ _ ^