Python 告诉你所不知道的春晚 1983 -2018

栏目: Python · 发布时间: 6年前

内容简介:万万没想到。马上就要过年了,距离 2019 己亥猪年的除夕已不足一个礼拜,提起除夕,多数人马上想到「春节联欢晚会」这道丰盛的「年夜大餐」。看过那么多春晚,哪一年、哪些节目、哪些人你还留有深刻印象呢。

万万没想到。

Python 告诉你所不知道的春晚 1983 -2018

摘要:用 Python 分析过往 36 年春晚节目数据,发现一些趣事。

马上就要过年了,距离 2019 己亥猪年的除夕已不足一个礼拜,提起除夕,多数人马上想到「春节联欢晚会」这道丰盛的「年夜大餐」。看过那么多春晚,哪一年、哪些节目、哪些人你还留有深刻印象呢。

记忆中,只完整地看过 2005 年到 2015 年十年春晚。 05 年之前,还很小,看不懂;15 年之后,长大了,也看不懂了

如今,距离第一届春晚 1983 年,整整过去了 36 年,3 轮的「十二生肖」年。趁今年春晚还没到,来回顾一下过往 36 届春晚的一些有趣数据。

分析内容

接下来,通过 Python 数据分析,会回答下面这些问题,在知道答案之前,你可以先猜猜看:

  • 谁导演春晚次数最多?

  • 谁主持春晚次数最多?

  • 哪两年的除夕刚好是同一天?

  • 谁上春晚次数最多,堪称「钉子户」?

  • 港台明星上春晚次数对比

  • 歌曲、小品、相声类节目数量对比

数据获取

网上搜了挺久都没有找到齐全的春晚节目数据,连春晚官网也没有,结果在维基百科上找到了。

Python 告诉你所不知道的春晚 1983 -2018

右侧信息表有导演、主持人、除夕当天日期这几项数据。

Python 告诉你所不知道的春晚 1983 -2018

节目单表是每一年春晚上表演的节目,包括:节目类型、节目名、演员名这几项数据。

Python 抓取这类表格数据,方法简单,几行代码就能搞定,修改 URL 的 page 参数,可以循环遍历抓取 1983 到 2018 年所有的节目数据。

数据抓取代码如下:

import requests
import pandas as pd
from urllib.parse import quote

def get_content(year):
    keywords = quote('年中国中央电视台春节联欢晚会')
    url = 'https://zh.wikipedia.org/wiki/{}{}'.format(year,keywords)
    # 1 节目单; 0 节目信息
    if year != 2014:
        response = pd.read_html(url)[1]
    else:
        response = pd.read_html(url)[3]
    response['year'] = year
    response.drop([0],inplace=True) #删除首行
    response.to_csv('chinese_newyear.csv',mode='a',encoding='utf_8_sig',index=0,header=0)

if __name__ == '__main__':
    for year in range(1983,2018):
        get_content(year)

抓取下来的节目信息:

Python 告诉你所不知道的春晚 1983 -2018

抓取下来的节目数据:

Python 告诉你所不知道的春晚 1983 -2018

抓取下来的数据是脏数据,用 Python 清洗处理一下就可以分析,这些不是重点,所以下面直接进入分析环节,来一探究竟。

数据分析

▌谁导演春晚次数最多?

导演是春晚的总负责人,好比厨师,厨师决定了春晚大餐好不好吃。36 年间,有很多导演负责过春晚,比如近些年的哈文、朗昆,你可能想知道他们是不是导演次数最多的,下面就来看看导演次数最多的十大导演:

Python 告诉你所不知道的春晚 1983 -2018

导演次数最多的是黄一鹤和朗昆导演,两个人都导演了 5 次。

黄一鹤导演对于 80 后之后的人来说,不算熟悉,因为他导演春晚的时候是在 80 年代,很多人都没有出生。朗坤则相对熟悉些,最近一次导演是 2009 年。那一年的春晚,是印象最深刻的一届,因为诞生了赵本山最棒的小品《不差钱》(个人之见)。

哈文一共导演了 3 次,都在 2010 年之后,其他的导演就不那么熟悉了,相比于主持人、演员,他们是幕后工作者。

代码实现如下:

def get_director():
    data = pd.read_csv('chinese_newyear3.csv',encoding='utf_8_sig')
    # 筛选导演主持人
    data = data[data['category'] == '导演']
    # data = data[data['category'] == '主持']
    data2 = data['content'].str.split('、',expand=True)

    # 统计出现次数
    data2 = data2.apply(pd.value_counts)
    data2['col_num'] = data2.sum(axis=1)
    data2.sort_values(by='col_num',ascending=False,inplace=True)
    data2 = data2['col_num'][:10][::-1]
    return data,data2

