基于Python实现的微信好友数据分析

yizhihongxing

基于Python实现的微信好友数据分析攻略

准备工作

为了进行微信好友数据分析,我们需要完成以下准备工作:

  1. 安装Python编程环境和必要的Python包,如pandas, matplotlib等。
  2. 获取微信好友聊天记录数据文件,可以导出微信聊天记录到文件,通常以txt格式保存。

数据清洗

在进行数据分析前,我们需要对数据进行清洗,以消除数据上的噪声以及非数据内容。在本实例中,我们将主要对微信好友聊天记录数据进行清洗。

步骤

  • 读取数据文件:使用Python编程环境的pandas包读取数据文件,可以使用read_csv函数读取txt文件。
  • 数据清洗:针对微信聊天记录,需要排除非文本内容。(如:图片、表情等)
  • 数据去重:为了消除重复数据带来的影响,我们需要去除重复的行数据。
  • 删除无用列数据:保留对我们有用的数据。在微信聊天记录中,我们关心的数据有:发送方,接收方,时间和聊天内容。

示例

import pandas as pd
# 读取数据文件
df = pd.read_csv('wechat_chat_history.txt', header=None, names=['text'])
# 清洗数据,去掉聊天记录中的图片、表情等非文本内容
df = df[~df.text.str.contains('<img')]
df = df[~df.text.str.contains('<span class=\"emoji')]
# 去重重复数据
df.drop_duplicates(inplace=True)
# 获取有用的数据(发送方,接收方,时间和聊天内容)
df[['user', 'type1', 'type2', 'type3', 'chat']] = df.text.str.split(n=4, expand=True)
df.drop(['text', 'type1', 'type2', 'type3'], axis=1, inplace=True)

数据分析

完成数据清洗步骤后,我们开始进行微信好友数据分析。以下是本实例中,我们将要探索的问题:

  • 总体聊天趋势:每天,每周,每月聊天量的变化情况。
  • 活跃聊天好友:哪些好友最活跃?
  • 好友性别比例:我有多少比例的男女好友?
  • 好友省份分布情况:散居各地的好友分布在省份上面如何?

步骤

总体聊天趋势

  • 统计每日、每周、每月聊天次数。
  • 使用可视化工具(如:matplotlib)绘制时间序列图,直观呈现聊天趋势。

活跃聊天好友

  • 根据聊天次数多少,排序输出好友列表。
  • 支持查看不同时间间隔内的好友活跃度。

好友性别比例

  • 使用好友性别的头像进行统计。
  • 将头像转为黑白图像,使用图像处理工具(如:opencv)进行颜色统计。
  • 统计男女头像比例,绘制饼图或柱状图进行可视化呈现。

好友省份分布情况

  • 通过解析好友所在地,获取省份信息。
  • 将所有的好友按省份进行分组,统计每个省份的好友数量。
  • 绘制热力图或地图,可视化呈现好友分布情况。

示例

总体聊天趋势

import pandas as pd
import matplotlib.pyplot as plt

# 读取数据文件
df = pd.read_csv('wechat_chat_history.txt', header=None, names=['text'])
# 清洗数据,去掉聊天记录中的图片、表情等非文本内容
df = df[~df.text.str.contains('<img')]
df = df[~df.text.str.contains('<span class=\"emoji')]
# 去重重复数据
df.drop_duplicates(inplace=True)
# 获取有用的数据(发送方,接收方,时间和聊天内容)
df[['user', 'type1', 'type2', 'type3', 'chat']] = df.text.str.split(n=4, expand=True)
df.drop(['text', 'type1', 'type2', 'type3'], axis=1, inplace=True)

# 统计每一天的聊天次数
df['date'] = pd.to_datetime(df['chat'].str[:10])
daily_counts = df.groupby('date').size().reset_index(name='counts')
daily_counts.set_index('date', inplace=True)

# 统计每一周的聊天次数
weekly_counts = daily_counts.resample('w').sum()

# 统计每一月的聊天次数
monthly_counts = daily_counts.resample('m').sum()

plt.figure(figsize=(16, 4))
plt.plot(daily_counts, label='daily counts')
plt.plot(weekly_counts, label='weekly counts')
plt.plot(monthly_counts, label='monthly counts')
plt.xlabel('date')
plt.ylabel('chat counts')
plt.legend()
plt.show()

活跃聊天好友

import pandas as pd
import matplotlib.pyplot as plt

# 读取数据文件
df = pd.read_csv('wechat_chat_history.txt', header=None, names=['text'])
# 清洗数据,去掉聊天记录中的图片、表情等非文本内容
df = df[~df.text.str.contains('<img')]
df = df[~df.text.str.contains('<span class=\"emoji')]
# 去重重复数据
df.drop_duplicates(inplace=True)
# 获取有用的数据(发送方,接收方,时间和聊天内容)
df[['user', 'type1', 'type2', 'type3', 'chat']] = df.text.str.split(n=4, expand=True)
df.drop(['text', 'type1', 'type2', 'type3'], axis=1, inplace=True)

