【視覺化分析案例】用python分析B站Top100排行榜資料

馬哥python說發表於2022-05-29

一、資料來源

之前,我分享過一期爬蟲,用python爬取Top100排行榜:

最終資料結果,是這樣的:
TOP100資料

在此資料基礎上,做python視覺化分析。

二、資料讀取

首先,讀取資料來源:

# 讀取csv資料
df = pd.read_csv(csv)

三、資料概覽

用shape檢視資料形狀:

# 檢視資料形狀
df.shape

用head檢視前n行:

# 檢視前5行
df.head(5)

用info檢視列資訊:

# 檢視列資訊
df.info()

用describe檢視統計性分析:

# 描述性統計分析
df.describe()

描述性統計

四、資料清洗

檢視是否存在空值:

# 檢視空值
df.isna().any()


每列都是False,沒有空值。

檢視是否存在重複值:

#檢視重複值
df.duplicated().any()


False代表沒有重複值。

上面我們看到,點踩數都是0,沒有分析意義,所以,用drop刪除此列:

# 刪除沒用的列
df.drop('點踩數', axis=1, inplace=True)

刪除之後,檢視刪除結果:

沒有點踩數了。

五、視覺化分析

5.1 相關性分析(Correlation)

資料中,有播放數、彈幕數、投幣數、點贊數、分享數、收藏數等眾多資料指標。

我想分析出,這些指標中,誰和綜合得分的關係最大,決定性最高。

直接採用pandas自帶的corr函式,得出相關性(spearman相關)矩陣:

可以看出,點贊數和綜合得分的相關性最高,達到了0.66。

根據此分析結論,進一步畫出點贊數和綜合得分的分佈散點圖,驗證此結論的正確性。

得出結論:隨著點贊數增多,綜合得分呈明顯上升趨勢,進一步得出,二者存在正相關的關係

5.2 餅圖(Pie)

綜合得分劃分分佈區間,繪製出分佈餅圖。

首先,劃分資料區間:

# 設定分段
bins = [1000000, 1500000,2000000, 2500000, 3000000, 10000000]
# 設定標籤
labels = [
    '100w-150w',
    '150w-200w',
    '200w-250w',
    '250w-300w',
    '300w-1000w'
]
# 按分段離散化資料
segments = pd.cut(score_list, bins, labels=labels)  # 按分段切割資料
counts = pd.value_counts(segments, sort=False).values.tolist()  # 統計個數

至於區間怎麼劃分,可以按照對資料的大致理解,和最終視覺化呈現的效果,微調劃分割槽間。

繪製餅圖:

得出結論:綜合得分在100w至150w這個區間的視訊最多,有36個視訊(佔比36%)

5.3 箱形圖(Boxplot)

箱形圖,是一種分析資料分佈、離散情況的資料分析方法。

首先,我嘗試了把這幾個資料指標,繪製在同一張圖裡:

可以發現,由於播放數遠遠大於其他資料指標,不在一個數量級,導致其他資料指標的box都擠到一塊了,視覺化效果很差,所以,我打算把每個box畫到一個圖裡,避免這種情況的發生。

以下程式碼,含知識點(subplot(n_row, n_col, order) n_row代表幾行,n_col代表幾列,order代表第幾個)

得出結論:每個資料指標都存在極值的情況(最大值距離box很遠),資料比較離散,方差較大

5.4 詞雲圖(wordcloud)

針對視訊作者,畫出詞雲圖。

程式碼中各個細節設定項,已新增對應註釋,不再贅述。

和原始背景圖對比:

這個背景圖,是我找的一個動漫小人的圖片,對比詞雲圖,你會發現:

  1. 詞雲圖和背景圖的形狀,大體一致(mask引數的作用)

  2. 詞雲圖和背景圖的顏色分佈,大體一致(color_func引數的作用)

至此,全部分析結束。

六、同步講解視訊

此案例的講解視訊:
https://www.zhihu.com/zvideo/1513851213354893312


by 馬哥python說

相關文章