def analysis6(data,data2):
    data = data.set_index('year')
    data2.sort_values(ascending=False,inplace=True)
    lst = list(data2.index)[:10]
    lst_num = list(data2)[:10]

    colorsall = [color1,color2,color3,color4,color5,color1,color2,color3,color4,color5]
    for i,name in enumerate(lst):
        data3 = data['content'].str.contains(name,na=False).astype('int')
        data3 = pd.DataFrame(data3[data3.values == 1])
        data3['year'] = data3.index

        axs = fig.add_subplot(1, 10, 1+i)
        data3.plot(
            ax=axs,
            x='content',
            y = 'year',
            kind = 'scatter',
            subplots=True,
            sharey=True,
            color=colorsall[i],
            )
        new_ticks = np.linspace(1980,2020,41)
        plt.yticks(new_ticks)
        plt.tick_params(direction='in')  #标签朝里
        plt.tick_params(which='major',length=0)  # 不显示刻度标签长度
        plt.xticks([]) #去掉坐标标签
        plt.xlabel('%i' %(lst_num[i]),fontsize=10)
        plt.xlim(0,2)

        plt.title(name,color=color5,fontsize=10)
        plt.tight_layout()
        fig.subplots_adjust(hspace=0,wspace=0) # 调整子图间距为0

    plt.savefig('导演次数最多的主持 TOP 10.png',dpi=200)
    plt.show()

▌谁主持春晚次数最多?

导演过后就是主持人了,他们堪称春晚的门面,大家也更熟悉些,不管是早年的赵忠祥、倪萍,中生代的朱军、董卿,还是近年新晋的康辉、李思思以及我们新疆大帅锅尼格买提,只要一提名字,你马上就能对号入座。

可你知道主持界的「钉子户」是谁?「常青树」又是哪些人? 来看看春晚主持次数最多的 TOP 10 名单:

Python 告诉你所不知道的春晚 1983 -2018

一眼望去,十个人每一个都很熟悉。

排第一的是 主持了 21 年的朱军 ,称得上劳模了, 从 1997 年连续不间断地住持到 2017 年 ,远超其他主持人。

排第二的是周涛,主持了 14 年,2011 年之后退居幕后, 2016 年又复出了一次。对她的印象,莫过于 2003 年和冯巩合作过的一个小品《马路情歌》:

Python 告诉你所不知道的春晚 1983 -2018

排第三的是董卿,从 05 年开始主持,只在 2018 年缺席了一年,大家都喜欢她,所以她缺席也成为去年春晚的一大讨论话题。好消息是,今年的春晚她会继续主持。

董卿春晚上的亮点太多了,印象最深的是和刘谦三度搭档过的魔术节目。刘谦技术够神,董卿配合地也神。另一个好消息是,自 13 年阔别春晚舞台之后,刘谦今年也会再度登台,二人是否还会继续搭档呢,拭目以待。

Python 告诉你所不知道的春晚 1983 -2018

再往后是一对著名搭档,赵忠祥和倪萍老师,可惜印象不深,找了找他们曾主持过的春晚照片,满满的历史感。

Python 告诉你所不知道的春晚 1983 -2018

(1992 年春晚)

Python 告诉你所不知道的春晚 1983 -2018

(1996 年春晚)

再之后是李咏,刚刚离开不久,喜欢他的风格,希望天堂也有话筒,也有春晚。

Python 告诉你所不知道的春晚 1983 -2018

说完主持人,下面说一说除夕的日期。

▌哪两年的除夕刚好是同一天?

小时候一直没有搞懂中国的农历,想不明白为什么每年除夕的日子都不一样,为什么过年不是在元旦。后来才知道这是我们老祖宗的智慧,因为农历比阳历更加准确。

每年除夕的日期都在变化,那你是否好奇过某两年的除夕是在同一天这个问题?

来看看:

Python 告诉你所不知道的春晚 1983 -2018

以从下往上,从左往右的顺序看上面这张图,会发现几件有意思的事:

  • 除夕最早的一年是 2004 年, 1 月 21 日。

  • 除夕最晚的一年是 1985 年, 2 月 19 日,最早最晚差了近一个月。

  • 2019 年除夕是 2 月 4 日,和 2000 年是一样的。

  • 有不少年份的除夕在同一天。比如:1993 和 2012 年都在 1 月 22 日,1998 和 2017 年的 1 月 27 日,1987 和 2006 年的 1 月 28 日。很有意思对吧,但至今最多只有两年的除夕是在同一年,没有出现过「三年除夕都在同一天」这种现象,也许以后会。

