前言
本文的文字及圖片來源於網絡,僅供學習、交流使用,不具有任何商業用途,版權歸原作者所有,如有問題請及時聯繫我們以作處理。
作者:CDA數據分析師
PS:如有需要Python學習資料的小夥伴可以加點擊下方鏈接自行獲取http://t.cn/A6Zvjdun
“李家有女,人稱子柒。”如果說到當下最火的網紅,想必很多人都會想到李子柒。
日出而作,日落而息,看似平淡無奇的日子,李子柒卻總能過成一首詩、一幅畫。
三月桃花熟了,採來釀桃花酒。四月枇杷成熟,釀枇杷酒…隨着不同時令季節,做出不同的美食,看過李子柒視頻的人,無一不對那視頻裏的古風田園生活嚮往憧憬着,同時也帶給了無數人治癒的力量。
目前在B站上,李子柒共有579萬的粉絲。入駐到現在僅僅發佈了共125條視頻,但隨便翻翻視頻列表,幾乎每個視頻都是爆款。
教你用Python分析
李子柒的視頻都在拍些什麼?
下面讓我們看到關鍵的分析步驟:
我們Python獲取了B站上李子柒發佈的125個視頻相關信息,進行了以下分析,分析流程如下:
- 數據讀入
- 數據清洗
- 數據可視化
- 數據讀入
首先讀入分析所用的數據集,本數據集一共包含125個樣本,11個字段,字段含義爲:視頻標題、一級分類、二級分類、發佈時間、最高全站排名、總播放數、歷史累計彈幕、點贊、投幣、收藏和分享數。
數據預覽如下:
# 導入包
import numpy as np
import pandas as pd
import re
# 讀入數據
df = pd.read_excel('./data/李子柒視頻數據.xlsx')
df.head()
數據清洗
此部分我們初步對以下信息進行簡單的處理,其中包含:
- title:提取主題和介紹
- top_rank:提取數值
- view_num:提取數值
- dm_num: 提取數值
- dianzan: 計算數值
- toubi: 計算數值
- shoucang:計算數值
- zhuanfa:計算數值
# 定義轉換函數
def transform_num(x):
str1 = str(x)
if '萬' in str1:
return float(str1.strip('萬'))*10000
else:
return float(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(lambda x: transform_num(x))
df['toubi'] = df.toubi.apply(lambda x: transform_num(x))
df['shoucang'] = df.shoucang.apply(lambda x: transform_num(x))
df['zhuanfa'] = df.zhuanfa.apply(lambda x: 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包用於繪製詞雲圖。關鍵部分代碼如下:
# 導出所需包
from pyecharts.charts import Pie, Line, Tab, Map, Bar, WordCloud, Page
from pyecharts import options as opts
from pyecharts.globals import SymbolType
import stylecloud
視頻各年發佈數量
# 發佈數量
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()