一.数据来源
数据说明:数据来源于薪酬网,网址为/ChineseCollege/Indexes
(注:薪酬指数:在做薪酬之前要做岗位评估,一般从10个维度去衡量岗位综合分数,一般以一千分为基准。毕业生薪酬指数既反映了毕业生成长发展状况,也反映了高校毕业生就业状况、收入变化,对客观分析高校毕业生就业趋势、企业人力资源配置状况具有重要的参考意义)
中国高校毕业生薪酬指数排名(前100)。数据存入csv文件中,每行数据为高校,行末为换行符作为结束;行内数据为该高校毕业生薪酬有关的信息,行内数据用逗号分隔。共103行、10列数据,具体内容如下:
数据处理
1.读入数据
import pandas as pddf=pd.read_csv('C:/Users/86182/中国高校毕业生薪酬指数排名.csv',encoding='GBK') #读取csv文件
2.数据规格化、清洗
删除两个空行
df=df.drop([8,28])
将“是否985院校”,“是否211院校”的两列中的“是”用数值1代替,“否”用数值0代替,“未知”用数值-1代替,并将列表信息存储为newdata.txt
df['是否985院校']=df['是否985院校'].replace('是',1)df['是否985院校']=df['是否985院校'].replace('否',0)df['是否985院校']=df['是否985院校'].replace('未知',-1)df['是否211院校']=df['是否211院校'].replace('是',1)df['是否211院校']=df['是否211院校'].replace('否',0)df['是否211院校']=df['是否211院校'].replace('未知',-1)df.to_csv('newdata.txt',sep=',',index=False)
(3)data1=df.describe()
将“毕业生平均薪酬届(工作一年)”“毕业生平均薪酬届(工作三年)”“毕业生平均薪酬届(工作五年)”这三列的列名分别改为“salary”“salary”“salary”
df=df.rename(columns={'毕业生平均薪酬届(工作一年)':'salary','毕业生平均薪酬届(工作三年)':'salary','毕业生平均薪酬届(工作五年)':'salary'})
3.统计分析数据
将薪酬指数排名前十的大学信息显示出
df3=df.head(10)
按照届(工作三年)的平均薪酬重新排序(降序),并保存到变量df4里,保存为csv文件(df4.csv)
df4=df.sort_values(by='salary',ascending=False)df4.to_csv('df4.csv')
计算各大学毕业生的三届学生的平均薪资,并将平均薪酬添加到df中,列名为‘average’
df5=df.iloc[0:101,[7,8,9]]df6=df5.mean(axis=1).round(2).valuesdf['average']=df6
筛选出来三届毕业生的平均工资大于10000的学校
df1=df.loc[df['salary']>10000]
筛选出来届毕业生(工作五年)平均工资大于12000的学校
df2=df.loc[df['salary']>12000]
按照省份对所有列进行分类汇总
df3=df.groupby('所在地').count()
df7=df.groupby('类型').count()
计算薪酬指数与三届毕业生平均薪资的相关性
salary1=df['薪酬指数']average=df['average']salary1.corr(average)
按照是否为985院校和是否为211院校对学校进行分类
df8=df.groupby(['是否985院校','是否211院校'])['学校名称'].count()
注:数值0代表‘否’,数值1代表‘是’,数值-1代表‘未知’
按照学校类型对平均薪资进行汇总
df10=df.groupby('所在地')['average'].count()
三、图表显示
1.根据学校类型的数量画出一个直方图
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif']=['SimHei']plt.rcParams['axes.unicode_minus']=Falsetypes=[]for tp in df[u'类型']:ls=tp.split(',')for x in ls:types.append(x)tp_df=pd.DataFrame({u'类型':types})fig,ax=plt.subplots(figsize=(9,6),dpi=60)tp_df[u'类型'].value_counts().plot(kind='bar',ax=ax)ax.set_xlabel(u'高校')ax.set_ylabel(u'数量')ax.set_title(u'各类型高校数量')
根据省市的学校数量画出一个直方图
types=[]for tp in df[u'所在地']:ls=tp.split(',')for x in ls:types.append(x)tp_df=pd.DataFrame({u'所在地':types})fig,ax=plt.subplots(figsize=(9,6),dpi=100)tp_df[u'所在地'].value_counts().plot(kind='bar',ax=ax)ax.set_xlabel(u'所在地')ax.set_ylabel(u'数量')ax.set_title(u'平均薪酬top100各省市高校数量')
画出各省市届毕业生和届毕业生的平均薪酬的折线图
import matplotlib.pyplot as pltplt.rcParams['font.sans-serif']='SimHei'#设置中文显示fig,ax=plt.subplots(figsize=(10,7),dpi=100)x=df[u'所在地'].value_counts().sort_index().indexy2=df.sort_values(by=u'所在地').groupby(u'所在地').mean()[u'salary'].valuesy1=df.sort_values(by=u'所在地').groupby(u'所在地').mean()[u'salary'].valuesplt.plot(x,y2,'go--')plt.plot(x,y1,'bo--')plt.title("各省市高校毕业生平均薪酬")plt.xlabel('省市')plt.ylabel('平均薪酬')plt.legend('best')plt.annotate("change5", xy=('天津',7250),xytext=('天津',8500),arrowprops=dict(facecolor='black',headwidth=4,width=1.5,headlength=4),horizontalalignment='right',verticalalignment='top')plt.annotate("change13", xy=('江西',7750),xytext=('江西',8900),arrowprops=dict(facecolor='black',headwidth=4,width=1.5,headlength=4),horizontalalignment='right',verticalalignment='top')