微信文章數據分析一(閱讀點贊評論)

本系列是微信公衆號/文章系列中數據分析的第一篇,僅作一個簡單的示例展示,可供分析參考。
注:爲避免其他影響,這裏不放出具體公衆號名稱。以下爲部分數據截圖。

在這裏插入圖片描述

廣告部分:

  1. 如何拿到微信文章相關數據,可見記一次微信公衆號爬蟲的經歷(微信文章閱讀點讚的獲取)。相關數據獲取可見文末聯繫方式
  2. 如何批量關注公衆號,可見自動批量關注微信公衆號(非逆向)

正文部分:

閱讀數

首先,微信文章主要三個數據指標是閱讀點贊和評論,其中評論又分爲評論內容、評論內容點贊、評論總數。先小試牛刀隨便根據閱讀點贊評論數據畫個圖。

# coding: utf-8
import numpy as np
import os
import pandas as pd
import matplotlib.pyplot as plt
from pandas.plotting import register_matplotlib_converters

if __name__ == '__main__':

    fname = fname # 文件名
    # 讀取數據
    df = pd.read_excel(fname, index_col=0)

    plt.cla() # 清空畫圖
    register_matplotlib_converters() # 時間序列畫圖,避免報錯或warnning
    # 閱讀、點贊、評論數隨日期的變化
    # 處理日期格式
    df['date'] = pd.to_datetime(df['date'], format="%Y-%m-%d")
    date, read_num, like_num, comments = df['date'], df['read_num'], df['like_num'], df['comments']
    # 由於這裏一開始拿到的是評論內容(用--分割),所以這裏進行簡單的處理,統計評論數
    comments_num = comments.apply(str).apply(lambda item: 0 if 'nan' in item else len(item.split('--')))
    df['comments_num'] = comments_num

    # 先把閱讀數畫一遍
    plt.plot(date, read_num, label='read_num')

    plt.xlabel('date')
    plt.xticks(rotation=30)
    plt.ylabel('number')
    plt.legend()
    plt.show()

在這裏插入圖片描述

閱讀、點贊、評論數

    plt.plot(date, read_num, label='read_num')
    plt.plot(date, like_num, label='like_num', color='red')
    plt.scatter(date, comments_num, label='comments_num', color='orange')


    plt.xlabel('date')
    plt.xticks(rotation=30)
    plt.ylabel('number')
    plt.legend()
    plt.show()

在這裏插入圖片描述
這裏評論數爲方便與閱讀和點贊區分,故用了散點來表示。但這裏發現由於閱讀數會遠遠大於點贊和評論數,所以點贊和評論數的趨勢不是很明顯。下面單獨把點贊和評論畫出來。

    plt.plot(date, like_num, label='like_num', color='red')
    plt.scatter(date, comments_num, label='comments_num', color='orange')


    plt.xlabel('date')
    plt.xticks(rotation=30)
    plt.ylabel('number')
    plt.legend()
    plt.show()

在這裏插入圖片描述
當然,這裏還有一個方法可以做到把三個指標數據放一起對比。這裏對三個數據都取log函數

    plt.plot(date, np.log(read_num), label='read_num')
    plt.plot(date, np.log(like_num), label='like_num', color='red')
    plt.scatter(date, np.log(comments_num), label='comments_num', color='orange')


    plt.xlabel('date')
    plt.xticks(rotation=30)
    plt.ylabel('number')
    plt.legend()
    plt.show()

在這裏插入圖片描述

小結一

經過上面幾張圖,有以下發現:

  1. 某篇文章的閱讀數極其高,遠超超出其他文章。後續可單獨對其分析,或把其除去再分析
  2. 點贊和評論數據並不是正相關,且與閱讀數也非絕對正相關。
  3. 大部分文章的點贊數和評論數都處於較低水平,後續可把點贊/評論高的拿出來進行二次分析
  4. 大部分文章是沒有評論的