代码实现如下,关键点在于 For 循环绘制子图。

# 分析除夕日期
def get_date():
    fig = plt.figure(figsize=(5,8))
    ax = fig.add_subplot(111)
    data = pd.read_csv('chinese_newyear3.csv',encoding='utf_8_sig')
    data = data[data['category'] == '播出日期']
    data = data['content'].str.extract(r'.*?年(.*?)月(.*?)日.*?')
    data = data.reset_index(drop=True)
    data.columns = ['month','day']
    data['year'] = np.arange(1983,2019)

    # int 转 string
    data = data.applymap(str)
    data['year2'] = '1900'
    data['date'] = data['year2'].str.cat([data['month'],data['day']],sep='/')
    data = data.apply(pd.to_numeric,errors='ignore')
    data['date'] = pd.to_datetime(data['date'])
    ax.plot(
        data['date'],
        data['year'],
        )
    new_yticks = np.linspace(1980,2020,41)
    date_format = mpl.dates.DateFormatter("%m-%d")
    ax.xaxis.set_major_formatter(date_format)
    plt.yticks(new_yticks)
    plt.tick_params(direction='in')  #标签朝里
    content = list(zip(data['date'],data['year']))
    for x, y in content:
        x2 = '%s' %x.strftime('%m/%d') # 只显示月日格式
        # print(x,'\n',y)
        plt.text(x, y+0.2,x2, ha='center', color=color4)

    plt.title('历年农历除夕日期变化',color=color4,fontsize=14)
    plt.tight_layout()
    plt.savefig('除夕日期变化.png',dpi=200,)
    plt.show()

下面,来看看更有意思的。

▌谁上春晚次数最多,堪称「钉子户」?

很多人梦想着这辈子能上一次春晚,但绝大多数人都只能坐在电视跟前,而有些人则天生是上春晚的,上春晚就像家常便饭,一上就是几十年。 你能猜到这 36 年谁上春晚次数最多么?

来看看:

Python 告诉你所不知道的春晚 1983 -2018

春晚表演次数最多的是相声演员冯巩大叔,你猜对了么。春晚总共 36 年历史,他就登台了 35 次,十足的「钉子户」。

前 5 名除了李谷一老师是歌手以外,其他人都是相声或小品演员,也都是你熟悉的面孔:姜昆、蔡明和黄宏。相声和小品为春晚贡献了很多人才。

5 - 10 名歌唱家占多,有宋祖英,还有一位你知道的,没想到还上了这么多次吧。另外还有两名小品演员本山大叔和黄宏。可惜,不见二人表演已多年。

10 - 20 名还有很多熟悉的人,比如郭冬临、巩汉林、潘长江等。

来具体看一下他们都上了哪些年的春晚:

Python 告诉你所不知道的春晚 1983 -2018

(注:部分演员表演次数和图中点数不一致,是因为某些年 TA 不只表演了一个节目)

冯巩老师从 86 年至今,雷打不动地从未缺席过春晚。他上的最多,每年的开场白都是那句「我想死你们了」,对春晚和观众的热爱之情可见一斑。

他的作品太多了,相声小品通吃,多的让人记不住。

Python 告诉你所不知道的春晚 1983 -2018

姜昆老师,登台最早,第一年春晚就上台了。这些年,消失几年后又出现在春晚舞台,也许是为了以免大家太过于想他。

最喜欢他 1987 年的《虎口遐想》相声,30 年后的 2017 年又再度带来了《新虎口遐想》。岁月在他的脸上仿佛没有留下痕迹。

Python 告诉你所不知道的春晚 1983 -2018

(1987 年《虎口遐想》)

Python 告诉你所不知道的春晚 1983 -2018

(2017 年《新虎口遐想》)

蔡明老师,是女性中上春晚最多的。她和许多人合作过,和谁合作效果都好。

Python 告诉你所不知道的春晚 1983 -2018

(1991 年《陌生人》)

黄宏老师一连登台 25 年,小品中扮演过很多角色,可惜 2012 年之后就没有上台了。

李谷一老师,春晚演出时间跨度最大,1983 年有她,2018 年还有她。对她的印象莫过于每年春晚尾声的那曲《难忘今宵》。实际上,李谷一老师曾一人撑起了早期的春晚。1983 年的春晚,她一人连唱 7 首歌,前无古人,也后无来者。

Python 告诉你所不知道的春晚 1983 -2018

赵本山老师,对他的评价只有一句: 赵本山之后再无春晚。 他在就是压轴,每一部作品都看过很多遍,现在也只有靠怀念,众多作品中,最喜欢两部:

Python 告诉你所不知道的春晚 1983 -2018

(2005 年《功夫》)

Python 告诉你所不知道的春晚 1983 -2018

(2009 年《不差钱》)

▌港台明星上春晚次数对比

不知你发现没有,前面这些人员都来自内地,港台及海外明星并没有出现,但不可忽略的是,他们的演出让春晚更精彩。

来看看都有哪些港台明星上过春晚,上了几次:

Python 告诉你所不知道的春晚 1983 -2018

(注:这里选的 10 位明星是第一时间想到的,全凭个人主观印象)

周董上过 5 次春晚,你猜对了么?最近一次是去年的《告白气球》,当时朋友圈都刷爆了。除此之外,他其他几次登台,都惊艳无比,04 年的《龙拳》,08 年的《青花瓷》,09 年的《本草纲目》以及 11 年的《兰亭集序》。

Python 告诉你所不知道的春晚 1983 -2018

15 年,偶像换了一波又一波,他却依旧是那个光芒四射的周杰伦。

成龙大哥同样上了 5 次,一身正气、中国功夫。

刘德华是四大天王中上春晚最多、最早的,2005 年唱了那首《恭喜发财》之后,每年过年在大街小巷你都能听到。

王力宏上了 4 次,2012 年龙年,再次唱了那首家喻户晓的《龙的传人》。

王菲是港台明星中,上春晚次数最多的女星之一,98 年和那英的《相约九八 》影响力空前。其他几次《传奇》、《因为爱》和《岁月》也空灵好听。

▌歌曲、小品、相声等节目数量对比

最后,再来看看春晚各类节目构成比例。印象中,最多的节目就是歌曲,其次是小品、相声。可以看到,歌曲类节目基本占了所有节目的一半,小品占了 15%,相声是 9%。其他类型则是一些杂技、戏剧、舞蹈这些,未作统计。

Python 告诉你所不知道的春晚 1983 -2018

代码实现如下:

# 各节目数量
def analysis3(data):
    fig = plt.figure(figsize=(8,5))
    num_all = data.shape[0]
    # 歌曲节目数量
    num_song = data[data['category'].str.contains('歌|尾|开场')].shape[0]
    # 小品数量
    num_sketch = data[data['category'].str.contains('小品')].shape[0]
    # 相声数量
    num_crosstalk = data[data['category'].str.contains('相声')].shape[0]

    # 其他节目数量
    other = num_all - sum([num_song,num_sketch,num_crosstalk])
    lst = [num_song,num_sketch,num_crosstalk,other]

    sizes = [num_song,other,num_crosstalk,num_sketch]
    labels = ['歌曲','其他','相声','小品']
    colors_pie = [color1,color4,color3,color2]
    explode = [0.05,0,0,0]
    plt.pie(
        sizes,
        autopct='%.1f%%',
        labels=labels,
        colors=colors_pie,
        shadow=False,
        startangle=270,
        explode=explode,
        textprops={'fontsize':14,'color':colors}
        )
    plt.title('1983-2018 共 36 年春晚节目类型数量比较',color=colorstitle,fontsize=fontsize_title)

    plt.tight_layout()
    plt.axis('equal')
    plt.axis('off')
    plt.legend(loc='upper right')
    plt.savefig('1983-2018 共 36 年间各类节目类型数量比较.png',dpi=200)
    plt.show()

以上,就是对过去 36 年春晚节目的简单分析。

你对春晚的了解有增加么?

如需完整代码,可以加入我的知识星球,都是干货。

Python 告诉你所不知道的春晚 1983 -2018

本文完。


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

网站运维技术与实践

网站运维技术与实践

饶琛琳 / 电子工业出版社 / 2014-3 / 69.00元

网站运维工作,一向以内容繁杂、覆盖面广著称。《网站运维技术与实践》选取日常工作涉及的监测调优、日志分析、集群规划、自动化部署、存储和数据库等方面,力图深入阐述各项工作的技术要点及协议原理,并介绍相关开源产品的实践经验。在技术之外,作者也分享了一些关于高效工作及个人成长方面的心得。 《网站运维技术与实践》适合Linux 系统管理员、中大型网站运维工程师及技术负责人、DevOps 爱好者阅读。同......一起来看看 《网站运维技术与实践》 这本书的介绍吧!

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具

HEX HSV 转换工具
HEX HSV 转换工具

HEX HSV 互换工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具