数据分析告诉你,历年的诺贝尔奖都被哪些人拿走了?

·  阅读 57

大家好,我是K同学啊~

最近,诺贝奖得主引起了大家的热议,我用数据分析了一下历年的诺贝尔奖得主情况,分享给大家~

点击我跳转末尾 获取源码+数据 以及粉丝福利

在这里插入图片描述

注:图片取自B站

诺贝尔奖(瑞典语:Nobel priset,英语:Nobel Prize):是指根据诺贝尔1895年的遗嘱而设立的五个奖项,包括:物理学奖化学奖和平奖生理学医学奖文学奖旨在表彰在物理学、化学、和平、生理学或医学以及文学上对社会做出卓越贡献,或做出杰出研究、发明以及实验的人士。以及瑞典中央银行1968年设立的诺贝尔经济学奖,用于表彰在经济学领域杰出贡献的人。 诺贝尔奖历经百年,时至今日,诺贝尔奖一直都被视为各领域最重要的荣誉之一。

@toc

一、导入数据

#获取获奖信息数据
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))
复制代码


最后再送大家一本,帮助大家拿到 BAT 等一线大厂 offer 的数据结构刷题笔记,是谷歌和阿里的大佬写的,对于算法薄弱或者需要提高的同学都十分受用(提取码:9go2 ):

谷歌和阿里大佬的Leetcode刷题笔记

以及我整理的7K+本开源电子书,总有一本可以帮到你 💖(提取码:4eg0)

7K+本开源电子书

👇🏻 源码+数据 可通过扫一扫下方 公众号(K同学啊) 回复 【诺贝尔】获取👇🏻

image.png

分类:
代码人生
标签: