基于Python的搜索引擎檢索日志數(shù)據(jù)分析

3 評(píng)論 9714 瀏覽 39 收藏 14 分鐘

網(wǎng)絡(luò)數(shù)據(jù)是沙地,數(shù)據(jù)分析的作用就是在一堆冗雜無序的沙地中找出產(chǎn)品有用的“金子”。

01 前言

數(shù)據(jù)——可以簡(jiǎn)單理解為人們動(dòng)作行為的符號(hào)表示。信息技術(shù)的發(fā)展,使得計(jì)算機(jī)每時(shí)每刻記錄著人們的數(shù)據(jù),人們?cè)谟?jì)算機(jī)面前,早已經(jīng)是“透明人”。

萬(wàn)物皆在運(yùn)動(dòng),對(duì)于數(shù)據(jù)來說,也是一直在變化的。我們對(duì)數(shù)據(jù)進(jìn)行分析,就是希望可以從不斷變化的數(shù)據(jù)中發(fā)現(xiàn)規(guī)律、發(fā)現(xiàn)趨勢(shì),提煉有價(jià)值的內(nèi)容。

好的數(shù)據(jù)是一座未被發(fā)掘的金礦,而好的數(shù)據(jù)分析報(bào)告,可以幫助經(jīng)營(yíng)管理者明確戰(zhàn)略,不斷優(yōu)化和調(diào)整策略,也可以幫助產(chǎn)品經(jīng)理更好地掌握產(chǎn)品運(yùn)行情況,不斷有針對(duì)性的升級(jí)優(yōu)化產(chǎn)品,提升客戶體驗(yàn),增強(qiáng)用戶粘性,確保產(chǎn)品用戶和效益持續(xù)增長(zhǎng)。

02 分析目的

不同領(lǐng)域有不同領(lǐng)域的分析目的。例如基金公司的數(shù)據(jù)分析,更多的是來對(duì)所投資股票的價(jià)值分析。電商公司的數(shù)據(jù)分析,會(huì)很關(guān)注漏斗的轉(zhuǎn)化率。結(jié)合本文的實(shí)際案例分析,我們數(shù)據(jù)分析的目的,主要有以下幾點(diǎn):

  1. 驗(yàn)證我們的判斷。例如:我們根據(jù)經(jīng)驗(yàn),判斷一般晚上探索某個(gè)領(lǐng)域的知識(shí)會(huì)比較多,我們來驗(yàn)證自己的判斷是否正確。
  2. 用戶興趣發(fā)現(xiàn)以及商機(jī)發(fā)現(xiàn)。例如:某個(gè)關(guān)鍵詞檢索很頻繁,說明極有可能成為熱點(diǎn),提早進(jìn)行針對(duì)于熱點(diǎn)的準(zhǔn)備,從而獲得流量?jī)?yōu)勢(shì)。
  3. 防范風(fēng)險(xiǎn)。例如:某個(gè)關(guān)鍵詞在某個(gè)地區(qū)短時(shí)間內(nèi)頻率很高,那極有可能會(huì)存在區(qū)域風(fēng)險(xiǎn)。相關(guān)部門或企業(yè),提早進(jìn)行介入處置,化解風(fēng)險(xiǎn),從而盡可能減少損失。

03 數(shù)據(jù)準(zhǔn)備

既然是實(shí)踐,就需要對(duì)真實(shí)的數(shù)據(jù)進(jìn)行分析。

本文數(shù)據(jù)來自于搜狗實(shí)驗(yàn)室《搜索引擎用戶查詢?nèi)罩?SogouQ)》(數(shù)據(jù)地址:http://www.sogou.com/labs/resource/q.php)。使用的搜狗實(shí)驗(yàn)室所提供的精簡(jiǎn)版數(shù)據(jù),此數(shù)據(jù)包包含一天的檢索數(shù)據(jù),數(shù)據(jù)壓縮包小為63MB,解壓后數(shù)據(jù)包大小為144MB。

數(shù)據(jù)格式為:訪問時(shí)間\t用戶ID\t[查詢?cè)~]\t該URL在返回結(jié)果中的排名\t用戶點(diǎn)擊的順序號(hào)\t用戶點(diǎn)擊的URL。

