截至2020年第二季度,微信擁有超過27億活躍用戶。這意味著,如果你正在閱讀大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù),那么你很可能是微信用戶。但是,你到底有多少微信用戶?你實際發(fā)布了多少?我們可以使用Python找出答案!
具體來說,我們將使用Python創(chuàng)建此圖表,該圖表顯示了我們每月隨時間發(fā)布的頻率:
出于大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù)的目的,我們假設你熟悉Python和Jupyter Notebook的基礎知識-如果不熟悉,請首先閱讀大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù)以分析你的Amazon支出。
步驟1:下載你的微信數(shù)據(jù)
微信實際上允許我們下載我們在該網(wǎng)站上所做的幾乎所有事情。你可以在此處下載數(shù)據(jù),但你可能不想下載所有數(shù)據(jù)-該文件可能很大,具體取決于你使用微信的頻率以及使用該文件的時間。
對于大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù),我們將專門研究我們自己的個人微信帖子,并嘗試回答以下問題:
1)我多久發(fā)布一次?
2)我使用微信的次數(shù)比以前多還是少?
要僅獲取與帖子有關的數(shù)據(jù),請轉到數(shù)據(jù)下載頁面。將請求的文件格式從HTML更改為JSON,然后從以下選項中取消選擇所有內(nèi)容,僅選中帖子,然后點擊創(chuàng)建文件。
創(chuàng)建文件并準備下載文件時,微信會通知你-這可能需要一段時間,具體取決于你的微信歷史記錄和選項。
下載zip文件,解壓縮,然后查找posts文件夾和名為的文件your_posts_1.json。這就是我們將在大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù)中使用的文件。
步驟2:導入和格式化數(shù)據(jù)
接下來,我們必須將這些數(shù)據(jù)放入pandas數(shù)據(jù)框中,因此啟動Jupyter Notebooks(如果需要復習,這里是Jupyter Notebooks的初學者指南)。我們將從導入數(shù)據(jù)并將其讀取到DataFrame開始。
內(nèi)置pd.read_json()函數(shù)將能夠自動解釋DataFrame中的JSON數(shù)據(jù)。(你會看到,它并不完美,但是在這里可以滿足我們的目的)。
如我們所見,這并不完美。我們的某些列在每一行中都有嵌套的子列,這些子列仍為JSON格式。如果我們想使用這些數(shù)據(jù),則需要處理。
但是要在這里回答我們的問題- 我們在微信上發(fā)布的內(nèi)容比以前更多還是更少?-我們確實不需要處理實際的帖子內(nèi)容或其他信息,例如附加的媒體文件。我們只關心頻率 -新帖的發(fā)布頻率。
接下來,我們將確保timestamp列的格式正確,然后使用將其轉換為datetime對象to_datetime()。'date'為了清楚起見,我們還將重命名它并刪除一些不必要的列-嚴格來說這不是必須的步驟,但這有助于我們更輕松地進行查看。
現(xiàn)在,我們有了一些更清潔的東西可以使用!如果我們要檢查正在分析的帖子df.shape數(shù),可以用來計算行數(shù)。
df.tail()檢查數(shù)據(jù)框的結尾也可能是一個好主意,以確保它確實涵蓋了我們整個微信的使用情況:
以我的個人微信數(shù)據(jù)為例,我總共發(fā)布了4,000多次。我的數(shù)據(jù)可以追溯到2005年初,當時我顯然發(fā)布了一些有關“ 美國夏季熱天氣”的信息。我在2005年上大學,所以時間安排得很。
你可能會注意到有些行顯示為NaN-這些帖子僅包含圖片,不包含文字。圖片將在該'attachments'列中鏈接,但是我們已將其刪除,因此在此處不可見。
第3步:計算月度帖子計數(shù)
現(xiàn)在我們有了數(shù)據(jù),我們需要將其轉換成一種可以告訴我們有關發(fā)布頻率的格式。鑒于我們在這里已有多年的歷史,所以逐月查看它是最有意義的。這意味著我們需要'date'按月對列進行分組,并計算每個月與多少行(即帖子)相關聯(lián)。
幸運的是,pandas的設計使使用時間序列數(shù)據(jù)變得相對簡單。我們需要在這里做兩件事:
1)將date列設置為我們的DataFrame的索引。
2)按月重新采樣數(shù)據(jù),計算每個月有多少帖子。
第一步,我們可以使用set_index()。第二步比較復雜,所以讓我們將其分為四個單獨的步驟,以分解我們需要編寫的代碼:
1)選擇我們要重采樣的列-在這種情況下,就是該data列。
2)將.resample()函數(shù)與參數(shù)一起使用'MS'(“月開始”),可以按月對數(shù)據(jù)進行重新采樣。
3)使用.size()指定我們想要每個月來衡量-在這種情況下,行(即職位)具有落入該月內(nèi)的一個發(fā)布日期的數(shù)量。
4)將結果系列分配給名為的變量post_counts。
這是實際的情況:
看起來很棒!我們按月細分了發(fā)帖計數(shù),如果我們檢查原始數(shù)據(jù)集,我們可以很快看到計數(shù)是正確的。
請注意,沒有帖子的月份被正確地計為0而不是被略過。這就是為什么使用resample(),旨在與時間序列配合使用的原因,比起使用類似的東西更好的原因,使用,groupby()如果我們不小心,很容易跳過沒有數(shù)據(jù)的月份。
步驟4:可視化你的微信使用情況
無論如何,既然我們已經(jīng)完成了棘手的部分,剩下的就是樂趣:可視化!為此,我們將導入matplotlib(并使用%matplotlib inline魔術使圖表顯示在Jupyter Notebook中。還將導入Seaborn和NumPy,這將有助于我們制作更具可讀性的圖表。
導入完成后,將用于sns.set()設置圖表的大小和字體大小。由于我們在此處處理大量數(shù)據(jù),因此我們將使圖表很大,并確保字體大小足夠大以便可讀。
然后,我們將設置x標簽以使用post_counts(日期)的索引,并用于sns.barplot()創(chuàng)建條形圖。在的參數(shù)中sns.barplot(),我們將告訴函數(shù)使用定義的x標簽,在中繪制數(shù)據(jù)post_counts,并使條形變?yōu)樗{色。
僅此一項就足以創(chuàng)建基本圖表,但是在這種情況下,我們將要采取一些其他步驟來使圖表更具可讀性。具體來說,我們希望將x軸上的刻度位置安排為每24個月一次,以便在結果圖表中每隔一年查看一次刻度。我們還希望重新格式化圖表中的日期,以便僅顯示年份。
(由于這不是關于數(shù)據(jù)可視化的教程,因此,在大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù)中,我們不會對其進行深入研究。但是,如果你想了解更多有關如何使用Python進行出色的數(shù)據(jù)可視化的信息,我們你可以免費嘗試探索性數(shù)據(jù)可視化和通過數(shù)據(jù)可視化講故事的課程)。
我們?nèi)匀豢梢酝ㄟ^某些方法使此圖表更加美觀,但是出于我們的目的,這足以理解數(shù)據(jù)并分析我們的微信發(fā)布歷史記錄。
就我而言-上面的圖表是我的個人微信數(shù)據(jù)-我們可以看到我很少在初期發(fā)布在微信上。我有大量的帖子-每月數(shù)百個!-在2007年夏季和2009年春季,這與旅行相吻合。
我的常規(guī)使用量在2011年左右開始回升,并在2016年左右達到峰值。此后,它逐漸消失,從2019年開始我完全停止使用微信。在高峰期,我每個月發(fā)布近100次!
記住,那只是帖子,不是評論!還有其他用于評論的JSON文件,但是我很尷尬。如果你想進一步分析,那么深入研究注釋文件將是一個不錯的下一步!
讓我們在大數(shù)據(jù)如何使用Python分析微信數(shù)據(jù)上稱贊它,并回顧一下我們已完成的工作:
1)我們從微信下載了個人使用數(shù)據(jù)
2)我們將JSON文件讀入pandas DataFrame中
3)我們按月細分了數(shù)據(jù),并統(tǒng)計了每個月的帖子數(shù)
4)我們可視化了微信的用法并學到了一些東西:查理(Charlie)過去在微信上花費了太多時間。
如果你喜歡做這樣的項目,請查看AAA教育的交互式瀏覽器內(nèi)課程!與我們在此介紹的內(nèi)容相比,它們更具沉浸感和方式,更深入。實際上,我們提供了無縫的課程序列,可以使你從初學者到合格的數(shù)據(jù)分析師,數(shù)據(jù)科學家或數(shù)據(jù)工程師。
填寫下面表單即可預約申請免費試聽!怕錢不夠?可先就業(yè)掙錢后再付學費! 怕學不會?助教全程陪讀,隨時解惑!擔心就業(yè)?一地學習,可推薦就業(yè)!
?2007-2022/ m.lb577.com 北京漫動者數(shù)字科技有限公司 備案號: 京ICP備12034770號 監(jiān)督電話:010-53672995 郵箱:bjaaa@aaaedu.cc