数据分析历届诺贝尔奖~

裸睡的猪

共 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))

浏览 80
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报