其中,用戶ID是根據(jù)用戶使用瀏覽器訪問搜索引擎時(shí)的Cookie信息自動(dòng)賦值,即同一次使用瀏覽器輸入的不同查詢對(duì)應(yīng)同一個(gè)用戶ID。

數(shù)據(jù)樣例如下:

00:00:00 2982199073774412 [360安全衛(wèi)士] 8 3 download.it.com.cn/softweb/software/firewall/antivirus/20067/17938.html

在此主要是給大家形象地展示一下數(shù)據(jù)格式,更為詳細(xì)的數(shù)據(jù)大家可以去搜狗實(shí)驗(yàn)室官網(wǎng)獲得。

04 分析過程

1. 不同時(shí)段的檢索情況

我們以小時(shí)為單位,共分24小時(shí),來查看全天時(shí)段的用戶檢索情況。首先在Python程序中導(dǎo)入CSV文件,這個(gè)太基礎(chǔ)了,就不在此多講了。

由于源數(shù)據(jù)時(shí)間格式是“時(shí):分:秒”格式,而我們是準(zhǔn)備以每一小時(shí)為時(shí)段進(jìn)行分析。為了便于操作,我們將源數(shù)據(jù)“時(shí):分:秒”處理為僅保留小時(shí)。之后我們將數(shù)據(jù)格式化成DataFrame數(shù)據(jù)格式。使用groupby函數(shù),對(duì)時(shí)間進(jìn)行操作。使用size()對(duì)分組數(shù)據(jù)進(jìn)行歸集顯示。

由于本文主要講解思路,在此僅展示部分源代碼。如果需要操作指點(diǎn),可以關(guān)注我的微信公眾號(hào):佳佳原創(chuàng)。在公眾號(hào)中留言,我看到后,第一時(shí)間會(huì)回復(fù)大家。部分源代碼如下:

上圖中的print( )函數(shù)主要用來看生成的數(shù)據(jù)。注釋掉也可以。根據(jù)操作,生成相應(yīng)數(shù)據(jù),并根據(jù)數(shù)據(jù)生成分析折線圖如下圖所示:

如果對(duì)于生成折線圖有時(shí)需要不斷微調(diào),而每次生成數(shù)據(jù)運(yùn)算時(shí)間較長(zhǎng),其實(shí)可以將生成的數(shù)據(jù)先保存起來,之后調(diào)整折線圖元素的時(shí)候,直接使用結(jié)果數(shù)據(jù)就可以,不需要再重新計(jì)算數(shù)據(jù),這樣可以節(jié)約很多時(shí)間。

經(jīng)過我們將數(shù)據(jù)圖示化后,原本密密麻麻的數(shù)據(jù)顯得更為清晰,我們可以方便直觀地看出,用戶在凌晨4點(diǎn)左右檢索頻次是最少的,而在下午16點(diǎn)左右檢索頻次最多,也側(cè)面反應(yīng)出了網(wǎng)民的上網(wǎng)習(xí)慣。

如果我們是廣告商家,我們可以針對(duì)這種情況,對(duì)不同時(shí)段的廣告進(jìn)行有針對(duì)性的定價(jià)。而我們?nèi)绻切枰M(jìn)行廣告投放,也知道哪個(gè)時(shí)段投放,廣告的曝光率相對(duì)最高。

2. 不同用戶的檢索情況

接下來,我們?cè)俜治鲆幌虏煌脩舻臋z索情況,看一看哪些用戶檢索量比較大。

這個(gè)分析需要用到Python DataFrame中的count()操作,即:groupby(用戶ID).count()。之后我們將新生成的數(shù)據(jù)再構(gòu)建一個(gè)DataFrame,取排名前50的用戶數(shù)據(jù),做降序操作。部分源代碼如下圖所示:

上圖中Console中顯示的數(shù)據(jù)就是當(dāng)天檢索量排名前50的用戶。有興趣的同學(xué),可以到搜狗實(shí)驗(yàn)室官網(wǎng)上下載一下這個(gè)數(shù)據(jù),查看一下檢索量431的那位客戶當(dāng)天究竟檢索了什么內(nèi)容。一定是一位重度依賴網(wǎng)絡(luò)的朋友。

