微信聊天记录分析案例报告

1. 项目介绍

本项目基于导出的微信聊天记录,进行聊天行为分析与可视化展示。通过数据清洗、关键词提取、聊天频率统计等方式,了解聊天习惯、活跃时间段、关键词热度等。

2. 功能模块说明

(1)数据读取模块

import pandas as pd

def read_chat_data(file_path):
    df = pd.read_csv(file_path, encoding='utf-8')  # 你也可以是 .txt 或 .xlsx
    return df

(2)数据清洗模块

import re

def clean_chat_data(df):
    df = df.dropna()  # 去除空行
    df['时间'] = pd.to_datetime(df['时间'], errors='coerce')  # 时间格式标准化
    df = df.dropna(subset=['时间'])  # 删除解析失败的时间
    return df

(3)数据分析模块

def analyze_message_count(df):
    count_by_person = df['发送人'].value_counts()
    return count_by_person

def analyze_hourly_activity(df):
    df['小时'] = df['时间'].dt.hour
    hour_count = df['小时'].value_counts().sort_index()
    return hour_count

(4)可视化模块

import matplotlib.pyplot as plt

def plot_message_count(count_by_person):
    count_by_person.plot(kind='bar', color='skyblue')
    plt.title('消息数按发送人统计')
    plt.xlabel('发送人')
    plt.ylabel('消息数')
    plt.tight_layout()
    plt.show()

def plot_hourly_activity(hour_count):
    hour_count.plot(kind='line', marker='o', color='orange')
    plt.title('每小时消息活跃度')
    plt.xlabel('小时')
    plt.ylabel('消息数')
    plt.grid(True)
    plt.tight_layout()
    plt.show()

3. 主程序调用示例

file_path = 'weChat_chat_log.csv'  # 改成你的实际文件名
df = read_chat_data(file_path)
df = clean_chat_data(df)

# 分析
msg_count = analyze_message_count(df)
hourly = analyze_hourly_activity(df)

# 可视化
plot_message_count(msg_count)
plot_hourly_activity(hourly)

4. 可选高级功能(加分项)
    •    关键词词云分析(用 jieba 分词 + wordcloud)
    •    情感分析(可用 SnowNLP)
    •    聊天频次日历图(类似 heatmap)

5. 总结与扩展
    •    本次分析发现最多消息来自某某人,聊天高峰在晚上8点
    •    未来可结合聊天内容做关键词、情绪分析或生成图表动态网页展示

1. 模拟微信聊天数据

我们假设有如下字段:
    •    时间:聊天时间
    •    发送人:发送消息的名字
    •    消息内容:消息文本内容

import pandas as pd
from datetime import datetime, timedelta
import random

# 模拟聊天人和消息内容
people = ['小明', '小红', '小李']
messages = ['你好呀', '吃饭了吗?', '今晚看电影吗?', '哈哈哈', '在吗', '开会中', '写作业', '明天上课几点?']

# 生成模拟数据
data = []
start_time = datetime(2025, 4, 1, 8, 0)

for i in range(200):  # 模拟200条消息
    time = start_time + timedelta(minutes=random.randint(1, 5000))
    sender = random.choice(people)
    content = random.choice(messages)
    data.append([time, sender, content])

df = pd.DataFrame(data, columns=['时间', '发送人', '消息内容'])
df.to_csv('mock_wechat_chat.csv', index=False, encoding='utf-8-sig')
print(df.head())

2. 数据读取与清洗模块

def read_and_clean_data(file_path):
    df = pd.read_csv(file_path, encoding='utf-8')
    df['时间'] = pd.to_datetime(df['时间'], errors='coerce')
    df.dropna(subset=['时间'], inplace=True)
    return df

3. 数据分析模块

def analyze_chat_frequency(df):
    return df['发送人'].value_counts()

def analyze_hourly_distribution(df):
    df['小时'] = df['时间'].dt.hour
    return df['小时'].value_counts().sort_index()

4. 可视化模块

import matplotlib.pyplot as plt

def plot_sender_counts(sender_counts):
    sender_counts.plot(kind='bar', color='lightgreen')
    plt.title('各成员消息数量统计')
    plt.xlabel('发送人')
    plt.ylabel('消息数')
    plt.tight_layout()
    plt.show()

def plot_hourly_activity(hour_counts):
    hour_counts.plot(kind='line', marker='o', color='coral')
    plt.title('每小时消息发送数量')
    plt.xlabel('小时')
    plt.ylabel('消息数')
    plt.grid(True)
    plt.tight_layout()
    plt.show()

5. 主程序整合运行

file_path = 'mock_wechat_chat.csv'
df = read_and_clean_data(file_path)

# 分析
sender_counts = analyze_chat_frequency(df)
hourly_counts = analyze_hourly_distribution(df)

# 可视化
plot_sender_counts(sender_counts)
plot_hourly_activity(hourly_counts)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值