python125免费教程,125 个视频成就千万级网红,Python 告诉你李子柒都在拍些什么?...
原標題:125 個視頻成就千萬級網紅,Python 告訴你李子柒都在拍些什么?
作者 |Mika,數據 |真達
后期 |Mika、澤龍
責編 | 郭芮
來源 | CDA數據分析師
今天我們來聊聊把生活過成詩的李子柒。
“李家有女,人稱子柒。”如果說到當下最火的網紅,想必很多人都會想到李子柒。
日出而作,日落而息,看似平淡無奇的日子,李子柒卻總能過成一首詩、一幅畫。
三月桃花熟了,采來釀桃花酒。四月枇杷成熟,釀枇杷酒…隨著不同時令季節,做出不同的美食,看過李子柒視頻的人,無一不對那視頻里的古風田園生活向往憧憬著,同時也帶給了無數人治愈的力量。
目前在B站上,李子柒共有579萬的粉絲。入駐到現在僅僅發布了共125條視頻,但隨便翻翻視頻列表,幾乎每個視頻都是爆款。
那么,她的這些視頻都有些什么特點,播放量最高的視頻是哪個?今天我們就帶你用數據來解讀李子柒。
“把生活過成詩” ,李子柒的視頻為什么這么吸引人?
我們用Python對李子柒在B站上發布的125個視頻進行了分析。分析流程包括以下這三個步驟:
數據讀入
數據清洗
數據可視化
首先讓我們看到分析結果:
視頻各年發布數量
先看到李子柒在B站上各年發布的視頻數量。
從2016年7月開始,李子柒在B站發布了第一個視頻。根據統計,在2016年她共發布了14個視頻。2017-2019年這三年發布的視頻數量差不多,都是在34條左右,平均下來每個月發布2.8個視頻。截止到目前為止,在2020年發布了8個視頻。
視頻各月發布數量
大家都說在李子柒的視頻中可以感受到一年四季的變化,那么她在哪些月份發布的視頻最多呢?
分析發現,其中夏季的視頻明顯高于其他季節,特別是8月份,在全部125個視頻中就有26個視頻在8月發布,占比20%。其次,秋季也是李子柒視頻高產的季節,9-11月共發布36個視頻。
視頻發布時間線
在視頻發布時間上有什么特點呢?
通過對李子柒視頻發布時間線的分析,我們發現有四個發布視頻的高峰時間,分別是中午12點,下午4點,下午6點,以及晚上9點。其中晚上九點發布的視頻最多,共有14個。
視頻類型占比
在視頻類型上,當然美食是最多的了,占比高達87.2%。其次是手工類型的視頻,占比12%。最少的是美妝視頻,在目前發布的125個視頻僅有1個是美妝類型的。
視頻排行榜表現
在所有125個視頻中,有72個登上了B站日排行榜。其中進入前10名的共有7個,其次是50-100名的,有12個視頻。10-50名和100名以上的視頻最多,均為53個。
各類視頻數據平均表現
下面再看到李子柒視頻各類數據平均表現。
其中視頻的平均彈幕數為8361條,點贊數為52965個,投幣為32690個。收藏數為8455個,平均轉發為5652次。
哪些視頻播放量最高?哪些視頻彈幕互動最多呢?
播放量TOP10視頻
讓我們分別看看,首先是播放量最高視頻top10榜單,播放最多的視頻是《聽說愛吃螺螄粉的朋友,都很可愛阿!》,播放量達到了526萬余次。看來螺螄粉果然是妥妥的國民級網紅小吃啊。
這個視頻的彈幕中都在說些什么?
可以看到,在播放量最高的螺螄粉視頻中,彈幕中討論頻率最高的就是各種食材啦,比如"田螺"、"螺螄"、"豆角"、"辣椒"、"豇豆"等等。還有"廣西"這個螺螄粉的原產地也被提及。有意思的是,同樣拍了螺螄粉主題的美食區up主比如"蛋黃派"也在彈幕中被提到。
彈幕數TOP10視頻
然后是彈幕最多視頻top10,彈幕最多的視頻是《所以這個視頻就叫辣椒的一生》總彈幕數達到4萬余條。
這個視頻的彈幕中都在說些什么?
這個視頻的彈幕特別有意思,彈幕中討論最多的就是各種許愿相關的詞了,比如"上岸"、"考上"、"考研"、"成功"、"順利"、"加油"等詞,被提到的頻率最高。
我們再分析下李子柒的視頻標題,她的視頻標題比較有特點,基本都是【關鍵詞】+簡單描述。比如:【小麥的一生】一株小麥,變化出扎根在每個人記憶里的味道。
視頻標題關鍵詞詞云
我們先看到關鍵詞的詞云特點,可以看到關鍵詞中除了"李子柒","桃花"、"臘味"、"豌豆"都是出現頻率特別高的食材。同時"手工"也是高頻詞。其次某種食材的"一生",也是李子柒熱衷拍攝的主題。
視頻標題描述詞云
那么視頻標題描述上有什么特點呢?
分析發現"味道"出現的頻率最高,遠遠超出其他詞。其次,"夏天"、"千年"、"家里"、"記憶里"等詞也頻頻出現。
教你用Python分析李子柒的視頻都在拍些什么?
下面讓我們看到關鍵的分析步驟:
我們Python獲取了B站上李子柒發布的125個視頻相關信息,進行了以下分析,分析流程如下:
數據讀入
數據清洗
數據可視化
數據讀入
首先讀入分析所用的數據集,本數據集一共包含125個樣本,11個字段,字段含義為:視頻標題、一級分類、二級分類、發布時間、最高全站排名、總播放數、歷史累計彈幕、點贊、投幣、收藏和分享數。數據預覽如下:
# 導入包
importnumpy asnp
importpandas aspd
importre
# 讀入數據df = pd.read_excel( './data/李子柒視頻數據.xlsx')df.head
數據清洗
此部分我們初步對以下信息進行簡單的處理,其中包含:
title:提取主題和介紹
top_rank:提取數值
view_num:提取數值
dm_num: 提取數值
dianzan: 計算數值
toubi: 計算數值
shoucang:計算數值
zhuanfa:計算數值
# 定義轉換函數deftransform_num(x):str1 = str(x)if'萬'instr1:returnfloat(str1.strip( '萬'))* 10000else:returnfloat(str1)# 提取數據df[ 'title_1'] = df.title.str.extract( '【(.*?)】.*')df[ 'title_2'] = df.title.str.split( '】').str[ -1]df[ 'top_rank'] = df.top_rank.str.extract( '最高全站日排行(d+)名')df[ 'view_num'] = df.view_num.str.extract( '(d+)')df[ 'dm_num'] = df.dm_num.str.extract( '(d+)')df[ 'dianzan'] = df.dianzan.apply( lambdax: transform_num(x))df[ 'toubi'] = df.toubi.apply( lambdax: transform_num(x))df[ 'shoucang'] = df.shoucang.apply( lambdax: transform_num(x))df[ 'zhuanfa'] = df.zhuanfa.apply( lambdax: transform_num(x))
# 轉換類型df[ 'view_num'] = df.view_num.astype( 'int')df[ 'dm_num'] = df.dm_num.astype( 'int')df[ 'publish_time'] = pd.to_datetime(df[ 'publish_time'])
經過處理之后的數據如下所示:
df.head(2)
數據可視化
此處我們將進行以下部分的可視化分析,首先導入所需包,其中pyecharts用于繪制動態可視化圖形,stylecloud包用于繪制詞云圖。關鍵部分代碼如下:
# 導出所需包frompyecharts.charts importPie, Line, Tab, Map, Bar, WordCloud, Pagefrompyecharts importoptions asoptsfrompyecharts.globals importSymbolTypeimportstylecloud
視頻各年發布數量:
# 發布數量pub_year= df.publish_time.dt.year.value_counts.sort_index# 條形圖bar0 = Bar(init_opts=opts.InitOpts(width= '1350px', height= '750px'))bar0.add_xaxis(pub_year.index.tolist)bar0.add_yaxis( '', pub_year.values.tolist)bar0.set_global_opts(title_opts=opts.TitleOpts(title= 'B站李子柒視頻各年發布數量'),visualmap_opts=opts.VisualMapOpts(max_= 50),)bar0.render
視頻各月發布數量:
pub_month = df.publish_time.dt.month.value_counts.sort_index# 條形圖bar = Bar(init_opts=opts.InitOpts(width= '1350px', height= '750px'))bar.add_xaxis([str(i)+ '月'fori inpub_month.index.tolist])bar.add_yaxis( '', pub_month.values.tolist)bar.set_global_opts(title_opts=opts.TitleOpts(title= 'B站李子柒視頻各月發布數量'),visualmap_opts=opts.VisualMapOpts(max_=30),)bar.render
視頻發布時間線:
# 發布時間點分布pub_hour = df.publish_time.dt.hour.value_counts.sort_index# 產生數據x1_line1 = [i+ '點'fori inpub_hour.index.values.astype( 'str').tolist]y1_line1 = pub_hour.values.tolist
# 繪制面積圖line1 = Line(init_opts=opts.InitOpts(width= '1350px', height= '750px'))line1.add_xaxis(x1_line1)line1.add_yaxis( '', y1_line1,markpoint_opts=opts.MarkPointOpts(data=[opts.MarkPointItem(type_= 'max', name= '最大值'),opts.MarkPointItem(type_= 'min', name= '最小值')]))line1.set_global_opts(title_opts=opts.TitleOpts( 'B站李子柒視頻日發布時間線'),visualmap_opts=opts.VisualMapOpts(max_= 20))line1.set_series_opts(label_opts=opts.LabelOpts(is_show= False),linestyle_opts=opts.LineStyleOpts(width= 3))line1.render
發布視頻類型占比:
# 視頻類型占比cat_num = df.cat2.value_counts# 產生數據對data_pair = [list(z) forz inzip(cat_num.index.tolist, cat_num.values.tolist)]
# 繪制餅圖# {a}(系列名稱),{b}(數據項名稱),{c}(數值), ze8trgl8bvbq(百分比)pie1 = Pie(init_opts=opts.InitOpts(width= '1350px', height= '750px'))pie1.add( '', data_pair=data_pair, radius=[ '35%', '60%'])pie1.set_global_opts(title_opts=opts.TitleOpts(title= 'B站李子柒發布視頻類型占比'),legend_opts=opts.LegendOpts(orient= 'vertical', pos_top= '15%', pos_left= '2%'))pie1.set_series_opts(label_opts=opts.LabelOpts(formatter= "{b}:ze8trgl8bvbq%"))pie1.render
有排名數據視頻表現:
top_rank_num = df.top_rank.dropna.astype( 'int')cut_bins = [ 1, 10, 30, 50, 100]top_num = pd.cut(top_rank_num, bins=cut_bins, labels=[ '前10名', '10-30名', '30-50名', '50-100名']).value_counts
# 數據對data_pair_2 = [list(z) forz inzip( top_num.index.tolist(), top_num.values. tolist( ))]
# 餅圖pie2= Pie(init_opts=opts.InitOpts(width= '1350px', height= '750px'))pie2. add( '', data_pair=data_pair_2, radius=[ '35%', '60%'])pie2.set_global_opts(title_opts=opts.TitleOpts(title= 'B站李子柒有排名數據視頻表現'),legend_opts=opts.LegendOpts(orient= 'vertical', pos_top= '15%', pos_left= '2%'))pie2.set_series_opts(label_opts=opts.LabelOpts(formatter= "{b}:數量:{c}n占比:ze8trgl8bvbq%"))pie2.render
視頻各類數據平均表現:
df_num= df[[ 'view_num', 'dm_num', 'dianzan', 'toubi', 'shoucang', 'zhuanfa']].mean# 條形圖bar3 = Bar(init_opts=opts.InitOpts(width= '1350px', height= '750px'))bar3.add_xaxis([ '彈幕數', '點贊數', '投幣數', '收藏數', '轉發數'])bar3.add_yaxis( '', df_num.values.tolist[ 1:])bar3.set_global_opts(title_opts=opts.TitleOpts(title= 'B站李子柒視頻各類數據平均表現'),visualmap_opts=opts.VisualMapOpts(max_= 50000),)bar3.render
播放數Top10視頻:
# 最多播放top10view_top10 = df.sort_values( 'view_num', ascending=False).head( 10)[[ 'title', 'view_num']]view_top10 = view_top10.sort_values( 'view_num')# 柱形圖bar1 = Bar(init_opts=opts.InitOpts(width= '1350px', height= '750px'))bar1.add_xaxis(view_top10.title.values.tolist)bar1.add_yaxis( '', view_top10.view_num.values.tolist)bar1.set_global_opts(title_opts=opts.TitleOpts(title= 'B站李子柒播放數Top10視頻'),yaxis_opts=opts.AxisOpts(axislabel_opts=opts.LabelOpts(position= 'inside')),visualmap_opts=opts.VisualMapOpts(max_= 3000000),)bar1.set_series_opts(label_opts=opts.LabelOpts(position= 'right'))bar1.reversal_axisbar1.render
彈幕數Top10視頻:
# 彈幕最多top10dm_top10 = df.sort_values( 'dm_num', ascending=False).head( 10)[[ 'title', 'dm_num']]dm_top10 = dm_top10.sort_values( "dm_num")# 柱形圖bar2 = Bar(init_opts=opts.InitOpts(width= '1350px', height= '750px'))bar2.add_xaxis(dm_top10.title.values.tolist)bar2.add_yaxis( '', dm_top10.dm_num.values.tolist)bar2.set_global_opts(title_opts=opts.TitleOpts(title= 'B站李子柒彈幕數Top10視頻'),visualmap_opts=opts.VisualMapOpts(max_= 40999),)bar2.set_series_opts(label_opts=opts.LabelOpts(position= 'right'))bar2.reversal_axisbar2.render
視頻標題詞云圖:
importstylecloudstylecloud.gen_stylecloud(text= ' '.join(word_num_selected), #text需要是str類型palette= 'tableau.Tableau_10',collocations= False,font_path= r'?C:WindowsFontsmsyh.ttc', # 字體icon_name= 'fas fa-heart',size= 768,output_name= '李子柒視頻標題詞云圖.png'# 生成圖片)
聲明:本文經授權轉載,版權歸原作者所有。
面試官:你的 SQL 一般有幾個 join?| 原力計劃
? 好撲科技結合區塊鏈行業發展趨勢,重磅推出“好撲區塊鏈合伙人”計劃返回搜狐,查看更多
責任編輯:
總結
以上是生活随笔為你收集整理的python125免费教程,125 个视频成就千万级网红,Python 告诉你李子柒都在拍些什么?...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php 接口测压,PHP API接口测试
- 下一篇: python最基本的规则是关键字吗,Py