具體訪問了什么,我們稍后再看。經(jīng)過數(shù)據(jù)分析,我們決定取排名前20的用戶,用柱狀圖顯示出他們的檢索情況。選取20名用戶主要原因是,一是為了圖示美觀,另一個(gè)是為了縮小數(shù)據(jù)范圍,集中于幾個(gè)用戶進(jìn)行分析,節(jié)約分析成本。排名前20的用戶檢索情況如下圖所示:

由于數(shù)據(jù)比較多,時(shí)間關(guān)系,我們接下來選取其中一個(gè)用戶分析一下其檢索數(shù)據(jù)。接下來進(jìn)入下一環(huán)節(jié)。

3. 用戶檢索數(shù)據(jù)析

我們選取檢索量最大的一個(gè)用戶“11579135515147154”,分析一下他一天的檢索情況。我們先看一下這個(gè)用戶不同時(shí)段的檢索量。

08 2

09 64

20 57

21 218

22 90

左側(cè)是時(shí)間數(shù)據(jù),右側(cè)是檢索量。

看來這個(gè)用戶晚上21點(diǎn)的時(shí)候,檢索的比較頻繁。

我們?cè)俜治鲆幌逻@個(gè)用戶都檢索了哪些內(nèi)容。同時(shí)將此用戶的檢索詞的檢索量進(jìn)行了倒序排列。如下所示:

由于數(shù)據(jù)據(jù)有限,我們也不知道這個(gè)用戶的年齡、職業(yè)、性別。但感覺檢索的內(nèi)容倒是挺令人驚訝的。也客觀的說明,每一個(gè)看似正常的人,都有不為人知的一面。

大家如果想深入分析,可以在搜狗實(shí)驗(yàn)室下載這個(gè)數(shù)據(jù),結(jié)合本文提供的分析量排名前20的用戶ID,直接在數(shù)據(jù)中檢索一下這20名用戶的搜索情況。

4. 不同關(guān)鍵詞的檢索情況

接下來我們以全天的視角,分析一下當(dāng)天不同關(guān)鍵詞的檢索情況。基本分析思路是提取出當(dāng)天所有關(guān)鍵詞的數(shù)量,然后通過詞頻云圖進(jìn)行直觀展示。

根據(jù)數(shù)據(jù),我們生成詞頻信息,同樣,為了便于觀測(cè),我們按詞頻數(shù)進(jìn)行倒序排列。由于數(shù)據(jù)比較多,我們僅作部分展示。如下圖所示:

為了詞頻云圖的展示,我們需要引入“import collections”和“import wordcloud”這兩個(gè)庫(kù)。具體用法可以查閱相關(guān)資料,就不在此過多講述了。

如果大家在使用過程中,有任何疑問,也可以隨時(shí)咨詢我。我看到了,會(huì)第一時(shí)間回復(fù)大家。由于大部分檢索詞還是挺“奇怪”的,所以就大家不要看的那么清晰了,知道大體分析思路就可以。根據(jù)詞頻,生成詞頻云圖,如下圖所示:

05 分析總結(jié)

有時(shí)候?qū)Ψ教峁┑臄?shù)據(jù)或多或少導(dǎo)入的時(shí)候,會(huì)有一些問題,例如:和我們的處理格式有些差異,編碼問題。這就需要我們?cè)跀?shù)據(jù)分析前,先要整理數(shù)據(jù),把數(shù)據(jù)導(dǎo)入時(shí)的異常處理掉,同時(shí)把可能存在的一些影響分析的垃圾數(shù)據(jù)解決掉。

俗話說”Rubbish in, rubbish out”。所以在數(shù)據(jù)分析前,確保數(shù)據(jù)的真實(shí)、可靠、有效,是非常有必要而且非常重要的一個(gè)步驟。

