旗下產(chǎn)業(yè): A產(chǎn)業(yè)/?A實(shí)習(xí)/?A計(jì)劃
全國(guó)統(tǒng)一咨詢熱線:010-5367 2995
首頁(yè) > 熱門文章 > 大數(shù)據(jù)分析 > 大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù)

大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù)

時(shí)間:2020-08-31來(lái)源:5wd995.cn點(diǎn)擊量:作者:Sissi
時(shí)間:2020-08-31點(diǎn)擊量:作者:Sissi



  截至2020年第二季度,微信擁有超過(guò)27億活躍用戶。這意味著,如果你正在閱讀大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù),那么你很可能是微信用戶。但是,你到底有多少微信用戶?你實(shí)際發(fā)布了多少?我們可以使用Python找出答案!
 

大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù)
 

  具體來(lái)說(shuō),我們將使用Python創(chuàng)建此圖表,該圖表顯示了我們每月隨時(shí)間發(fā)布的頻率:
 

大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù)
 

  出于大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù)的目的,我們假設(shè)你熟悉Python和Jupyter Notebook的基礎(chǔ)知識(shí)-如果不熟悉,請(qǐng)首先閱讀大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù)以分析你的Amazon支出。
 

  步驟1:下載你的微信數(shù)據(jù)
 

  微信實(shí)際上允許我們下載我們?cè)谠摼W(wǎng)站上所做的幾乎所有事情。你可以在此處下載數(shù)據(jù),但你可能不想下載所有數(shù)據(jù)-該文件可能很大,具體取決于你使用微信的頻率以及使用該文件的時(shí)間。
 

  對(duì)于大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù),我們將專門研究我們自己的個(gè)人微信帖子,并嘗試回答以下問(wèn)題:
 

  1)我多久發(fā)布一次?

  2)我使用微信的次數(shù)比以前多還是少?
 

  要僅獲取與帖子有關(guān)的數(shù)據(jù),請(qǐng)轉(zhuǎn)到數(shù)據(jù)下載頁(yè)面。將請(qǐng)求的文件格式從HTML更改為JSON,然后從以下選項(xiàng)中取消選擇所有內(nèi)容,僅選中帖子,然后點(diǎn)擊創(chuàng)建文件。
 

大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù)

 

  創(chuàng)建文件并準(zhǔn)備下載文件時(shí),微信會(huì)通知你-這可能需要一段時(shí)間,具體取決于你的微信歷史記錄和選項(xiàng)。
 

  下載zip文件,解壓縮,然后查找posts文件夾和名為的文件your_posts_1.json。這就是我們將在大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù)中使用的文件。
 

  步驟2:導(dǎo)入和格式化數(shù)據(jù)
 

  接下來(lái),我們必須將這些數(shù)據(jù)放入pandas數(shù)據(jù)框中,因此啟動(dòng)Jupyter Notebooks(如果需要復(fù)習(xí),這里是Jupyter Notebooks的初學(xué)者指南)。我們將從導(dǎo)入數(shù)據(jù)并將其讀取到DataFrame開(kāi)始。
 

  內(nèi)置pd.read_json()函數(shù)將能夠自動(dòng)解釋DataFrame中的JSON數(shù)據(jù)。(你會(huì)看到,它并不完美,但是在這里可以滿足我們的目的)。

大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù)
 

  如我們所見(jiàn),這并不完美。我們的某些列在每一行中都有嵌套的子列,這些子列仍為JSON格式。如果我們想使用這些數(shù)據(jù),則需要處理。
 

  但是要在這里回答我們的問(wèn)題- 我們?cè)谖⑿派习l(fā)布的內(nèi)容比以前更多還是更少?-我們確實(shí)不需要處理實(shí)際的帖子內(nèi)容或其他信息,例如附加的媒體文件。我們只關(guān)心頻率 -新帖的發(fā)布頻率。
 

  接下來(lái),我們將確保timestamp列的格式正確,然后使用將其轉(zhuǎn)換為datetime對(duì)象to_datetime()。'date'為了清楚起見(jiàn),我們還將重命名它并刪除一些不必要的列-嚴(yán)格來(lái)說(shuō)這不是必須的步驟,但這有助于我們更輕松地進(jìn)行查看。

