国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于Python的微信聊天記錄分析——數(shù)據(jù)處理與分析

這篇具有很好參考價值的文章主要介紹了基于Python的微信聊天記錄分析——數(shù)據(jù)處理與分析。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

本篇為《基于Python的微信聊天記錄分析》系列的第二篇,主要講解獲取到聊天記錄數(shù)據(jù)之后,在Python環(huán)境下對其進行數(shù)據(jù)處理、分析和可視化,涉及庫的安裝、相關(guān)操作的Python代碼等內(nèi)容。希望和大家多多交流,共同進步!

一. 數(shù)據(jù)處理

數(shù)據(jù)分析的基礎(chǔ)是“數(shù)據(jù)”,俗話說基礎(chǔ)不牢,地動山搖!對于聊天記錄分析這件事兒來說,數(shù)據(jù)處理是十分有必要的,我們需要將茫茫多的記錄中的無意義或意義不明數(shù)據(jù)過濾,這樣才有助于后續(xù)的數(shù)據(jù)分析,那么就來到了本篇內(nèi)容的第一部分——數(shù)據(jù)處理。

1. 相關(guān)庫的安裝

工欲善其事,必先利其器。完成這部分內(nèi)容需要安裝一些庫,比如pandas、jieba、matplotlib等等(這部分不一定非得用我上面列的,有很多種方法可以達成目的,有一定基礎(chǔ)的童鞋可以自由發(fā)揮),下面我對篇中數(shù)據(jù)處理用到的相關(guān)庫進行簡單介紹:

  • Pandas(用于數(shù)據(jù)分析):據(jù)說pandas的名字來自于“python data analysis”,可以直觀地看出它是專門用于python環(huán)境下的數(shù)據(jù)分析的擴展程序庫,它的基礎(chǔ)是numpy,在pandas中,有很多高性能、易于使用的數(shù)據(jù)結(jié)構(gòu)和分析函數(shù)。有了它,從文件中導入結(jié)構(gòu)化數(shù)據(jù)就不在話下了,它可以對各種數(shù)據(jù)進行運算,比如合并、選擇、加工等等。
  • jieba(用于中文分詞):jieba的主要功能是做中文分詞,可以進行簡單分詞、并行分詞、命令行分詞,當然它的功能不限于此,目前還支持關(guān)鍵詞提取、詞性標注、詞位置查詢等,目前來說,它是做中文分詞比較好的庫之一。
  • matplotlib(用于可視化):matplotlib是python環(huán)境下的2D繪圖庫,利用它可以將數(shù)據(jù)可視化,只需幾行代碼即可生成直方圖,條形圖,餅圖,散點圖等,在數(shù)據(jù)處理中較為常用。

相關(guān)庫在Anaconda Prompt中的安裝命令如下:

pip install pandas jieba matplotlib

?安裝完畢后,會顯示如下信息,successfully就意味著成功啦:

聊天記錄分析報告python,基于Python的微信聊天記錄分析,python,wechat,數(shù)據(jù)分析,數(shù)據(jù)挖掘,中文分詞

也可以安裝后import加載一下,不報錯的話就ok?~

# 導入依賴庫
import pandas as pd
import matplotlib.pyplot as plt
import jieba

?2. 數(shù)據(jù)清洗

數(shù)據(jù)清洗之前,可先通過pandas庫中讀取csv的相關(guān)函數(shù)加載聊天記錄文件,該函數(shù)加載后是DataFrame格式,十分便于后續(xù)操作,大家可以將以下代碼中的數(shù)據(jù)文件路徑修改成自己的路徑。

# 項目路徑
project_path = 'D:\\Projects\\chatmsg-analysis\\chatmsg.csv' # 需要換成自己的路徑
# pandas讀取csv文件
msg = pd.read_csv(project_path)

讀取聊天記錄中數(shù)據(jù)之后,?首先看一下格式(我這邊使用PyCharm撰寫和編輯代碼,大家可以自由選擇,Anaconda中自帶的spyder之類的都可以),數(shù)據(jù)字段如下表所示,其中標紅字段為重點使用字段,涉及是否發(fā)送者、文本內(nèi)容、時間等內(nèi)容:

字段名稱

含義

Localld

數(shù)據(jù)ID(計數(shù))

TalkerId

聊天對象ID

Type

