秘密為同學們釋出最多的是哪些內容?與哪些相關?或者哪些同學喜歡去秘密下方評論?評論最多的微博多於什麼相關?秘密經常會在什麼時間釋出微博?釋出的微博都是情感正向的還是負向的?
當然這些問題後臺應該最清楚,也有直接的資料,不過這裡我想透過爬取的資料來看看這些問題,或許會得出不一樣的結論。
抓取網址 秘密
想要的資料包括:
未拿資料:
知道想要的資料後,接下來就開始尋找資料
一般介面資料都會存在 XHR,所以沿著這個方向基本能找到資料
基本的髒資料處理好之後,下面就可以開始分析啦~~~
(1)秘密微博詞雲圖首先,把爬取到的所有微博篩選出來
接下來,將資料匯入程式中,得到如下的詞雲圖
或者,修改一下蒙版
可以發現在最近這段時間,秘密釋出的微博內容中這幾個詞出現得最多,包括:考研、圖書館、寢室、學校等,臨近考研,同學們可能都比較關心學校啊、圖書館啊、座位位置啊這些,這裡也祝願咱們學校的考研人都能取得理想成績,但行好事,莫問前程。
除此之外,喜歡、女朋友、男朋友等詞語也常常出現在微博中,也許是冬天適合談戀愛吧,記得多買一杯古茗奶茶,把它捧在手心裡,暖暖的,很貼心!
資料視覺化呈現
from pyecharts.charts import *from pyecharts import options as opts from pyecharts.globals import ThemeType import osos.chdir(r'C:\Users\Administrator\Desktop')ID = ['海嘯****','尋找****道長','最好****18881','我可****假猴子ha','工商***精']values = [53,47,36,34,34]c = ( Pie(init_opts=opts.InitOpts(theme=ThemeType.CHALK)) .add("", zip(ID,values),radius=["40%", "70%"]) .set_global_opts( title_opts=opts.TitleOpts(title="秘密微博評論者TOP5",subtitle="賣山楂啦prss",pos_top="2%",pos_left = 'center'), toolbox_opts=opts.ToolboxOpts( # 是否顯示該工具 is_show=True, )) .set_series_opts(label_opts=opts.LabelOpts(formatter="{b}",font_size=18)) .render("資料視覺化.html") )
3 秘密微博情感分析這裡使用模型對每一條微博進行情感分析,分析其積極分值和消極分值
但有個問題是
秘密前段時間“改版了”,許多內容合併成一條釋出,這就會導致最終的模型訓練結果會有偏差,這裡我並沒有解決這個問題,所以結果可能具有不合理性。
進一步的判斷出每條微博的情感傾向。
資料視覺化
總的來說,最近秘密釋出的微博的情感傾向還是比較均衡的,差異並不大,正向情感略高於負向情感。
4 秘密微博釋出時間分析由於忘記拿釋出時間的資料,所以這裡從頭在爬取一次,這次只要釋出是時間
拿到的資料如下
這裡的時間資料是中國標準時間,需要進行轉換
import pandas as pdimport numpy as npdf = pd.read_excel('C:\\Users\\Administrator\\Desktop\\釋出時間.xlsx')def trans_format(time_string, from_format='%a %b %d %H:%M:%S +0800 %Y', to_format='%Y-%m-%d %H:%M:%S'): """ @note 時間格式轉化 :param time_string: :param from_format: :param to_format: :return: """ time_struct = time.strptime(time_string,from_format) times = time.strftime(to_format, time_struct) return timesif __name__ == "__main__": df["處理後的時間"] = df['時間'].apply(trans_format)
轉換後的資料如下:
利用python 將時分秒變成小數
因為時間就是至1之間的小數,0是一天的開始,1就是1天了,所以時間是至1之間的小數,也就是中午12點是0.5。
比如這裡
最終處理結果
接下來開始分箱
bins = pd.read_csv(r"處理後的資料.csv")binsdef cut_bins(x): if 0.083333<= x <0.250000: return '02:00:00--06:00:00' elif 0.250000 <=x <0.458333: return '06:00:00--11:00:00' elif 0.458333 <=x <0.541667: return '11:00:00--13:00:00' elif 0.541667 <=x <0.708333: return '13:00:00--17:00:00' elif 0.708333 <=x <0.791667: return '17:00:00--19:00:00' elif 0.791667 <=x <0.916667: return '19:00:00--22:00:00' else: return '22:00:00--02:00:00'bins['所在時間段'] = bins['將時分秒改成常規'].map(cut_bins)bins
統計
bins['所在時間段'].value_counts()1
資料視覺化
可以看到,秘密經常會在 22:00:00 – 02:00:00 這個時間段釋出微博,其次是下午13:00:00–17:00:00
至此,所有分析結束。