Python數據分析實戰案例:統計分析微信朋友圈數據(附實操視頻)

2022-01-08 IT有得聊

"IT有得聊」是機械工業出版社旗下IT專業資訊和服務平臺,致力於幫助讀者在廣義的IT領域裡,掌握更專業、實用的知識與技能,快速提升職場競爭力。 點擊藍色微信名可快速關注我們!

本文內容將通過一個具體實例講解將朋友圈數據導出為JSON文件的方法,並介紹使用Python統計分析JSON數據的過程。

註:本文中涉及的實例文件為《Python數據分析從入門到精通》隨書資源文件

使用開源工具WeChatMomentExport導出微信朋友圈數據,WeChatMomentExport的源碼地址和使用教程請參考https://github.com/Chion82/WeChatMomentExport

如圖1所示。

圖1.使用WeChatMomentExport導出數據

使用WeChatMomentExport可導出如下所示的分類信息,每一個分類信息都保存到對應的JSON文件中。

使用WeChatMomentExport導出數據後,接著使用Python統計分析朋友圈的各類信息。實例文件wechat_moment_stat.py的功能是分別統計處理7個JSON文件中的數據,然後輸出顯示統計結果。文件wechat_moment_stat.py的具體實現流程如下所示。

通過函數get_user()獲取每個朋友圈用戶的詳細信息,具體實現代碼如下所示。

def get_user(user_name):

    foruser_info in result:

        ifuser_info['user'] == user_name:

            returnuser_info

    user_info= {

        'user': user_name,

        'moments': [],

        'post_comments': [],

        'replied_comments': [],

        'received_comments': [],

        'post_likes': 0,

        'received_likes': 0,

        'spam_counts': 0,

    }

    result.append(user_info)

    returnuser_info

編寫函數is_spam()提取朋友圈留言中的信息,具體實現代碼如下所示。

def is_spam(moment_text):

    if ('投' in moment_text and '謝' in moment_text):

        returnTrue

    if ('投票' in moment_text):

        returnTrue

    if ('問卷' in moment_text):

        returnTrue

    if ('填' in moment_text and '謝' in moment_text):

        returnTrue

    returnFalse

編寫函數handle_moment()處理留言信息,具體實現代碼如下所示。

defhandle_moment(moment):

    user_info= get_user(moment['author'])

    user_info['moments'].append(moment)

    user_info['received_likes']= user_info['received_likes'] + len(moment
['likes'])

    user_info['received_comments'].extend(moment['comments'])

    if(is_spam(moment['content'])):

        user_info['spam_counts']= user_info['spam_counts'] + 1

    forcomment_info in moment['comments']:

        comment_user= get_user(comment_info['author'])

        comment_user['post_comments'].append(comment_info)

        if(comment_info['to_user'] != ''):

            replied_user= get_user(comment_info['to_user'])

            replied_user['replied_comments'].append(comment_info)

    forlike_info in moment['likes']:

        like_user= get_user(like_info)

        like_user['post_likes']= like_user['post_likes'] + 1

排序處理7類信息,具體實現代碼如下所示。

for moment_info in origin_data:

    handle_moment(moment_info)

 

f = open('user_output.json', 'w')

f.write(json.dumps(result))

f.close()

 

post_moment_rank = sorted(result, key=lambdauser_info: len(user_info
['moments']), reverse=True)