數(shù)據(jù)類型(文本為1

SubType

子類型

IsSender

是否發(fā)送者(本人為1,對方為0

CreateTime

時間戳

Status

——

StrContent

文本內(nèi)容

StrTime

時間(年月日時分秒標準格式)

Remark

——

NickName

——

Sender

——

大概了解數(shù)據(jù)格式和數(shù)據(jù)內(nèi)容之后,下面我們要做數(shù)據(jù)清洗,由于我們是基于文本內(nèi)容分析的,需要將文本之外的數(shù)據(jù)濾除,以下代碼濾除了聊天內(nèi)容中的鏈接、撤回等信息,大家可以參考。?

def datacleansing(data):
    # 過濾分享的鏈接等數(shù)據(jù)
    data_processed = data[data['StrContent'].str.contains('http') == False]
    data_processed = data_processed[data_processed['StrContent'].str.contains('<msg>') == False]
    # 過濾撤回數(shù)據(jù)
    data_processed = data_processed[data_processed['StrContent'].str.contains('撤回了一條') == False]
    return data_processed

# 運行
msg_processed = datacleansing(msg)

?到此數(shù)據(jù)清洗就基本結(jié)束了,下面開始數(shù)據(jù)的統(tǒng)計分析~

二. 統(tǒng)計分析

本章主要涉及聊天數(shù)據(jù)的頻次、描述性等方面統(tǒng)計:

1. 按日期統(tǒng)計聊天頻次

首先是按日期統(tǒng)計兩人的聊天頻次,分別為總頻次、主方頻次和對方頻次,這樣可以對誰說的多、誰說的少一覽無余~下面上代碼:

# 首先劃定需要分析的聊天記錄時間范圍,我這邊選取了2023一整年的記錄作為分析樣本
msg_processed_time = msg_processed.loc[(msg_processed['StrTime'] >= '2023-01-01') & (msg_processed['StrTime'] <= '2024-01-01')]
# 下面利用IsSender字段將主對方分開
msg_total = msg_processed_time # 總
msg_i = msg_processed_time[msg_processed_time["IsSender"] == 1] # 我自己
msg_u = msg_processed_time[msg_processed_time["IsSender"] == 0] # 對方
# 加時間索引
msg_total['StrTime'] = pd.to_datetime(msg_total['StrTime'])
msg_total = msg_total.set_index('StrTime')
msg_i['StrTime'] = pd.to_datetime(msg_i['StrTime'])
msg_i = msg_i.set_index('StrTime')
msg_u['StrTime'] = pd.to_datetime(msg_u['StrTime'])
msg_u = msg_u.set_index('StrTime')
# 設(shè)計統(tǒng)計字段count
msg_total["count"] = 1
msg_i["count"] = 1
msg_u["count"] = 1
# 按天統(tǒng)計聊天頻次
result_total_day = msg_total.resample('D').sum()
result_i_day = msg_i.resample('D').sum()
result_u_day = msg_u.resample('D').sum()

到此,result中的count字段就是每天的聊天次數(shù)啦!?

2. 按每日不同時段統(tǒng)計聊天頻次

然后就是按每日不同時段來統(tǒng)計兩人的聊天頻次,我這里將一天分為0-23共24個時段,計算出一年內(nèi)各時段的累計聊天次數(shù),代碼如下:

# copy一份數(shù)據(jù)
msg_phase_total = msg_processed_time
# 由于我們要根據(jù)StrTime字段劃分時段,因此先將其轉(zhuǎn)為字符串,便于后續(xù)操作
msg_phase_total['StrTime'] = msg_phase_total['StrTime'].apply(lambda x: x.strftime('%Y-%m-%d %H:%M:%S'))
# 取每日時段(小時部分):將StrTime字段重構(gòu)成time_phase字段
time_phase = msg_phase_total.pop('StrTime')
time_phase = time_phase.str[11:13]
msg_phase_total.insert(1, 'time_phase', time_phase)
# 取主對方
msg_phase_i = msg_phase_total[msg_phase_total["IsSender"] == 1]
msg_phase_u = msg_phase_total[msg_phase_total["IsSender"] == 0]
# 算出各時段聊天次數(shù)
result_total_tp = msg_phase_total['time_phase'].value_counts()
result_i_tp = msg_phase_i['time_phase'].value_counts()
result_u_tp = msg_phase_u['time_phase'].value_counts()

根據(jù)上述操作,一年內(nèi)每日不同時段的聊天次數(shù)就統(tǒng)計在result中了。

3. 高頻詞匯統(tǒng)計

最后是高頻詞匯統(tǒng)計,這個環(huán)節(jié)就要用到一開始提到的jieba了,我們要利用jieba.cut函數(shù)對聊天記錄中StrContent字段進行中文分詞,代碼如下:

# 分詞函數(shù)
def obtain_word(data):
    word = jieba.cut(data)
    return list(word)

# copy一份數(shù)據(jù)
msg_word_total = msg_processed_time
# 將StrContent字段分詞形成word字段
msg_word_total['word'] = msg_word_total['StrContent'].apply(obtain_word)
# 統(tǒng)計word字段中各詞匯頻次
result_word = pd.Series(msg_word_total['word'].sum()).value_counts()
# 需要將Series轉(zhuǎn)換為DataFrame格式,便于畫圖
result_word_list = {'labels': result_word.index, 'counts': result_word.values}
result_word_new = pd.DataFrame(result_word_list)

為了提高分詞質(zhì)量,jieba支持常用詞列表,可在項目路徑下生成文件,執(zhí)行如下代碼加載常用詞配置:

import sys
sys.path.append("../")
# 加載常用詞配置
jieba.load_userdict("userdict.txt")

?稍微講講常用詞字典配置,一個常用詞占一行,分為三部分:詞語、詞頻、詞性(空格分隔),示例如下:

詞語 詞頻 詞性

勒布朗 20 nr

詹姆斯 100 nr

打籃球 10 v

?如果還不太會的童鞋可以在csdn搜一搜,資料賊多~

三. 結(jié)果可視化

通過第二章,實際已經(jīng)把可視化所需要的數(shù)據(jù)統(tǒng)計出來了,這里我們通過matplotlib庫來進行簡單的可視化~

  • 聊天頻次類——折線圖

下面是代碼,兩行就能搞定!

import matplotlib.pyplot as plt
# 聊天頻次折線圖
plt.plot(result_total_day.loc[:, ['count']])
plt.show()

結(jié)果如下:

聊天記錄分析報告python,基于Python的微信聊天記錄分析,python,wechat,數(shù)據(jù)分析,數(shù)據(jù)挖掘,中文分詞

  • 詞匯出現(xiàn)次數(shù)——柱狀圖

這部分我輸出了出現(xiàn)次數(shù)較多的Top20詞匯,并且添加了標題、橫縱坐標標注,大家可以參考:

# 要配置這些,否則會出現(xiàn)中文亂碼
plt.rcParams["font.sans-serif"] = ["SimHei"]
plt.rcParams["axes.unicode_minus"] = False

# 從二-3的結(jié)果中提取數(shù)據(jù)和標簽
top = result_word_new.head(20)
labels = top.iloc[:, 0]
counts = top.iloc[:, 1]

# 創(chuàng)建條形圖
plt.barh(labels, counts, color='skyblue')
plt.xlabel('出現(xiàn)次數(shù)')
plt.ylabel('詞匯')
plt.title('Top 20 出現(xiàn)詞匯')

# 反轉(zhuǎn)y軸,使得指標顯示正確
plt.gca().invert_yaxis()

# 緊湊布局,確保y軸完全顯示
plt.tight_layout()
plt.show()

結(jié)果如下(質(zhì)量還有提升空間):

聊天記錄分析報告python,基于Python的微信聊天記錄分析,python,wechat,數(shù)據(jù)分析,數(shù)據(jù)挖掘,中文分詞

四. 學習后記

本篇我是在Python環(huán)境下,利用pandas、jieba、matplotlib等庫對聊天記錄csv數(shù)據(jù)進行數(shù)據(jù)處理、統(tǒng)計分析和結(jié)果可視化,大部分內(nèi)容都是基礎(chǔ)的數(shù)據(jù)分析,僅涉及了一點點文本分詞內(nèi)容;有的環(huán)節(jié)還可以優(yōu)化,部分代碼有些粗糙(有的地方甚至可以利用成熟軟件來做,比如武漢大學的ROST等等),還望大家包容、見諒!希望多多進步,下一章打算進行一些情緒/情感分析。

與諸君共勉~

如何獲取聊天記錄數(shù)據(jù)可參考:

基于Python的微信聊天記錄分析——數(shù)據(jù)獲取文章來源地址http://www.zghlxwxcb.cn/news/detail-826609.html

到了這里,關(guān)于基于Python的微信聊天記錄分析——數(shù)據(jù)處理與分析的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔相關(guān)法律責任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • chatgpt賦能python:Python如何獲取微信聊天記錄

    作為世界上最受歡迎的即時通訊工具之一,微信被大量用戶使用。然而,微信聊天記錄的備份和管理是一個重要的問題,特別是對于那些需要在工作和個人生活中快速查找重要信息的人來說。 幸運的是,Python編程語言提供了一個可靠且快速的方法來抓取微信聊天記錄。在本文

    2024年02月13日
    瀏覽(87)
  • python微信PC端自動化-獲取聊天記錄

    目前已有許多微信客戶端的自動化工具,可供我們自動獲取聊天記錄、發(fā)送消息等等。不過微信網(wǎng)頁版現(xiàn)在已無法登錄,因此一些python庫如itchat、wxpy等已經(jīng)無法使用了(基于網(wǎng)頁)。 現(xiàn)在有大佬開發(fā)出了一個好玩的微信自動化python庫——wxauto。wxauto基于uiautomation、win32gui等自

    2024年02月03日
    瀏覽(89)
  • chatgpt賦能python:Python如何獲取微信聊天記錄:詳細教程

    在當前的數(shù)字時代,如何快速、便捷地獲取信息是困擾每個人的問題。隨著移動互聯(lián)網(wǎng)的發(fā)展,微信成為了人們交流溝通的主要工具之一。在這樣的背景下,如何獲取微信聊天記錄成為了一項非常重要的技能,在某些場合中甚至會被視為一種優(yōu)勢。 Python在數(shù)據(jù)分析、爬蟲、網(wǎng)

    2024年02月07日
    瀏覽(94)
  • 刪掉微信聊天記錄怎么恢復 ?怎么恢復微信聊天記錄?

    刪掉微信聊天記錄怎么恢復 ?怎么恢復微信聊天記錄?

    這個問題沒有確定的答案,因為恢復取決于許多因素,包括刪除聊天記錄的時間以及使用的設(shè)備類型。但是,有幾種方法可以成功恢復已刪除的微信歷史記錄,例如使用數(shù)據(jù)恢復軟件或聯(lián)系客戶支持。 如果你想將微信歷史轉(zhuǎn)移到另一臺設(shè)備上,第二種方法非常有用。如果您需

    2024年02月01日
    瀏覽(95)
  • 怎么恢復微信聊天記錄

    微信是一款非常受歡迎的社交軟件,它可以讓我們輕松跟朋友聊天,分享照片和視頻,也可以讓我們隨時隨地了解最新的新聞和信息。然而,如果您丟失了微信聊天記錄,你會發(fā)現(xiàn)無法恢復。在本文中,我們將介紹 怎么恢復微信聊天記錄 。 第一種方法:通過微信自帶的 聊天

    2024年02月08日
    瀏覽(89)
  • 微信聊天記錄導出(華為手機版)

    關(guān)于微信記錄導出的有比較多的方法, 在這里進行匯總下, 以下都是經(jīng)過我親測可行的, 不要去買一些付費的軟件, 自己手動操作下就好啦 主要參考這兩篇文章: 微信聊天記錄導出為電腦txt文件教程 微信聊天記錄導出(2020新版) 具體步驟: 1.先登錄電腦版微信 2.備份與遷移, 選擇備

    2024年02月09日
    瀏覽(92)
  • 信息搜集-讀取微信聊天記錄

    信息搜集-讀取微信聊天記錄

    在攻防演練的釣魚上線后,如果被釣的人使用微信,這時候可以通過讀取微信里的聊天記錄進行進一步搜集。 使用公開Github項目 https://github.com/AdminTest0/SharpWxDump 編譯命令:C:WindowsMicrosoft.NETFrameworkv4.0.30319csc.exe .Program.cs /platform:x86 首先獲取微信的Wechatkey ==》找到對應(yīng)聊天

    2023年04月10日
    瀏覽(93)
  • 【python+wechaty+docker+nodejs】24年從0開始搭建使用python-wechaty接入微信聊天機器人全過程記錄

    全網(wǎng)搜索了所有相關(guān)文章,由于個人原是java老程序員,對python有點興趣,正好這個機器人的python資料比較多,因此就著手嘗試。 在網(wǎng)上基本沒有找到python-wechaty的完整說明的使用手冊因此自己寫一個記錄一下全過程。 真正的從0開始。只有系統(tǒng)。沒有其他的情況下,都是全新

    2024年01月24日
    瀏覽(20)
  • 微信聊天記錄導出的開源項目,火了!

    微信聊天記錄導出的開源項目,火了!

    大家好,我是 Jack。 今天又是分享開源項目的一天。 最近想訓練一個符合某人說話風格的 AI,微信的聊天記錄里就有著豐富的訓練數(shù)據(jù)。 聊天記錄是珍貴的記憶,也是每一場對話、每一個互動的真情流露。 想要拿到這些數(shù)據(jù),無論是保存?zhèn)浞葸€是用于 AI 訓練,手動拷貝都不

    2024年01月16日
    瀏覽(84)
  • 導出手機微信聊天記錄全攻略

    導出手機微信聊天記錄全攻略

    12-5 在我們?nèi)粘J褂梦⑿诺倪^程中,有時候很需要把聊天記錄導出到電腦的Excel表格中,或者導出到網(wǎng)頁中。 但是有個軟件叫【 微信聊天記錄挖掘機 】,可以把微信電腦版的聊天記錄導出,那在手機微信中的聊天記錄怎么辦呢? 其實微信本身就帶有遷移功能,只需要把手機

    2024年02月04日
    瀏覽(90)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包