【python数据分析】亚太地区的商学院(商务与经济统计案例3-3)数据分析

数据分析学了几个星期了,中间一直在学习模仿别人的代码,所以没什么原创可写。今天看《商务与经济统计》,想拿个案例来练练手。案例数据也不大:

Business SchoolFull-Time EnrollmentStudents per FacultyLocal Tuition ($)Foreign Tuitiion ($)Age%ForeignGMATEnglish TestWork ExperienceStarting Salary ($)
Melbourne Business School200524,42029,6002847YesNoYes71,400
University of New South Wales (Sydney)228419,99332,5822928YesNoYes65,200
Indian Institute of Management (Ahmedabad)39254,3004,300220NoNoNo7,100
Chinese University of Hong Kong90511,14011,1402910YesNoNo31,000
International University of Japan (Niigata)126433,06033,0602860YesYesNo87,000
Asian Institute of Management (Manila)38957,5629,0002550YesNoYes22,800
Indian Institute of Management (Bangalore)38053,93516,000231YesNoNo7,500
National University of Singapore14766,1467,1702951YesYesYes43,300
Indian Institute of Management (Calcutta)46382,88016,000230NoNoNo7,400
Australian National University (Canberra)42220,30020,3003080YesYesYes46,600
Nanyang Technological University (Singapore)5058,5008,5003220YesNoYes49,300
University of Queensland (Brisbane)1381716,00022,8003226NoNoYes49,600
Hong Kong University of Science and Technology60211,51311,5132637YesNoYes34,000
Macquarie Graduate School of Management (Sydney)12817,17219,7783427NoNoYes60,100
Chulalongkorn University (Bangkok)200717,35517,355256YesNoYes17,600
Monash Mt. Eliza Business School (Melbourne)3501316,20022,5003030YesYesYes52,500
Asian Institute of Management (Bangkok)3001018,20018,2002990NoYesYes25,000
University of Adelaide201916,42623,1003010NoNoYes66,000
Massey University (Palmerston North, New Zealand)301513,10621,6253735NoYesYes41,400
Royal Melbourne Institute of Technology 30713,88017,7653230NoYesYes48,900
Jamnalal Bajaj Institute of Management Studies (Bombay)24091,0001,000240NoNoYes7,000
Curtin Institute of Technology (Perth)98159,47519,0972943YesNoYes55,000
Lahore University of Management Sciences701411,25026,300232.5NoNoNo7,500
Universiti Sains Malaysia (Penang)3052,2602,2603215NoYesYes16,000
De La Salle University (Manila)44173,3003,600283.5YesNoYes13,100

 2.导入数据

import pandas as pd
import numpy as np
data = pd.read_csv('H:/商务与经济统计(原书第12版)/数据文件/第3章/Asian.CSV')
data.head()

3.对数据集中的每一个变量进行汇总,根据最大值,最小值等进行评价和解释

data.describe()

 

可以知道一共有25个business school,平均录取名额为165人,最多的学校录取463人,最少12人,差别还是挺大的。每个学院平均录取8人,最多19人最少2人,差别还行,不是太大,50%以上的学校都录取7人。平均年龄28岁,最大37岁,最小22岁。平均录取外国人的比例28%,最大达到90%,最少的为0,干脆不招外国人。新见解?感觉年龄都比较大,不同学校录取人数差别大,但是平均每个学院人数又差不太多,估计是有的学校学院比较多吧。有的学校外国学生比例很大,有的根本没有,差别还是挺大的,不知道是不是排外或者在外地知名度不高。

这里学费和起薪都没有算作数量变量,可见后面要进行处理。

4.本国学生和外国学生学费的差别

这里发现列名写错了先用rename进行更正。

然后把金额里的逗号给去掉,并改成float型。

抽取本国学生和外国学生学费的列,plot画图。

#本国学生和外国学生学费的差别

#列名写错了,先改掉
data = data.rename(columns={'Foreign Tuitiion ($)':'Foreign Tuition ($)'})
#把数字的逗号去掉
data['Local Tuition ($)'] = data['Local Tuition ($)'].apply(lambda x:x.replace(',','')if ','in str(x)else x)
data['Foreign Tuition ($)'] = data['Foreign Tuition ($)'].apply(lambda x:x.replace(',','')if ','in str(x)else x)
data['Local Tuition ($)'] = data['Local Tuition ($)'].apply(lambda x:float(x))
data['Foreign Tuition ($)'] = data['Foreign Tuition ($)'].apply(lambda x:float(x))
subset = data[['Local Tuition ($)','Foreign Tuition ($)']]
subset.plot(title = 'The difference between local tuition and foreign tuition')