注:

  1. 公衆號分是否有留言功能,該公衆號是具備留言功能的
  2. 這裏要處理,獲取時間爲2020年3月,數據中最近的文章是1月份的。所以在分析的時候降低了最近文章指標低的影響因素
  3. 這裏沒有區分一天發多篇文章的情況,所以在下面要進一步進行處理.

整合分析

這裏對同一天/同一個月的文章進行彙總分析。當然也可以自定義改成按季度或者年份來分析

    tmp_df = df[['date', 'read_num', 'like_num', 'comments_num']]
    tmp_df = tmp_df.set_index(['date'])
    rule = 'M' # D, 'M', 'Q', 'QS'...
    tmp_df = tmp_df.resample(rule).sum() # 按天/月彙總
    date = tmp_df.index
    plt.plot(date, np.log(tmp_df['read_num']), label='read_num')
    plt.plot(date, np.log(tmp_df['like_num']), label='like_num', color='red')
    plt.scatter(date, np.log(tmp_df['comments_num']), label='comments_num', color='orange')

    plt.xlabel('date')
    plt.xticks(rotation=30)
    plt.ylabel('number')
    plt.legend()
    plt.show()

按天分析
在這裏插入圖片描述
按月分析
在這裏插入圖片描述

頭條影響

公衆號在未認證的情況下,一天只能發表一次文章(但不一定只有一篇)。這裏對同一天文章放置在頭條的影響進行分析

    toutiao_df = df['toutiao']
    print(toutiao_df.value_counts())
    """
    [Out]:
    2    317
    1    312
    Name: toutiao, dtype: int64
    """

這裏分析可以得出,該公衆號在這段時間內大部分時間是同時發佈兩篇文章。所以可以很方便的進行對比分析。這裏可以直接將上面的代碼二次利用,繪圖。

    tmp_df1 = df[df['toutiao'] == 1][['date', 'read_num', 'like_num', 'comments_num']]
    tmp_df2 = df[df['toutiao'] == 2][['date', 'read_num', 'like_num', 'comments_num']]
    tmp_df1 = tmp_df1.set_index(['date'])
    tmp_df2 = tmp_df2.set_index(['date'])

    rule = 'M' # D, 'M', 'Q', 'QS'...
    tmp_df1 = tmp_df1.resample(rule).sum() # 按天/月彙總
    tmp_df2 = tmp_df2.resample(rule).sum() # 按天/月彙總
    date1 = tmp_df1.index
    date2 = tmp_df2.index

    plt.plot(date1, tmp_df1['read_num'], label='is_head')
    plt.plot(date2, tmp_df2['read_num'], label='no_head')

    plt.plot(date1, tmp_df1['like_num'], label='is_head')
    plt.plot(date2, tmp_df2['like_num'], label='no_head')

    plt.plot(date1, tmp_df1['comments_num'], label='is_head')
    plt.plot(date2, tmp_df2['comments_num'], label='no_head')

    plt.xlabel('date')
    plt.xticks(rotation=30)
    plt.ylabel('number')
    plt.legend()
    plt.show()

閱讀數
在這裏插入圖片描述
點贊數
在這裏插入圖片描述
評論數
在這裏插入圖片描述

小結二

經過上面幾張圖,有以下發現:

  1. 該公衆號文章在前期發表頻率並不高,總體指標也較爲穩定。能夠在一些時間段內產出較高反響的文章
  2. 頭條文章在各方面基本上會優於非頭條文章,且大部分數據情況好的文章都來自於頭條文章
  3. 大部分文章的點贊數和評論數都處於較低水平,後續可把點贊/評論高的拿出來進行二次分析

注:
4. 這裏發現在最新的時間段,文章指標較低,這個可能是由於近期文章的指標增長較慢,導致結果存在偏差。可根據需求刪除或過段時間二次分析。

以上就是第一次對微信文章數據的分析,下一篇會針對標題、評論等文字指標進行討論,挖掘數據指標高的文章類型及如何產出。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章