数据分析历届诺贝尔奖~
裸睡的猪
共 5703字,需浏览 12分钟
·
2021-10-17 09:00
作者&来源 | k同学啊
最近,诺贝奖得主引起了大家的热议,我用数据分析了一下历年的诺贝尔奖得主情况,分享给大家~
注:图片取自B站
“诺贝尔奖(瑞典语:Nobel priset,英语:Nobel Prize):是指根据诺贝尔1895年的遗嘱而设立的五个奖项,包括:
”物理学奖
、化学奖
、和平奖
、生理学
或医学奖
和文学奖
。旨在表彰在物理学、化学、和平、生理学或医学以及文学上对社会做出卓越贡献,或做出杰出研究、发明以及实验的人士。以及瑞典中央银行1968年设立的诺贝尔经济学奖
,用于表彰在经济学领域杰出贡献的人。 诺贝尔奖历经百年,时至今日,诺贝尔奖一直都被视为各领域最重要的荣誉之一。
历年诺贝尔奖得主统计分析
一、导入数据
二、获奖人性别分布统计
三、各国获奖人数统计
四、各领域获奖人数比例统计
五、各领域获奖人数统计-国家排名
1. 生理学奖获奖人数top10国家
2. 物理学奖获奖人数top10国家
3. 化学奖获奖人数top10国家
4. 文学奖获奖人数top10国家
5. 经济学奖获奖人数top10国家
6. 和平奖获奖人数top10国家
六、获奖者平均年龄统计
一、导入数据
#获取获奖信息数据
import pandas as pd
data_date = pd.read_csv('nobel_prizes_by_date.csv',encoding = 'ISO-8859-1')
data_winner = pd.read_csv('nobel_prize_by_winner.csv',encoding = 'ISO-8859-1')
data_winner.head()
二、获奖人性别分布统计
#去重后获奖者总人数
data.id.nunique()
输出:901
def make_autopct(values):
def my_autopct(pct):
total = sum(values)
val = int(round(pct*total/100.0))
# 同时显示数值和占比的饼图
return '{p:.2f}% ({v:d}人)'.format(p=pct,v=val)
return my_autopct
# 长8英寸 宽6英寸,该窗口的分辨率为80
plt.figure(figsize=(8,6), dpi= 80)
labels = '男','女','组织'
explode = (0,0,0) #将某一块分割出来,值越大分割出的间隙越大
colors = ['yellowgreen','lightskyblue','yellow']
patches,text1,text2 = plt.pie([male,female,org],
explode=explode,
labels=labels,
colors=colors,
labeldistance = 1.1, #标签距圆心半径倍距离
autopct = make_autopct([male,female,org]),
shadow = True, #阴影设置
startangle =30, #逆时针起始角度设置
pctdistance = 0.7)
plt.title('获奖者男女比例',fontsize=19)
plt.legend()
plt.show()
三、各国获奖人数统计
#实例化Pie类
pie = Pie(init_opts=opts.InitOpts(width='800px',height='550px'))
#添加数据,设置饼图半径
pie.add('',[list(z) for z in zip(data_cou.head(15).index.tolist(), data_cou.head(15).values.tolist())],
radius=['40%','65%'],
rosetype='radius'
)
#设置全局配置项
pie.set_global_opts(title_opts=opts.TitleOpts(title=''),
legend_opts=opts.LegendOpts(is_show=True))
#玫瑰图展示
pie.render_notebook()
四、各领域获奖人数比例统计
# 长16英寸 宽8英寸,该窗口的分辨率为80
plt.figure(figsize=(16,8), dpi= 80)
def make_autopct(values):
def my_autopct(pct):
total = sum(values)
val = int(round(pct*total/100.0))
# 同时显示数值和占比的饼图
return '{p:.2f}% ({v:d}人)'.format(p=pct,v=val)
return my_autopct
patches,l_text,p_text = plt.pie(data_cate.values,
labeldistance = 1.1,
labels=data_cate.index,
startangle = 60,
pctdistance = 0.7,
autopct=make_autopct(data_cate.values))
for t in l_text:
t.set_size(12)
for t in p_text:
t.set_size(12)
plt.title('各领域获奖人数',fontsize=15)
plt.legend(loc=2)
plt.show()
五、各领域获奖人数统计-国家排名
1. 生理学奖获奖人数top10国家
#实例化Pie类
pie = Pie(init_opts=opts.InitOpts(width='800px',height='550px'))
#添加数据,设置饼图半径
pie.add('',[list(z) for z in zip(data_med.head(10).index.tolist(), data_med.head(10).values.tolist())],
radius=['30%','60%'],
rosetype='radius'
)
#设置全局配置项
pie.set_global_opts(title_opts=opts.TitleOpts(title=''),
legend_opts=opts.LegendOpts(is_show=True))
#玫瑰图展示
pie.render_notebook()
2. 物理学奖获奖人数top10国家
#实例化Pie类
pie = Pie(init_opts=opts.InitOpts(width='800px',height='550px'))
#添加数据,设置饼图半径
pie.add('',[list(z) for z in zip(data_phy.head(10).index.tolist(), data_phy.head(10).values.tolist())],
radius=['30%','60%'],
rosetype='radius'
)
#设置全局配置项
pie.set_global_opts(title_opts=opts.TitleOpts(title=''),
legend_opts=opts.LegendOpts(is_show=True))
#玫瑰图展示
pie.render_notebook()
3. 化学奖获奖人数top10国家
#实例化Pie类
pie = Pie(init_opts=opts.InitOpts(width='800px',height='550px'))
#添加数据,设置饼图半径
pie.add('',[list(z) for z in zip(data_che.head(10).index.tolist(), data_che.head(10).values.tolist())],
radius=['30%','60%'],
rosetype='radius'
)
#设置全局配置项
pie.set_global_opts(title_opts=opts.TitleOpts(title=''),
legend_opts=opts.LegendOpts(is_show=True))
#玫瑰图展示
pie.render_notebook()
4. 文学奖获奖人数top10国家
#实例化Pie类
pie = Pie(init_opts=opts.InitOpts(width='800px',height='550px'))
#添加数据,设置饼图半径
pie.add('',[list(z) for z in zip(data_lit.head(10).index.tolist(), data_lit.head(10).values.tolist())],
radius=['30%','60%'],
rosetype='radius'
)
#设置全局配置项
pie.set_global_opts(title_opts=opts.TitleOpts(title=''),
legend_opts=opts.LegendOpts(is_show=True))
#玫瑰图展示
pie.render_notebook()
5. 经济学奖获奖人数top10国家
#实例化Pie类
pie = Pie(init_opts=opts.InitOpts(width='800px',height='550px'))
#添加数据,设置饼图半径
pie.add('',[list(z) for z in zip(data_eco.head(10).index.tolist(), data_eco.head(10).values.tolist())],
radius=['45%','75%'],
rosetype='radius'
)
#设置全局配置项
pie.set_global_opts(title_opts=opts.TitleOpts(title=''),
legend_opts=opts.LegendOpts(is_show=True))
#玫瑰图展示
pie.render_notebook()
6. 和平奖获奖人数top10国家
#实例化Pie类
pie = Pie(init_opts=opts.InitOpts(width='800px',height='550px'))
#添加数据,设置饼图半径
pie.add('',[list(z) for z in zip(data_pea.head(10).index.tolist(), data_pea.head(10).values.tolist())],
radius=['30%','60%'],
rosetype='radius'
)
#设置全局配置项
pie.set_global_opts(title_opts=opts.TitleOpts(title=''),
legend_opts=opts.LegendOpts(is_show=True))
#玫瑰图展示
pie.render_notebook()
六、获奖者平均年龄统计
df.plot(kind='bar',figsize=(10,6))
plt.title('各领域获奖者获奖年龄分布',fontsize=17)
plt.ylabel('获奖年龄',fontsize=14)
plt.xlabel('获奖领域',fontsize=14)
plt.xticks(rotation=45,fontsize=14)
plt.legend(loc=9,bbox_to_anchor=(0.86,0.96))
评论