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

基于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高阶函数攻略 什么是高阶函数 高阶函数是指可以接受其他函数作为参数或返回一个函数作为结果的函数。在Python中,函数可以被视为数据类型,也就是说,函数可以作为另一个函数的参数进行传递或作为另一个函数的返回值进行返回。 为什么要使用高阶函数 通过使用高阶函数,我们可以让我们的代码更加简洁、优雅,减少重复的代码,提高代码的可读性和复用性。 高阶…

    python 2023年6月5日
    00
  • Python 使用 pip 安装 matplotlib 模块的方法

    下面是使用pip安装matplotlib模块的攻略: 步骤一:查看当前是否已经安装pip 使用如下命令来查看当前是否已经安装pip: pip –version 如果已经安装,会显示pip的版本信息,如:pip 21.0.1。如果没有安装,则需要先安装pip,具体安装过程可以参照官方文档:https://pip.pypa.io/en/stable/insta…

    python 2023年5月14日
    00
  • Python 爬虫使用动态切换ip防止封杀

    下面就是 Python 爬虫使用动态切换 IP 防止封杀的完整攻略。 1. IP 封禁的原因 在进行爬虫开发的过程中,我们经常会遇到 IP 被封禁的情况。这是因为大多数网站为了防止爬虫大规模地访问,会对频繁访问的 IP 或者请求进行限制。这时候我们需要使用代理 IP 进行访问,才能有效地防止 IP 被封禁。 2. 动态切换 IP 的方法 2.1 使用代理 I…

    python 2023年6月3日
    00
  • 详解 Python 读写XML文件的实例

    下面是我的详细讲解: Python 读写XML文件的实例 什么是XML文件 XML是一种可扩展标记语言(Extensible Markup Language),可以用来存储和传输数据。XML使用标记来描述数据,标记包括开始标记和结束标记,开始和结束标记中间是数据。 Python 读取XML文件 在Python中,我们可以使用ElementTree模块来读取X…

    python 2023年6月3日
    00
  • Python3批量创建Crowd用户并分配组

    对于“Python3批量创建Crowd用户并分配组”的完整攻略,可以按照以下步骤进行: 1. 安装 Crowd SDK 首先,需要在本地安装 Crowd SDK,可以使用以下命令来安装: pip install atlassian-python-api 2. 创建 Crowd 应用和应用程序(Application) 在 Crowd 中创建一个应用和应用程序…

    python 2023年5月20日
    00
  • python制作可视化GUI界面自动分类管理文件

    下面是制作可视化GUI界面自动分类管理文件的攻略: 步骤一:安装必要的库 使用Python进行GUI界面开发需要使用tkinter包,需要先安装。可以使用以下命令: pip install tkinter 步骤二:创建GUI界面 使用tkinter库创建GUI界面,可以参考以下示例代码: import tkinter as tk root = tk.Tk()…

    python 2023年5月19日
    00
  • element ui中表单el-form的label如何设置宽度

    在 Element UI 中,可以使用 el-form 组件来创建表单,同时也可以使用 label 属性来为表单元素添加标签。如果需要自定义 label 的宽度,可以使用以下两种方法来实现。 方法一:使用 style 属性 通过设置 label 的 style 属性中的 width 可以自定义 label 的宽度。例如设置 label 宽度为 100px,可…

    python 2023年6月13日
    00
  • Python中Pygame模块的详细安装过程

    当您准备在Python中使用Pygame时,需要先安装Pygame模块并将其导入到您的Python项目中。下面是Pygame模块的安装步骤。 1. 安装Python 首先,确保您已经在电脑上安装好Python解释器。您可以从python.org网站上下载Python安装包进行安装。 2. 安装Pygame模块 接下来,您需要使用pip命令安装Pygame模块…

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