前言
在日常工作中,WhatsApp 不仅用于即时通讯,也经常承担客户沟通、项目协作和群组讨论等任务。
当聊天记录越来越多时,如果想统计每天的消息数量、分析不同时间段的沟通频率,或者快速筛选某个关键词,直接在 WhatsApp 中逐条查看显然不够方便。
一种可行的方案是:先将 WhatsApp 聊天记录导出为 CSV,再使用 Python 对数据进行处理。
本文将介绍从聊天数据导出、CSV 读取、数据清洗到基础统计分析的完整流程。

一、整体实现思路
整个流程可以分为四个步骤:
- 从 WhatsApp 导出聊天记录。
- 将聊天数据保存为 CSV 格式。
- 使用 Python 和 pandas 读取数据。
- 对消息数量、时间分布及关键词进行分析。
CSV 是一种通用的数据交换格式,可以使用 Excel、Python 或其他数据分析工具进行处理。
相比直接解析聊天界面,使用结构化数据进行分析通常更加方便。
二、准备运行环境
本次示例使用以下环境:
- Python 3.10 或更高版本
- pandas
- matplotlib
- Google Chrome
- WhatsApp Web
首先安装 Python 依赖:
bash
pip install pandas matplotlib
安装完成后,即可开始准备数据。
三、导出 WhatsApp 聊天记录
WhatsApp 手机端提供内置的聊天导出功能,但无法直接生成标准的 CSV 数据表。
如果使用手机端导出的 TXT 文件,需要额外编写解析逻辑,处理时间戳、发送者和多行消息等问题。
另一种方式是使用支持 CSV 格式的导出工具。
例如,WAExport 是一款基于 Chrome 和 WhatsApp Web 的聊天记录导出扩展,支持将聊天内容保存为 HTML、Excel 或 CSV。
基本操作流程:
- 在 Chrome 浏览器中打开 WhatsApp Web。
- 安装并打开 WAExport 扩展。
- 选择需要导出的个人或群组聊天。
- 根据需求设置日期范围。
- 选择 CSV 格式并执行导出。
导出完成后,将文件保存为:
whatsapp_chat.csv
需要注意,导出工具生成的 CSV 字段名称可能不同,后续代码需要根据实际文件结构进行调整。
四、使用 pandas 读取 CSV
首先创建一个 Python 文件:
analyze_whatsapp.py
然后编写以下代码:
python
import pandas as pd
df = pd.read_csv("whatsapp_chat.csv")
print(df.head())
print(df.columns.tolist())
执行后,程序会输出 CSV 的前五行和所有字段名称。
为了方便演示,假设我们已经将实际 CSV 字段整理为以下结构:
| date | sender | message |
|---|---|---|
| 2026-10-01 09:00 | User A | Hello |
| 2026-10-01 09:05 | User B | Good morning |
| 2026-10-01 10:20 | User A | Project update |
其中:
date:消息发送时间sender:发送者message:消息内容
这只是示例字段,不代表 WAExport 的固定导出表头。
如果实际 CSV 使用其他列名,可以通过 rename() 进行转换。
五、清洗 WhatsApp 聊天数据
在分析之前,需要先处理时间格式和空值。
python
import pandas as pd
df = pd.read_csv("whatsapp_chat.csv")
df["date"] = pd.to_datetime(
df["date"],
errors="coerce"
)
df = df.dropna(subset=["date"])
df["message"] = df["message"].fillna("")
这里使用 errors="coerce",将无法识别的时间转换为缺失值。
然后使用 dropna() 删除没有有效时间的记录。
这样可以避免后续统计出现异常。
六、统计每天的 WhatsApp 消息数量
首先从时间字段中提取日期:
python
df["day"] = df["date"].dt.date
daily_messages = (
df.groupby("day")
.size()
.reset_index(name="count")
)
print(daily_messages)
假设得到以下结果:
| day | count |
|---|---|
| 2026-10-01 | 125 |
| 2026-10-02 | 98 |
| 2026-10-03 | 143 |
这样就能直观看到每天的消息数量。
进一步使用 matplotlib 绘制趋势图:
python
import matplotlib.pyplot as plt
plt.figure(figsize=(10, 5))
plt.plot(
daily_messages["day"],
daily_messages["count"]
)
plt.xlabel("Date")
plt.ylabel("Message Count")
plt.title("WhatsApp Daily Message Count")
plt.xticks(rotation=45)
plt.tight_layout()
plt.show()
通过折线图,可以观察不同日期的消息活跃程度。
七、分析 WhatsApp 群组成员的发言数量
对于群组聊天,还可以统计不同成员发送的消息数量。
python
sender_stats = (
df.groupby("sender")
.size()
.sort_values(ascending=False)
)
print(sender_stats)
如果希望以图表展示:
python
sender_stats.plot(
kind="bar",
figsize=(10, 5)
)
plt.title("WhatsApp Messages by Sender")
plt.xlabel("Sender")
plt.ylabel("Message Count")
plt.tight_layout()
plt.show()
通过这个方法,可以了解不同成员的消息数量分布。
不过,发言数量只能反映消息频率,不能直接代表沟通质量或工作效率。
八、统计消息发送时间分布
如果想了解群组在什么时间最活跃,可以提取小时信息:
python
df["hour"] = df["date"].dt.hour
hourly_stats = (
df.groupby("hour")
.size()
.reindex(range(24), fill_value=0)
)
print(hourly_stats)
再绘制柱状图:
python
hourly_stats.plot(
kind="bar",
figsize=(10, 5)
)
plt.title("WhatsApp Message Activity by Hour")
plt.xlabel("Hour")
plt.ylabel("Message Count")
plt.tight_layout()
plt.show()
通过图表可以查看消息集中在哪些时间段。
如果数据涉及跨时区沟通,还需要确认导出时间戳的时区设置。
九、提取包含指定关键词的消息
例如,希望找出所有包含 project 的聊天记录:
python
keyword = "project"
filtered = df[
df["message"].astype(str).str.contains(
keyword,
case=False,
regex=False,
na=False
)
]
print(filtered)
这里:
case=False:忽略英文大小写regex=False:将关键词作为普通文本匹配na=False:忽略空值
这种方法适合筛选项目名称、订单编号或特定讨论主题。
十、将统计结果导出为 Excel
分析完成后,可以把统计结果保存为 Excel 文件。
首先安装:
bash
pip install openpyxl
然后执行:
python
with pd.ExcelWriter(
"whatsapp_analysis.xlsx",
engine="openpyxl"
) as writer:
daily_messages.to_excel(
writer,
sheet_name="Daily Messages",
index=False
)
sender_stats.rename(
"message_count"
).to_excel(
writer,
sheet_name="Sender Statistics"
)
hourly_stats.rename(
"message_count"
).to_excel(
writer,
sheet_name="Hourly Statistics"
)
这样就可以生成包含多个工作表的 Excel 分析文件。
十一、数据隐私与安全注意事项
WhatsApp 聊天记录可能包含电话号码、个人身份信息和商业沟通内容。
在导出和分析数据时,建议:
- 只处理自己有权访问和使用的聊天记录。
- 不要将真实聊天数据直接上传到公开 GitHub 仓库。
- 分享分析结果前,对姓名、电话号码等信息进行匿名化。
- 将导出文件保存在安全的位置。
- 不再需要原始数据时,按照适用的数据保留规则进行清理。
如果只是学习 Python 数据分析,也可以使用模拟数据代替真实聊天内容。
总结
本文介绍了如何将 WhatsApp 聊天记录转换为 CSV 数据,并使用 Python 完成基础分析。
主要实现了以下功能:
- 读取与清洗聊天数据
- 统计每日消息数量
- 分析群组成员发言数量
- 统计不同时间段的消息分布
- 根据关键词筛选聊天内容
- 将分析结果保存为 Excel
对于需要定期处理 WhatsApp 聊天数据的开发者来说,CSV 配合 pandas 是一种灵活且容易扩展的方案。
后续还可以结合自然语言处理、数据可视化或自动化报表,进一步扩展聊天