# 按照联系人计数,并排序输出
friend_counts = df['user'].value_counts().reset_index().rename(columns={'index':'friend', 'user': 'counts'})
friend_counts.plot(kind='bar', x='friend', y='counts', figsize=(16, 6))
plt.xlabel("friend")
plt.ylabel("counts")
plt.show()

参考资料

  • Pandas documentation, “Pandas next-generation data manipulation for Python”. https://pandas.pydata.org/
  • Matplotlib documentation, “2D plotting library for Python”. https://matplotlib.org/
  • OpenCV documentation, “Open Source Computer Vision Library”. https://opencv.org/

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:基于Python实现的微信好友数据分析 - Python技术站

(0)
上一篇 2023年6月6日
下一篇 2023年6月6日

相关文章

  • Python散点图与折线图绘制过程解析

    在Python中,可以使用第三方库matplotlib来绘制散点图和折线图。以下是绘制散点图和折线图的详细攻略: 安装依赖库 要绘制散点图和折线图,需要安装matplotlib库。可以使用以下命令安装: pip install matplotlib 绘制散点图 要绘制散点图,可以使用matplotlib库的scatter()函数。以下是绘制散点图的示例: i…

    python 2023年5月14日
    00
  • Python计算程序运行时间的方法

    以下是详细讲解“Python计算程序运行时间的方法”的完整攻略。 为什么需要计算程序运行时间? 程序的运行时间是程序性能优化中非常重要的指标之一,也是评价一段程序优化效果的重要标准。在程序开发的过程中,我们需要不断地优化程序性能,确保程序能够快速、准确地执行结果。毫秒级的时间差距,也许就是决定程序能否畅快执行的关键。 因此,我们需要知道如何计算程序的运行时间…

    python 2023年6月3日
    00
  • 使用Python的Tornado框架实现一个简单的WebQQ机器人

    下面我会详细讲解使用Python的Tornado框架实现一个简单的WebQQ机器人的完整攻略。 1. 准备工作 首先,你需要申请QQ机器人账号、安装Python语言环境及Tornado框架。 2. 获取QQ机器人的cookie和ptwebqq 在Python代码中通过模拟浏览器登录QQ账号,然后从登录后的cookie和ptwebqq中获取QQ机器人的cook…

    python 2023年5月23日
    00
  • 深入了解Python 中线程和进程区别

    深入了解Python中线程和进程区别 在Python中,我们可以使用线程和进程来进行并行编程。虽然线程和进程都是用于并行处理的,但它们的定义和功能还是有很大的不同。本文将深入讲解Python中线程和进程的区别,并使用两个实例进行说明。 线程和进程的定义 线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。线程没有自己的系统资…

    python 2023年5月19日
    00
  • python 读取txt,json和hdf5文件的实例

    Python是一种广泛使用的编程语言,支持多种数据格式的读取和处理。本文将详细讲解如何使用Python读取txt、json和hdf5文件。 读取txt文件 Python中读取txt文件,可以使用内置的open()函数。下面是一个读取txt文件的示例代码: with open(‘data.txt’, ‘r’) as f: data = f.read() pri…

    python 2023年6月3日
    00
  • python查询mysql,返回json的实例

    下面我将为您详细讲解如何使用Python查询MySQL数据库,并返回JSON格式的数据。 1. 安装MySQL驱动 在使用Python查询MySQL数据库之前,我们需要先安装相应的MySQL驱动。这里我们以mysql-connector-python为例进行安装,您也可以选择其他的Python MySQL驱动。 pip install mysql-conne…

    python 2023年6月3日
    00
  • python ElementTree 基本读操作示例

    当我们需要解析XML文档时,Python内置的ElementTree模块是一个非常方便的工具。以下是关于Python ElementTree模块的基本读操作示例: 导入ElementTree模块 如果你在Python 2.x中使用ElementTree模块,请使用以下代码进行导入: import xml.etree.ElementTree as ET 如果你…

    python 2023年6月3日
    00
  • 为什么是 Python -m

    当我们安装了 Python 后,我们可以在命令行中使用 Python 命令来运行 Python 脚本或者交互式的 Python 解释器。不过,如果我们的 Python 环境中同时安装了多个版本的 Python,那么直接使用 Python 命令运行脚本或者交互式解释器时,会默认使用系统环境变量 $PATH 中的 Python 版本。 为了避免这种情况,我们可以…

    python 2023年6月3日
    00
合作推广
合作推广
分享本页
返回顶部