基于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 检测图片是否有马赛克

    要检测图片是否有马赛克,可以采用以下步骤: 1.导入相关模块 首先,需要导入Python Pillow库和Numpy库。Pillow库是Python中用于处理图片的第三方库,Numpy是Python中用于科学计算的库。 from PIL import Image import numpy as np 2.载入图片并转换为Numpy数组 使用Pillow库中的…

    python 2023年5月18日
    00
  • 详解Python PIL ImageDraw.Draw.arc()

    Python PIL库中的ImageDraw模块提供了很多用于绘制基本图形和在图像上绘制文本和线条等的函数,其中Draw.arc()函数用于在给定的矩形内绘制一个圆弧。下面是关于使用Draw.arc()函数的完整攻略。 函数格式 Draw.arc(xy, start, end, fill=None, width=0) 参数说明: xy:指定圆弧的外接矩形,格…

    python-answer 2023年3月25日
    00
  • pip报错“ImportError: cannot import name ‘main’ from ‘pip._internal.cli.tab_completion’ (/usr/lib/python3/dist-packages/pip/_internal/cli/tab_completion.py)”怎么处理?

    这个错误通常是由于pip版本不兼容或损坏的缘故。以下是两个实例: 例 1 如果您在使用pip时遇到“ImportError: cannot import name ‘main’ from ‘pip._internal.cli.tab_completion’ (/usr/lib/python3/dist-packages/pip/_internal/cli/t…

    python 2023年5月4日
    00
  • 详解python 一维、二维列表的初始化问题

    在Python中,一维和二维列表的初始化是非常常见的操作。本文将详细讲解Python中一维和二维列表的初始化问题。 一维列表的初始化 一维是Python中最基本的数据结构之一,可以使用以下方式进行初始化: 方式一:使用方括号 可以使用方括号来初始化空的一维列表,也可以在方括号中添加元素来初始化一个非空的一维列表。下面是一个示例: #1:使用方括号初始化一维列…

    python 2023年5月13日
    00
  • Python抛出引发异常(raise)知识点总结

    Python抛出引发异常(raise)知识点总结 在Python中,我们可以使用raise语句来抛出异常。raise语句用于引发异常,可以手动触发异常的抛出。本文将介绍Python中raise语句使用方法,包括如何抛出异常、如何自定义异常等。 抛出异常 在Python中,我们可以使用raise语句来抛出异常。raise语句可以接收一个异常类或异常实例作为参数…

    python 2023年5月14日
    00
  • Phantomjs抓取渲染JS后的网页(Python代码)

    在本攻略中,我们将介绍如何使用PhantomJS抓取渲染JS后的网页,并提供两个示例代码。以下是一个完整攻略: 步骤1:安装PhantomJS 首先,需要安装PhantomJS。PhantomJS是一个基于WebKit的无界面浏览器,可以用来渲染JS和CSS,并抓取渲染后的网页。我们可以从PhantomJS的官方网站下载并安装PhantomJS。 步骤2:使…

    python 2023年5月15日
    00
  • python机器学习实现神经网络示例解析

    下面我会给你详细讲解“python机器学习实现神经网络示例解析”的完整攻略。该攻略主要分为以下三个部分: 神经网络简介 Python机器学习实现神经网络步骤与示例分析 示例说明 1. 神经网络简介 神经网络是一种由多个节点(或称神经元)组成的信息处理系统。每个神经元都可以接收输入信息、处理信息,并传递给下一个神经元。具有多层结构的神经网络被称作深度神经网络,…

    python 2023年5月19日
    00
  • Python文件基本操作实用指南

    以下是详细讲解“Python文件基本操作实用指南”的完整攻略,包含两个示例说明。 1. 打开文件 在Python中,我们可以使用open()函数来打开一个文件。open()函数的语法如下: open(file, mode=”, buffering=-1, encoding=None, errors=None, newline=None, closefd=T…

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