大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù)
 

  現(xiàn)在,我們有了一些更清潔的東西可以使用!如果我們要檢查正在分析的帖子df.shape數(shù),可以用來(lái)計(jì)算行數(shù)。
 

  df.tail()檢查數(shù)據(jù)框的結(jié)尾也可能是一個(gè)好主意,以確保它確實(shí)涵蓋了我們整個(gè)微信的使用情況:

大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù)
 

  以我的個(gè)人微信數(shù)據(jù)為例,我總共發(fā)布了4,000多次。我的數(shù)據(jù)可以追溯到2005年初,當(dāng)時(shí)我顯然發(fā)布了一些有關(guān)“ 美國(guó)夏季熱天氣”的信息。我在2005年上大學(xué),所以時(shí)間安排得很。
 

  你可能會(huì)注意到有些行顯示為NaN-這些帖子僅包含圖片,不包含文字。圖片將在該'attachments'列中鏈接,但是我們已將其刪除,因此在此處不可見(jiàn)。
 

  第3步:計(jì)算月度帖子計(jì)數(shù)
 

  現(xiàn)在我們有了數(shù)據(jù),我們需要將其轉(zhuǎn)換成一種可以告訴我們有關(guān)發(fā)布頻率的格式。鑒于我們?cè)谶@里已有多年的歷史,所以逐月查看它是最有意義的。這意味著我們需要'date'按月對(duì)列進(jìn)行分組,并計(jì)算每個(gè)月與多少行(即帖子)相關(guān)聯(lián)。
 

  幸運(yùn)的是,pandas的設(shè)計(jì)使使用時(shí)間序列數(shù)據(jù)變得相對(duì)簡(jiǎn)單。我們需要在這里做兩件事:
 

  1)將date列設(shè)置為我們的DataFrame的索引。

  2)按月重新采樣數(shù)據(jù),計(jì)算每個(gè)月有多少帖子。
 

  第一步,我們可以使用set_index()。第二步比較復(fù)雜,所以讓我們將其分為四個(gè)單獨(dú)的步驟,以分解我們需要編寫的代碼:
 

  1)選擇我們要重采樣的列-在這種情況下,就是該data列。

  2)將.resample()函數(shù)與參數(shù)一起使用'MS'(“月開(kāi)始”),可以按月對(duì)數(shù)據(jù)進(jìn)行重新采樣。

  3)使用.size()指定我們想要每個(gè)月來(lái)衡量-在這種情況下,行(即職位)具有落入該月內(nèi)的一個(gè)發(fā)布日期的數(shù)量。

  4)將結(jié)果系列分配給名為的變量post_counts。
 

  這是實(shí)際的情況:
 

大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù)
 

  看起來(lái)很棒!我們按月細(xì)分了發(fā)帖計(jì)數(shù),如果我們檢查原始數(shù)據(jù)集,我們可以很快看到計(jì)數(shù)是正確的。
 

  請(qǐng)注意,沒(méi)有帖子的月份被正確地計(jì)為0而不是被略過(guò)。這就是為什么使用resample(),旨在與時(shí)間序列配合使用的原因,比起使用類似的東西更好的原因,使用,groupby()如果我們不小心,很容易跳過(guò)沒(méi)有數(shù)據(jù)的月份。
 

  步驟4:可視化你的微信使用情況
 

  無(wú)論如何,既然我們已經(jīng)完成了棘手的部分,剩下的就是樂(lè)趣:可視化!為此,我們將導(dǎo)入matplotlib(并使用%matplotlib inline魔術(shù)使圖表顯示在Jupyter Notebook中。還將導(dǎo)入Seaborn和NumPy,這將有助于我們制作更具可讀性的圖表。
 

  導(dǎo)入完成后,將用于sns.set()設(shè)置圖表的大小和字體大小。由于我們?cè)诖颂幪幚泶罅繑?shù)據(jù),因此我們將使圖表很大,并確保字體大小足夠大以便可讀。
 

  然后,我們將設(shè)置x標(biāo)簽以使用post_counts(日期)的索引,并用于sns.barplot()創(chuàng)建條形圖。在的參數(shù)中sns.barplot(),我們將告訴函數(shù)使用定義的x標(biāo)簽,在中繪制數(shù)據(jù)post_counts,并使條形變?yōu)樗{(lán)色。
 

  僅此一項(xiàng)就足以創(chuàng)建基本圖表,但是在這種情況下,我們將要采取一些其他步驟來(lái)使圖表更具可讀性。具體來(lái)說(shuō),我們希望將x軸上的刻度位置安排為每24個(gè)月一次,以便在結(jié)果圖表中每隔一年查看一次刻度。我們還希望重新格式化圖表中的日期,以便僅顯示年份。
 

  (由于這不是關(guān)于數(shù)據(jù)可視化的教程,因此,在大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù)中,我們不會(huì)對(duì)其進(jìn)行深入研究。但是,如果你想了解更多有關(guān)如何使用Python進(jìn)行出色的數(shù)據(jù)可視化的信息,我們你可以免費(fèi)嘗試探索性數(shù)據(jù)可視化和通過(guò)數(shù)據(jù)可視化講故事的課程)。

