附录
整理
在构建数据模型时,我们可以引入以下标签进行相关性分析和预测: (将学业状态,是否为奖学金,学业成绩获得者作为标签,进行相关性分析与预测。)
- 学业状态:这一标签反映了学生的当前教育阶段,如是否在校、休学、毕业等。通过分析这一标签与其他变量的关系,我们可以识别可能导致学生辍学的风险因素,从而提前采取干预措施,如提供辅导和心理支持,以降低辍学率。
- 奖学金获得者:这一标签指示学生是否获得奖学金。通过分析这一标签与其他变量的关系,我们可以发掘影响学生获得奖学金的因素,如学业成绩、家庭经济状况等,从而为优化奖学金分配政策提供依据。
- 学业成绩:这一标签反映了学生的学术表现。通过分析这一标签与其他变量的关系,我们可以发掘影响学生学业成绩的因素,如学习习惯、教育资源等,从而制定针对性的教育策略,提高学生的学习成绩。
同时,我们还可以引入地区社会因素作为标签进行分析:
(同一地区失业率、通货膨胀率、国内生产总值(GDP)相同,从而得到学生所处地区与情况)
- 地区失业率:这一标签反映了学生所在地区的就业市场状况。通过分析这一标签与学生学业状态、成绩等的关系,我们可以评估不同地区社会因素对居民的影响,从而帮助社会机构制定有针对性的教育、就业支持政策。
- 通货膨胀率:这一标签反映了学生所在地区的经济稳定性。通过分析这一标签与学生学业状态、成绩等的关系,我们可以评估经济因素对学生学业和生活的影响,从而为政府和社会机构提供决策依据。
- 国内生产总值(GDP):这一标签反映了学生所在地区的经济发展水平。通过分析这一标签与学生学业状态、成绩等的关系,我们可以评估经济发展水平对学生学业和生活的影响,从而为政府和社会机构提供决策依据。
总结:
- 识别学生辍学的风险因素:提前去进行指导教育,降低辍学率
- 发掘影响成绩的因素:对症下药,提高学习成绩
- 不同地区社会因素对居民的影响:帮助为政府、教育机构和社会组织提供有针对性的政策建议和支持措施。
一. 准备工作与数据预处理
1.1 数据查看
import pandas as pd import matplotlib.pyplot as plt import numpy as np import seaborn as sns import warnings warnings.filterwarnings('ignore') from pyecharts.charts import * from pyecharts import options as opts df = pd.read_csv('dataset.csv')
print('去重前:',df.shape[0],'行数据') print('去重后:',df.drop_duplicates().shape[0],'行数据')
df.head()
df.info()
1.2 特征处理
1.2.1 学业状态映射
df['学业状态'].unique()
df['学业状态'].value_counts()
df['学业状态_num'] = df['学业状态'].map({ '辍学':0,'已入学':1,'毕业':2}) df['学业状态_num'].value_counts()
1.2.2 所在地区提取
df[['该地区失业率','该地区通货膨胀率','该地区国内生产总值']].drop_duplicates().sort_values(by=['该地区国内生产总值'])
df['该地区国内生产总值'].value_counts()
df['local'] = df['该地区国内生产总值'].map({ -4.06:0 , -3.12: 1 , -1.70: 2 , -0.92: 3 , 0.32 : 4 , 0.79 :5 , 1.74: 6 , 1.79 : 7 , 2.02: 8 , 3.51: 9 }) df['local'].value_counts()
二. 探索性数据分析
2.1 目标学生基本信息调研(国籍+性别+婚姻+流浪+债务)
guoji = df[['性别','国籍']].groupby(['国籍']).count().sort_values(by=['性别'],ascending=False) x1 = list(guoji.index) y1 = guoji['性别'].tolist() chart0 = Bar(init_opts=opts.InitOpts(width='1000px',height='400px',theme='macarons')) chart0.add_xaxis(x1) chart0.add_yaxis('', y1, itemstyle_opts={ 'barBorderRadius':[60, 60, 20, 20]}) chart0.set_global_opts( legend_opts=opts.LegendOpts(pos_right='10%',pos_top='2%'), title_opts=opts.TitleOpts(title="学生国籍分布图",pos_left='40%')) chart0.render_notebook()
df['国际学生'].value_counts()
4314/4424
df['性别'].value_counts()
df['婚姻状况'].value_counts()
#饼图 df_pair_sex = [['0', 2868], ['1', 1556]] df_pair_marry = [['2',379],['3',4],['4',91],['5',25],['6',6],['1',3919],] chart1 = Pie(init_opts=opts.InitOpts(width='1000px',height='300px',theme='macarons' )) chart1.add('学生性别构成', df_pair_sex,radius=['40%', '70%'],rosetype='radius',center=['25%', '50%'], label_opts=opts.LabelOpts(is_show=True ,formatter = '性别 {b}:{c}人,占{d}%')) chart1.add('学生婚姻情况构成', df_pair_marry,radius=['40%', '70%'],center=['70%', '50%'], label_opts=opts.LabelOpts(is_show=True ,formatter = '婚姻状况 {b}:{c}人,占{d}%')) chart1.set_global_opts(legend_opts=opts.LegendOpts(is_show=False,pos_right='0%',orient='vertical'), title_opts=opts.TitleOpts(title="学生性别分布 学生婚姻情况构成",pos_left='22%')) chart1.render_notebook() #显示
df['是否流离失所'].value_counts()
df['是否为债务人'].value_counts()
#饼图 df_pair_home = [['0', 2426]• 1