post_like_rank = sorted(result, key=lambda user_info:user_info['post_
likes'], reverse= True)

received_like_rank = sorted(result, key=lambdauser_info: user_info
['received_likes'], reverse=True)

post_comment_rank = sorted(result, key=lambdauser_info: len(user_info
['post_comments']), reverse=True)

received_comment_rank = sorted(result, key=lambdauser_info: len(user_info
['received_ comments']), reverse=True)

no_reply_rank = sorted(result, key=lambdauser_info: ((float(len(user_
info['replied_comments']))/len(user_info['post_comments'])) if len(user_info
['post_comments'])>0 else 999))

spam_rank = sorted(result, key=lambda user_info:user_info['spam_counts'],
reverse=True)

 

f = open('post_moment_rank.json', 'w')

f.write(json.dumps(post_moment_rank))

f.close()

列印輸出發送朋友圈信息最多的前5位數據,具體實現代碼如下所示。

print('前5位點讚數量最多:')

temp_list = []

for i in range(5):

    temp_list.append(post_like_rank[i]['user']+ '(%d 贊)' % post_like_
rank[i]['post_likes'])

print(', '.join(temp_list))

 

f = open('received_like_rank.json', 'w')

f.write(json.dumps(received_like_rank))

f.close()

列印輸出前5位獲得最多贊的用戶信息,具體實現代碼如下所示。

print('前5位獲得最多贊:')

temp_list = []

for i in range(5):

    temp_list.append(received_like_rank[i]['user']+ '(%d 贊)' % received_
like_rank[i] ['received_likes'])

print(', '.join(temp_list))

 

f = open('post_comment_rank.json', 'w')

f.write(json.dumps(post_comment_rank))

f.close()

列印輸出前5位評論數量最多的用戶信息,具體實現代碼如下所示。

print('前5位評論數量最多:')

temp_list = []

for i in range(5):

    temp_list.append(post_comment_rank[i]['user']+ '(%d 評論)' % len(post_
comment_rank[i]['post_comments']))

print(', '.join(temp_list))

 

f = open('received_comment_rank.json', 'w')

f.write(json.dumps(received_comment_rank))

f.close()

列印輸出前5位朋友圈評論最多的用戶信息,具體實現代碼如下所示。

print('前5位朋友圈評論最多:')

temp_list = []

for i in range(5):

    temp_list.append(received_comment_rank[i]['user']+ '(%d 評論)' % len
(post_comment_rank[i]['received_comments']))

print(', '.join(temp_list))

 

f = open('no_reply_rank.json', 'w')

f.write(json.dumps(no_reply_rank))

f.close()

 

f = open('spam_rank.json', 'w')

f.write(json.dumps(spam_rank))

f.close()

列印輸出收到評論回複數/寫評論數前5名且發出評論數>=15用戶的信息,具體實現代碼如下所示。

print('================================')

 

 

print('前5名(收到評論回複數/寫評論數且 發出評論數>=15):')

temp_list = []

for user_info in no_reply_rank:

    iflen(user_info['post_comments']) < 15:

        continue

    if (len(temp_list) > 5):

        break

    temp_list.append(user_info['user']+ ('(收到評論回復%d, 寫評論%d)' % (len
(user_info['replied_comments']), len(user_info['post_comments']))))

print(', '.join(temp_list))

執行後列印輸出朋友圈的統計結果如下所示。

前5位發最多朋友圈:

Joe(69 條), xxx (62 條), 嬴子夜。(58 條), xxx(46 條), psh(40 條)

前5位點讚數量最多:

Saruman(33 贊), xxx(28贊),ChiaChia.Ý(27贊),❄️Max❄(27 贊), 郭含陽(23贊)

前5位獲得最多贊:

陳思君(38 贊), 404(32 贊), (29 贊), Justin Tan(27 贊), 楊宗煒 (26 贊)

前5位評論數量最多:

楊宗煒 (110 評論), 404(95 評論), Saruman(94 評論), MATTHEW °Д°(77 評論), Joe(57 評論)

前5位朋友圈評論最多:

楊宗煒 (209 評論), 404(130 評論), Joe(37 評論), MATTHEW °Д°(68 評論), ❄️Max❄(69 評論)

================================

收到評論回複數/寫評論數且 發出評論數>=15:

Joe(收到評論回復13, 寫評論57), jjy(收到評論回復4, 寫評論16), Saruman(收到評論回復30, 寫評論94), 璽璽璽(收到評論回復7, 寫評論21), ChiaChia.Ý(收到評論回復6, 寫評論15), 郭含陽(收到評論回復14, 寫評論33)

識別二維碼可觀看本案例演示視頻


毫無疑問,Python 是當下最火的程式語言之一。對於許多未曾涉足計算機編程領域的「小白」來說,深入地掌握 Python 看似是一件十分困難的事。其實,只要掌握科學的學習方法並制定合理的學習計劃再加上堅持不懈的努力,你就可以通過學習Python,走進編程的殿堂。

那麼,作為「小白」,在剛剛接觸Python數據分析的時候,需要注意什麼,需要從哪些知識學起呢?為了幫助大家更好地解決這些問題我們將面向廣大Python學習者開放一個全新的視頻直播課程——Python開發從入門到精通系列課程。

本課程分為三講:包含基礎知識、Web開發、數據分析三大板塊。

本周四(7月16日)

20:00—21:00

本系列課程的第二講

《小白如何學習Python數據分析》

將從就業前景、應用領域、數據存儲方式、數據可視化、實例演示等幾方面入手,幫助讀者快速找到Python數據分析學習方法。

從你開始學習編程的那一刻起,就註定了以後所要走的路:從編程學習者開始,依次經歷實習生、程式設計師、軟體工程師、架構師、CTO等職位的磨礪;當你站在職位頂峰的位置驀然回首,會發現自己的成功並不是偶然,在程式設計師的成長之路上會有不斷修改代碼、尋找並解決Bug、不停測試程序和修改項目的經歷;不可否認的是,只要你在自己的程序開發生涯中穩紮穩打,並且善於總結和學習,最終將會得到應用的收穫。

本節課程聚焦當下熱門程式語言Python,從就業前景、應用領域、數據存儲方式、數據可視化、實例演示幾方面入手,幫助讀者找到Python數據分析學習路徑。  

開放時間:2020年7月16日20:00

主講老師:管西京

課程類型:視頻直播

觀看平臺: 九州雲播平臺

                   京東直播平臺

                   機械工業出版社天貓旗艦店

                   機械工業出版社官方騰訊直播

                   機械工業出版社百度百家號直播間

管西京,山東大學計算機碩士,精通Python、Java、C#、C語言、C++等主流程式語言,擅長底層技術和應用程式的結合運用,具有豐富的Python數據分析、運維自動化和雲計算開發經驗。現就職於浪潮信息研發中心,負責浪潮雲的開發和維護工作。

相關著作:

★ 小白如何學習Python數據分析

1) Python數據分析相關人才的就業前景

2) Python數據分析技能應用領域