大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù)
大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù)
 

  我們?nèi)匀豢梢酝ㄟ^(guò)某些方法使此圖表更加美觀,但是出于我們的目的,這足以理解數(shù)據(jù)并分析我們的微信發(fā)布?xì)v史記錄。
 

  就我而言-上面的圖表是我的個(gè)人微信數(shù)據(jù)-我們可以看到我很少在初期發(fā)布在微信上。我有大量的帖子-每月數(shù)百個(gè)!-在2007年夏季和2009年春季,這與旅行相吻合。
 

  我的常規(guī)使用量在2011年左右開(kāi)始回升,并在2016年左右達(dá)到峰值。此后,它逐漸消失,從2019年開(kāi)始我完全停止使用微信。在高峰期,我每個(gè)月發(fā)布近100次!
 

  記住,那只是帖子,不是評(píng)論!還有其他用于評(píng)論的JSON文件,但是我很尷尬。如果你想進(jìn)一步分析,那么深入研究注釋文件將是一個(gè)不錯(cuò)的下一步!
 

  讓我們?cè)?a href="http://5wd995.cn/data/2617.html" target="_blank">大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù)上稱贊它,并回顧一下我們已完成的工作:
 

  1)我們從微信下載了個(gè)人使用數(shù)據(jù)

  2)我們將JSON文件讀入pandas DataFrame中

  3)我們按月細(xì)分了數(shù)據(jù),并統(tǒng)計(jì)了每個(gè)月的帖子數(shù)

  4)我們可視化了微信的用法并學(xué)到了一些東西:查理(Charlie)過(guò)去在微信上花費(fèi)了太多時(shí)間。
 

  如果你喜歡做這樣的項(xiàng)目,請(qǐng)查看AAA教育的交互式瀏覽器內(nèi)課程!與我們?cè)诖私榻B的內(nèi)容相比,它們更具沉浸感和方式,更深入。實(shí)際上,我們提供了無(wú)縫的課程序列,可以使你從初學(xué)者到合格的數(shù)據(jù)分析師,數(shù)據(jù)科學(xué)家或數(shù)據(jù)工程師。



 

預(yù)約申請(qǐng)免費(fèi)試聽(tīng)課

填寫下面表單即可預(yù)約申請(qǐng)免費(fèi)試聽(tīng)!怕錢不夠?可先就業(yè)掙錢后再付學(xué)費(fèi)! 怕學(xué)不會(huì)?助教全程陪讀,隨時(shí)解惑!擔(dān)心就業(yè)?一地學(xué)習(xí),可推薦就業(yè)!

?2007-2021/北京漫動(dòng)者教育科技有限公司版權(quán)所有
備案號(hào):京ICP備12034770號(hào)

?2007-2022/ 5wd995.cn 北京漫動(dòng)者數(shù)字科技有限公司 備案號(hào): 京ICP備12034770號(hào) 監(jiān)督電話:010-53672995 郵箱:bjaaa@aaaedu.cc

京公網(wǎng)安備 11010802035704號(hào)

網(wǎng)站地圖