这个图还是挺简单的,可以看出来国外学生的学费基本上比本国学生的学费要高。

5.用pyecharts画更精细的图。

#用昨天刚学的pyecharts试试
from pyecharts import Bar

#x轴是学校名称
school = data['Business School']
#y轴表示当地人的学费和外国人的学费
local_tuition = data['Local Tuition ($)']
foreign_tuition = data['Foreign Tuition ($)']
#标题和副标题
bar = Bar('Tuition', 'From 25 Business School')
#画第一个当地人的学费的条形图,用虚线表示平均值,并标注最大和最小值
bar.add('local_tuition',school,local_tuition,mark_line=['average'],mark_point=['max','min'])
#画第二个外国人的学费的条形图,用虚线表示平均值,并标注最大和最小值,x轴的标注旋转-45°
bar.add('foreign_tuition',school,foreign_tuition,xaxis_rotate = -45,mark_line=['average'],mark_point=['max','min'])
bar

可以得到这样一个图,原图是动态的(我不知道为什么没法显示完整,再研究研究吧)

从这张图可以知道国外学生的学费和本国学生的学费的最高值都是33060,在International University of Japan (Niigata),最低都是1000,在Jamnalal Bajaj Institute of Management Studies (Bombay)。本国学生学费的平均值为12374.92,外国学生学费的平均值为16581.8。单位都是美元。如果我们想知道国外学生的学费和本国学生的学费的差距是多少,可以再加入一条折线图。

6.记录差值

difference = [0 for i in range(len(school))]
for i in range(len(school)):
    difference[i]=foreign_tuition[i]-local_tuition[i]
print(difference)

7.画折线图

from pyecharts import Line,Overlap
line = Line()
line.add('difference between foreign_tuition and local_tuition ',school,difference)
 
overlap = Overlap()
overlap.add(bar)
overlap.add(line,yaxis_index=1,is_add_yaxis=True)
 
overlap

可以看到有些学校对本国学生和国外的学生一视同仁,学费一样。有的学校差距就特别大。 

 

8.要求工作经验和不要求工作经验的学校学生平均起薪的差别

#要求工作经验和不要求工作经验的学校学生平均起薪的差别
#分组
data["Starting Salary ($)"] = data["Starting Salary ($)"].apply(lambda x:x.replace(',','')if ','in str(x)else x)
data["Starting Salary ($)"] = data["Starting Salary ($)"].apply(lambda x:float(x))
data["Starting Salary ($)"].head()
data.groupby('Work Experience')["Starting Salary ($)"].mean()
Work Experience
No     24583.333333
Yes    41305.263158
Name: Starting Salary ($), dtype: float64

有工作经验的平均起薪明显要比没有工作的平均起薪高得多。 

 

9.要求英语测试和不要求英语测试的学校学生起薪的差别

画boxplot(箱型图)

#要求英语测试和不要求英语测试的学校学生起薪的差别
import seaborn as sns
from matplotlib import pyplot as plt
g = sns.catplot(x="English Test",y="Starting Salary ($)",data=data, kind="box", height = 5 ,palette = "Set1")
g.despine(left=True)
g.set_xticklabels()
plt.title('Boxplot of Starting Salary ($) of English Test',size = 15)

 

 可以看出,没有英语测试的学校,学生起薪差距较大,有英语测试的学校,学生起薪差距较小。没有英语测试的学校,学生起薪的平均值低于有英语测试的学校的学生起薪的平均值。但是没有英语测试的学校,学生起薪的最高值要高于有英语测试的学校。个人认为,可能没有英语测试的学校,门槛更低,可能会招一些素质不好的学生,但是同时有些英语不好但是专业知识好的学生也会招来,因此会有学生起薪差距大的情况。

 

10.起薪和学费的关系

第一个是线性回归曲线,我不知道怎么加legend

#起薪与学费有关吗?
plt.figure(figsize = (5,5))
g = sns.regplot(x="Local Tuition ($)", y="Starting Salary ($)",color = 'orange', data=data)
g2  = sns.regplot(x="Foreign Tuition ($)", y="Starting Salary ($)",color = 'green', data=data)
plt.xlabel('tuition')

 

 也可以分别画。

#起薪与学费有关吗?
plt.figure(figsize = (5,5))
g = sns.lmplot(x="Local Tuition ($)", y="Starting Salary ($)", data=data)
g2  = sns.lmplot(x="Foreign Tuition ($)", y="Starting Salary ($)", data=data)

 

可以发现起薪和学费基本上是正相关的。

THE END. 

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值