3) 數據存儲方式 

4) 數據可視化

5) 實例演示

方法一:關注「IT有得聊」公眾號,我們會於直播前放出各平臺直播間二維碼。

方法二(牆裂推薦):

微信掃描下方二維碼,添加小編微信,發送「Python給小編(注意,一定要發送「Python」),加入直播交流群。

入群有福利:

☆直播期間,入群讀者的提問,專家會在直播間內優先解答。

☆直播結束後,本次分享的課件會分享到群中。

☆可獲取更多優質課程分享

點擊圖片可進入直播回看連結文章

識別文章內二維碼可觀看回看

相關焦點

  • python數據統計分析
    常用函數庫  scipy包中的stats模塊和statsmodels包是python常用的數據分析工具,scipy.stats
  • Python訓練營 | 數據分析實戰Kaggle鐵達尼號生還者預測
    如果你已經在入門訓練營中殺出一條血路,初步學習了python數據科學工具包,那麼這一次用一場Kaggle數據實戰,來實現全面進階叭!!學院全力籌備,用心打造,現在為大家打響寒假系列課程第一槍——進階版之數據實戰Kaggle實戰是全方位提高自己數據科學能力的最好方式,本次訓練營將會請來帥帥的Yiyu老師帶領大家挑戰經典Titanic數據集。
  • Python實戰|8個常用的Python數據分析庫(附案例+源碼)
    8個Python中常用的數據分析工具,Python強大之處在於其第三方擴展庫較多。本文介紹數據分析方面的擴展庫分別為:NumPy、SciPy、Matplotlib、Pandas、StatsModels、Scikit-learn、Keras、Gensim,下面對這八個擴展庫進行簡單介紹,以及相關的代碼案例NumPy
  • TensorRT模型加速部署方案解析(視頻/案例講解)
    >3、C++和python能力4、一定程度的cuda能力,了解tensorRT課程內容:1、如何正確的導出onnx2、如何在c++中使用起來3、動態batch,和動態寬高的處理方式4、實現一個自定義插件5、c++中推理實現高性能低耦合的方法項目代碼,視頻講解,PPT
  • 【Python教程】pypal數據可視化
    pypal的數據可視化, 包括例子一: 利用餅圖分析繪製圖靈編程俱樂部學員各星座人數比例12星座的比例例子二:利用折線圖分析希文小朋友,每科考試成績趨勢例子三:利用簡單直方圖展示擲骰子1000次6個面的出現次數例子四:豆豆小朋友吃飯不知道吃什麼?
  • 【Python教程】pygal數據可視化
    重要說明我們盡力保證課程內容的質量以及學習難度的合理性,但即使如此,真正決定課程效果的,還是你的每一次思考和實踐。課程多數題目的解決方案都不是唯一的,這和我們在實際工作中的情況也是一致的。因此,我們的要求功能的實現,更是要多去思考不同的解決方案,評估不同方案的優劣,然後使用在該場景下最優雅的方式去實現。所以,我們列出的參考資料未必是實現需求所必須的。有的時候,實現題目的要求很簡單,甚至參考資料裡就有,但是背後的思考和親手去實踐卻是任務最關鍵的一部分。在學習這些資料時,要多思考,多提問,多質疑。
  • 渦度通量數據處理,CENTURY模型,Noah-MP陸面模式,MAXENT模型等 專家詳細解說
    9【GIS空間數據分析與地圖製作實踐技術課程(基礎-實踐)】10【GIS數據製備,空間分析與高級建模實戰】11【GIS、GPS、RS綜合案例應用技術精品課程】12【遙感影像信息提取實踐技術精品課程】13【無人機支持下的自然災害風險評估技術應用精品課程】14【R-GIS:地統計與空間製圖實踐技術應用】15【
  • Python數據分析之時間序列的處理
    收錄於話題 #20天學會Python數據分析 DataFrame處理的數據中經常會看到某一列的數據類型是時間類型或者是字符串但是需要轉成時間類型。
  • Python統計分析時代已經來臨
    不知道是不是因為大數據時代的到來。Python與R相比速度要快。Python可以直接處理上G的數據;R不行,R分析數據時需要先通過資料庫把大數據轉化為小數據(通過groupby)才能交給R做分析,因此R不可能直接分析行為詳單,只能分析統計結果。所以有人說:Python=R+SQL/Hive,並不是沒有道理的。
  • 基於yolo5工地安全帽和禁入危險區域識別系統,附數據集
    獲取:關注微信公眾號 datayx  然後回復  安全帽  即可獲取。關於增加數據集分類的方法:SHWD 數據集裡面沒有 person 的類別,先將現有的自己的數據集執行腳本生成 yolov5 需要的標籤文件 .txt,之後再用 yolov5x.pt 加上 yolov5x.yaml ,使用指令檢測出人體python detect.py --save-txt --source .
  • 快速提高Python數據分析速度的八個技巧
    今天整理了幾個在使用python進行數據分析的常用小技巧、命令。記得搭配Pandas+Jupyter Notebook使用哦。
  • 豬臉識別(附數據集)
    ,對每個視頻,每隔10幀取一幀圖像保存;使用YOLOv2進行摳圖,截取圖像中豬的主體及豬臉圖像 進行保存;最後製作成tfrecord格式的數據,這樣訓練數據集就完成了;訓練數據集:豬主體數據:8700張(1000 * 800左右大小),豬臉數據:4100(500 * 500左右大小),一共12800張圖像。
  • 怎麼自動登錄公司系統、導出數據? | Power Automate實戰案例
    | Power Automate實戰案例》裡講了從公開網站跳過瀏覽器檢測(防爬)的情況,接下來我們講一個很多朋友關心的登錄公司內部系統導出數據的例子。登錄系統網站後,我們繼續用PA模擬導出數據的過程。一般來說,系統會有默認的查詢條件(如最新3個月數據),並給出默認的查詢結果,這樣,我們直接點擊導出按鈕即可,對於查詢條件怎麼在PA裡設置的問題,因涉及的類型較多,如果大家感興趣,後面我再在不同的案例裡舉例說明。
  • Python從零開始系列連載(19)——Python特色數據類型(函數)(下)
    (8)——Python程序的基本控制流程(下)Python從零開始系列連載(9)——Python特色數據類型(列表)(上)Python從零開始系列連載(10)——Python特色數據類型(列表)(下)Python從零開始系列連載(11)——Python特色數據類型(元組)(上)
  • 使用Python+OpenCV實現圖像數據採集
    通常,數據科學家會建立一個圖像識別模型,觀察其準確性,如果足夠高,就表示工作完成了。
  • 【視頻教程】0基礎入門PostgreSQL從數據管理到網絡分析丨城市數據派
    我們將了解時空數據的輸入輸出,如何開展空間管理,如何構建拓撲網絡,從而實現最短路徑分析及服務區域分析(DrivingDistance)等高級主題的全過程。全套視頻課程總時長:約140分鐘特色1:課程內容循序漸進,內容由淺入深,從資料庫安裝出發,到SQL語言、網絡分析,到使用python語言操作資料庫
  • 聊一個基于波士頓矩陣的數據業務分析案例
    一提到案例分析就頭疼的小夥伴們,分享BCG的經典波士頓矩陣,再也不怕案例分析啦!
  • Python數據分析實戰(2)Python,Anaconda安裝
    2.不同系統安裝Python(1)Unix & Linux系統訪問http://www.python.org/download/如果你需要自定義一些選項,修改Modules/Setup(2)Window系統訪問http://www.python.org/download
  • 用 Python 的兩種方法進行方差分析
    而方差分析就是根據試驗的結果進行分析,鑑別各個有關因素對試驗結果影響的有效方法,本文主要講述如何用python中的兩種方法來進行方差分析。首先,還是先簡介一下方差分析。在這裡,筆者專門將數據量設置得比較小,這樣方便觀察數據的之間的差異,我們的重點是方差分析的方法,而這裡我們主要講的是單因素方差分析法。
  • python數據科學系列:pandas入門詳細教程
    pandas,python+data+analysis的組合縮寫,是python中基於numpy和matplotlib的第三方數據分析庫,與後兩者共同構成了python數據分析的基礎工具包,享有數分三劍客之名。