對(duì)于數(shù)據(jù)分析而言,不同領(lǐng)域、不同場(chǎng)景、不同目標(biāo),數(shù)據(jù)分析的方式方法有所不同,這就需要我們對(duì)癥下藥?;ヂ?lián)網(wǎng)企業(yè)、電商網(wǎng)站,更多的是分析用戶留存,轉(zhuǎn)化率,訪問軌跡。而金融行業(yè)的企業(yè),像基金公司,更多的是做時(shí)序分析,趨勢(shì)分析。本文的分析,更多的是通過數(shù)據(jù)提取,可視化,發(fā)現(xiàn)一些潛在的情況。

而通過我們本次對(duì)用戶檢索數(shù)據(jù)的分析,給人最直觀的一種感覺就是網(wǎng)絡(luò)平臺(tái)就像是一個(gè)濃縮的社會(huì),雖然大家在網(wǎng)上檢索,誰(shuí)也不認(rèn)識(shí)誰(shuí),但在某種程度上卻有一些聯(lián)系。而在這個(gè)平臺(tái)上,有好人,也有壞人,側(cè)面也在反應(yīng)的人們?cè)谌粘I钪械那ё税賾B(tài)。也正是因?yàn)榫W(wǎng)絡(luò)檢索的匿名性,反而個(gè)人行為沒有偽裝,也體現(xiàn)了更為真實(shí)的個(gè)人。從這個(gè)角度上講,網(wǎng)絡(luò)數(shù)據(jù)分析結(jié)果的效果,往往比線下數(shù)據(jù)分析要好。

雖然現(xiàn)在注重隱私保護(hù),但如果出于公共安全的目的,其實(shí)可以進(jìn)行相關(guān)數(shù)據(jù)的分析與預(yù)警,提早發(fā)現(xiàn)可能發(fā)生的違法犯罪情況。例如:如果一個(gè)人頻繁的檢索如何綁架等惡性詞匯,從一定程度上也客觀反應(yīng)了其心理狀態(tài),再結(jié)合其行動(dòng)軌跡、購(gòu)物記錄,結(jié)合評(píng)分卡,綜合判斷此人發(fā)生違法犯罪的概率,提早進(jìn)行預(yù)防,減少對(duì)公共安全損害的發(fā)生風(fēng)險(xiǎn)。

科技是一把雙刃劍,要想真正發(fā)揮科技的價(jià)值,需要我們更為合理科學(xué)的掌握和使用科技,從而使科技真正為人們服務(wù)。企業(yè)或是個(gè)人價(jià)值觀的好與壞,也就決定了對(duì)數(shù)據(jù)分析結(jié)果價(jià)值的好與壞。不論怎樣,如果每個(gè)企業(yè)、每個(gè)人都能將“不作惡”作為其行為準(zhǔn)則的底線,這個(gè)世界便會(huì)美好許多。

原創(chuàng)不易,如果大家覺得本文對(duì)您有幫助,請(qǐng)多多轉(zhuǎn)發(fā),或者點(diǎn)擊作者進(jìn)行打賞。感謝大家閱讀~

 

作者:王佳亮,中國(guó)計(jì)算機(jī)學(xué)會(huì)(CCF)會(huì)員。微信公眾號(hào):佳佳原創(chuàng)

本文由 @佳佳原創(chuàng) 原創(chuàng)發(fā)布于人人都是產(chǎn)品經(jīng)理,未經(jīng)許可,禁止轉(zhuǎn)載

題圖來自Unspalsh, 基于CC0協(xié)議

更多精彩內(nèi)容,請(qǐng)關(guān)注人人都是產(chǎn)品經(jīng)理微信公眾號(hào)或下載App
評(píng)論
評(píng)論請(qǐng)登錄
  1. 你做的是什么類型的PM呢,數(shù)據(jù)PM嗎?我想問下,數(shù)據(jù)PM日常工作要打代碼嗎?我一個(gè)非程序員經(jīng)驗(yàn),想通過自學(xué)python轉(zhuǎn)數(shù)據(jù)pm的非計(jì)算機(jī)專業(yè)的理科生,這種路徑可行嗎~

    來自廣東 回復(fù)
    1. 路徑可行~學(xué)些代碼會(huì)強(qiáng)化邏輯思維,可以為你的工作錦上添花~

      來自上海 回復(fù)
  2. 我的評(píng)論沒展示出來嗎~

    來自廣東 回復(fù)