Python数据分析-移动设备使用情况和用户行为分析

一、研究背景

在信息化飞速发展的今天,移动设备已成为人们生活和工作中的必备工具。智能手机普及率持续增长,用户使用行为不断增多,从娱乐、社交到办公、学习,手机的使用已渗透到各个年龄段和社会群体。移动设备使用情况的多样化,为研究用户行为模式和手机使用偏好提供了丰富的数据基础。

随着大数据技术的应用,越来越多的研究开始关注用户行为数据的挖掘及其对产品设计、市场营销的潜在影响。通过分析用户的移动设备使用数据,例如应用程序的使用时间、屏幕开启时间、电池消耗和流量使用情况,可以更好地了解用户需求和行为习惯。这不仅能帮助应用开发者和运营商优化产品和服务,还能在用户体验提升、流量管理及设备创新等方面带来新的机会。

二、研究意义

本研究的主要意义在于:

  1. 用户需求的精准识别:通过数据分析,我们可以识别不同用户群体的需求。例如,青少年用户可能偏好社交类应用,中年用户可能更倾向于办公类应用。基于这些信息,应用开发者可以优化应用功能,满足特定群体的需求。

  2. 市场营销的优化:在当今个性化营销兴起的背景下,基于用户的行为数据划分出不同的用户行为类别(如轻度使用、适度使用和极端使用)可用于定向广告投放。品牌可以根据用户的行为特点进行个性化推送,从而提高广告转化率。

  3. 流量和电池管理的优化:移动运营商可以根据用户的流量使用模式进行流量管理和资源分配。例如,识别出极端使用的用户群体,可以帮助运营商为这些用户提供更高效的流量套餐或电池优化方案,以提升用户体验和满意度。

  4. 设备设计和功能改进:对于智能手机制造商,了解不同性别、年龄段用户的使用偏好,可以为设备设计提供数据支持。例如,电池消耗较高的用户可能更关注续航能力,而应用使用较频繁的用户可能更在意处理器性能。基于这些数据,制造商可以设计更符合用户需求的产品。

三、实证分析

代码和数据集

此数据集提供了对移动设备使用模式和用户行为分类的全面分析。它包含 700 个用户数据样本,包括应用程序使用时间、屏幕开启时间、电池消耗和数据消耗等指标。每个条目都分为五个用户行为类之一,范围从轻度到极端使用,允许进行深入的分析和建模。

主要特点:

User ID:每个用户的唯一标识符。
Device Model(设备型号):用户智能手机的型号。
操作系统:设备的操作系统(iOS 或 Android)。
应用程序使用时间:每天在移动应用程序上花费的时间,以分钟为单位。
屏幕开启时间:屏幕每天处于活动状态的平均小时数。
电池消耗:每日电池消耗量(以 mAh 为单位)。
已安装的应用程序数:设备上可用的应用程序总数。
数据使用量:每日移动数据消耗量(以 MB 为单位)。
年龄:用户的年龄。
性别:用户的性别(男性或女性)。
用户行为类:根据使用模式(1 到 5)对用户行为进行分类。

导入基本数据分析的包

import pandas as pd
import matplotlib.pyplot as plt
import csv
import seaborn as sns
import warnings
import numpy as np
warnings.filterwarnings('ignore')

读取数据集并查看前五行

df=pd.read_csv("user_behavior_dataset.csv")
df.head()

查看缺失值情况

df.isnull().sum()

 

未发现缺失值

对数值型数据进行描述性统计分析

查看一下数据具体结构和类型

 

接下来进行数据预处理,将性别、操作系统、用户行为转换为分类 dtype

df['Gender'] = df['Gender'].astype('category')
df['Operating System'] = df['Operating System'].astype('category')
df['User Behavior Class'] = df['User Behavior Class'].astype('category')
age_bins = [18, 25, 35, 45, 55, 65]
age_labels = [
    '18-24_Gen_Z', 
    '25-34_Mille(Early)', 
    '35-44_Mille(Late)', 
    '45-54_Gen_X(Early)', 
    '55-64_Gen_X(Late)'
]

 然后查看一下列名

接下来对数据集进行EDA和可视化展示

import seaborn as sns
import matplotlib.pyplot as plt 
import seaborn as sns 
import datetime
%matplotlib inline
plt.rcParams['font.sans-serif'] = ['KaiTi']  #中文
plt.rcParams['axes.unicode_minus'] = False   #负号
import pandas as pd


# 创建一个2x2的子图网格
custom_colors = ['#2ca02c', '#d62728']
fig, axes = plt.subplots(2, 2, figsize=(16, 10), dpi = 200)
axes = axes.flatten()

# === 子图1:按年龄范围(男性和女性)划分的设备型号受欢迎程度 ===
axes[0].set_title('设备模型分布', fontsize = 14)
sns.countplot(x='Device Model', data = df, ax = axes[0])
axes[0].set_xlabel('Age Group', fontsize = 12)
axes[0].set_ylabel('Count', fontsize = 12)
axes[0].tick_params(axis = 'x', rotation = 0)
axes[0].grid(True, linestyle = '--', alpha = 0.3)

# === 子图2:按性别划分的设备型号受欢迎程度 ===
df_Device_Model_count = df['Device Model'].value_counts().reset_index()
# 修改列名
df_Device_Model_count.columns = ['Device Model', 'count']
axes[1].set_title('设备型号共享', fontsize = 14)
axes[1].pie(df_Device_Model_count['count'], labels = df_Device_Model_count['Device Model'],
            autopct = '%1.1f%%', startangle = 140, wedgeprops = dict(width = 0.6), colors = custom_colors,
            pctdistance = 0.85)

# === 子图3:各年龄段设备型号热度(女性) ===
df_Operating_System_count = df['Operating System'].value_counts().reset_index()
# 修改列名
df_Operating_System_count.columns = ['Operating System', 'count']
custom_colors = ['#2ca02c', '#d62728']
axes[2].set_title('操作系统分发', fontsize = 14)
axes[2].pie(df_Operating_System_count['count'], labels = df_Operating_System_count['Operating System'],
            autopct = '%1.1f%%', startangle = 140, wedgeprops = dict(width = 0.6), colors = custom_colors,
            pctdistance = 0.85)

# === 子图4:各年龄段(男性)设备型号受欢迎程度 ===
df_gender_count = df['Gender'].value_counts().reset_index()
# 修改列名
df_gender_count.columns = ['Gender', 'count']
axes[3].set_title('性别分布', fontsize = 14)
axes[3].pie(df_gender_count['count'], labels = df_gender_count['Gender'],
            autopct = '%1.1f%%', startangle = 140, wedgeprops = dict(width = 0.6), colors = custom_colors,
            pctdistance = 0.85)

plt.tight_layout(pad = 3)
plt.show()

 

fig, axes = plt.subplots(2, 2, figsize=(24, 18),dpi=200)
axes = axes.flatten()  

# Subplot 1:
axes[0].set_title('操作系统分布', fontsize=20)
sns.barplot(data=df_grouped, x='Operating System',y='No_of_apps', ax=axes[0])
axes[0].set_xlabel('Age Group', fontsize=16)
axes[0].set_ylabel('Number of Users', fontsize=16)
axes[0].tick_params(axis='x', rotation=45)
axes[0].grid(True, linestyle='--', alpha=0.3)

# Subplot 2:
axes[1].set_title('用户年龄分布', fontsize=20)
sns.histplot(df['Age'], bins=20, kde=True, ax=axes[1])
axes[1].set_xlabel('Age', fontsize=16)
axes[1].set_ylabel('Frequency', fontsize=16)
axes[1].tick_params(axis='x', rotation=45)
axes[1].grid(True, linestyle='--', alpha=0.3)

# Subplot 3:
axes[2].set_title('热图', fontsize=20)
sns.heatmap(df.select_dtypes(include=['int', 'float']).corr(), annot=True, cmap="coolwarm",ax=axes[2])

# Subplot 4:
axes[3].set_title('每日应用使用情况与每日屏幕 - 准时', fontsize=20)
sns.scatterplot(data=df,x='App Usage Time (min/day)', y='Screen On Time (hours/day)', hue='Age Range',ax=axes[3])
axes[3].set_xlabel('Daily App Usage', fontsize=16)
axes[3].set_ylabel('Screen On Time (hours/day)', fontsize=16)
axes[3].tick_params(axis='x', rotation=45)
axes[3].grid(True, linestyle='--', alpha=0.3)


plt.tight_layout(pad=3)
plt.show()

 

接下来展示每日应用程序使用情况与每日屏幕开启时间

根据 Age group 和 devivce model 再次对数据进行分组

df_Gender_devices=df.groupby(['Gender','Device Model']).agg(Count=('Gender','count')).reset_index()
df_gender_=df_Gender_devices.pivot(index='Gender', columns='Device Model', values='Count').reset_index()
df_female_devices_age=df[df['Gender']=='Female'].groupby(['Age Range', 'Device Model']).agg(Count=('Age Range', 'count')).reset_index()
df_male_devices_age=df[df['Gender']=='Male'].groupby(['Age Range', 'Device Model']).agg(Count=('Age Range', 'count')).reset_index()

性别和年龄移动设备首选项。
以下是基于 Genger 和年龄组的不同手机型号偏好的分析,非常有趣。注意到以下观察结果

品牌忠诚度:不同年龄组和性别的设备种类繁多,表明消费者具有很强的品牌忠诚度和不同的偏好。
三星 Galaxy S21:在各个年龄段中显示出一致的受欢迎程度,但在 18-24 岁的 Z 世代中有一个明显的例外,这表明在这个年轻人群中存在独特的偏好趋势。
小米 11 也很受欢迎,并且在同年龄段的性别中保持稳定。

fig, axes = plt.subplots(2, 2, figsize=(24, 12), dpi=200)
axes = axes.flatten()

# === 子图1:按年龄范围(男性和女性)划分的设备模型受欢迎程度 ===
axes[0].set_title('按年龄范围(男、女)划分的设备型号受欢迎程度', fontsize=20)
df_Age_range_phoneModel.plot(kind='bar', x='Age Range', ax=axes[0])
axes[0].set_xlabel('年龄组', fontsize=16)
axes[0].set_ylabel('数量', fontsize=16)
axes[0].tick_params(axis='x', rotation=0)
axes[0].grid(True, linestyle='--', alpha=0.3)

# === 子图2:按性别划分的设备模型受欢迎程度 ===
axes[1].set_title('按性别划分的设备型号受欢迎程度', fontsize=20)
df_gender_.plot(kind='bar', x='Gender', ax=axes[1])
axes[1].set_xlabel('性别', fontsize=16)
axes[1].set_ylabel('数量', fontsize=16)
axes[1].tick_params(axis='x', rotation=0)
axes[1].grid(True, linestyle='--', alpha=0.3)


# === 子图3:按年龄段(女性)划分的设备模型受欢迎程度 ===
axes[2].set_title('按年龄段(女性)划分的设备型号受欢迎程度', fontsize=20)
df_female_devices.plot(kind='bar', x='Age Range', ax=axes[2])
axes[2].set_xlabel('年龄组', fontsize=16)
axes[2].set_ylabel('数量', fontsize=16)
axes[2].tick_params(axis='x', rotation=0)
axes[2].grid(True, linestyle='--', alpha=0.3)

# === 子图4:各年龄段(男性)设备型号受欢迎程度 ===
axes[3].set_title('按年龄段(男性)划分的设备型号受欢迎程度', fontsize=20)
df_male_devices.plot(kind='bar', x='Age Range', ax=axes[3])
axes[3].set_xlabel('年龄组', fontsize=16)
axes[3].set_ylabel('数量', fontsize=16)
axes[3].tick_params(axis='x', rotation=0)
axes[3].grid(True, linestyle='--', alpha=0.3)

plt.tight_layout(pad=3)
plt.show()

import seaborn as sns
import matplotlib.pyplot as plt
import pandas as pd

# 创建一个2x2的子图网格
fig, axes = plt.subplots(2, 2, figsize=(24, 18))
axes = axes.flatten()  # 展平以便于索引:从axes[0]到axes[5]

# 子图1:
axes[0].set_title('按年龄范围划分的用户数量', fontsize=20)
sns.countplot(data=df, x='Age Range', ax=axes[0])
axes[0].set_xlabel('年龄组', fontsize=16)
axes[0].set_ylabel('用户数量', fontsize=16)
axes[0].tick_params(axis='x', rotation=45)
axes[0].grid(True, linestyle='--', alpha=0.3)

# 子图2:
axes[1].set_title('男性和女性平均每日应用使用时长(分钟)', fontsize=20)
sns.countplot(x='User Behavior Class', hue='Operating System', data=df, palette='deep', ax=axes[1])
axes[1].set_xlabel('用户行为类别', fontsize=16)
axes[1].set_ylabel('用户数量', fontsize=16)
axes[1].tick_params(axis='x', rotation=45)
axes[1].grid(True, linestyle='--', alpha=0.3)

# 子图3:
# 用于平均应用使用时长的透视表
pivot_app_usage = df.pivot_table(
    index='Gender',
    columns='Operating System',
    values='App Usage Time (min/day)',
    aggfunc='mean',
    fill_value=0
)
axes[2].set_title('按性别和操作系统划分的平均应用使用时长', fontsize=20)
sns.heatmap(pivot_app_usage, annot=True, fmt=".1f", cmap='YlGnBu', ax=axes[2])
axes[2].set_xlabel('操作系统', fontsize=16)
axes[2].set_ylabel('设备型号', fontsize=16)

# 子图4:
# 用于平均应用使用时长的透视表
pivot_app_usage = df.pivot_table(
    index='Device Model',
    columns='Operating System',
    values='App Usage Time (min/day)',
    aggfunc='mean',
    fill_value=0
)
axes[3].set_title('按设备型号和操作系统划分的平均应用使用时长', fontsize=20)
sns.heatmap(pivot_app_usage, annot=True, fmt=".1f", cmap='YlGnBu', ax=axes[3])
axes[3].set_xlabel('操作系统', fontsize=16)
axes[3].set_ylabel('设备型号', fontsize=16)
axes[3].tick_params(axis='x', rotation=45)
axes[3].grid(True, linestyle='--', alpha=0.3)

plt.tight_layout(pad=3)
plt.show()

四、研究结论

本研究通过对移动设备使用数据的分析,得出以下结论:

  1. 不同性别和年龄段用户的设备型号和操作系统偏好

    • 男性用户偏向选择安卓系统的设备,而女性用户更偏爱iOS系统。
    • 年龄较小的用户(18-24岁)更倾向于选择品牌认可度高的设备,例如iPhone或三星Galaxy系列,而年龄稍长的用户在选择设备时则更关注性价比和功能性。
  2. 用户行为类别与设备使用的关系

    • 在较高频率使用的用户中,屏幕开启时间和电池消耗较高,表明该群体对设备性能和续航有较高需求。
    • 极端使用类别的用户往往应用程序使用时长显著高于其他类别,这部分用户可能需要更高的存储容量和数据处理能力。
  3. 年龄段和性别在使用模式上的差异

    • 年轻用户(18-34岁)在数据消耗、屏幕开启时间和应用使用时长上显著高于年长用户。尤其是年轻男性用户在游戏类和社交类应用上的活跃度最高,而女性用户在生活服务类和社交类应用上的使用频次较高。
    • 老年用户(45岁以上)对应用使用时间的要求较低,但他们在使用新闻和健康类应用时表现出较高的兴趣。
  4. 流量消耗与电池使用之间的相关性

    • 数据显示,用户的流量使用量和电池消耗量之间存在显著的正相关关系。尤其是在重度使用者中,这一关系更加显著,表明电池续航和流量套餐的设计对于高频使用者来说尤为重要。
  5. 品牌忠诚度

    • 各年龄段的用户在设备品牌上表现出不同程度的忠诚度。Z世代(18-24岁)的用户对苹果设备表现出更高的忠诚度,而千禧一代则在三星和小米设备上表现出一定的品牌忠诚。

综上所述,本研究通过数据分析展示了移动设备用户的使用偏好和行为模式,不仅揭示了不同群体在移动设备使用上的差异,也为应用开发、运营管理和设备设计提供了参考依据。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/903357.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

vue-echarts使用

vue-echarts使用 排名柱状图示例代码 汇总示例代码 平均时效示例代码 全图 排名柱状图 示例 代码 // 排名趋势<!-- 排名数据趋势图 --><div class"rank"><div class"rank_title"><div class"rank_title_left"><spa…

华为云企业门户EWP SSL证书安装指南

一、申请 SSL 证书 在华测 Ctimall 网站&#xff08;SSL证书_域名ssl证书 - CTI华测检测官方商城&#xff09;申请 SSL 证书后&#xff0c;您将会收到一个压缩文件。该压缩文件包含四种证书格式&#xff0c;分别为&#xff1a;Tomcat、Nginx、IIS、Apache。其中&#xff0c;在 …

Docker 部署MongoDb

1. 编写docker-compose.conf 文件 version: 3 services:mongo:image: mongo:latest # 指定 MongoDB 版本&#xff0c;确保 > 3.6container_name: mongo-replicarestart: alwayscommand: ["mongod", "--replSet", "rs0", "--oplogSize&…

告别局域网限制:宝塔FTP结合内网穿透工具实现远程高效文件传输

文章目录 前言1. Linux安装Cpolar2. 创建FTP公网地址3. 宝塔FTP服务设置4. FTP服务远程连接小结 5. 固定FTP公网地址6. 固定FTP地址连接 前言 本文主要介绍宝塔FTP文件传输服务如何搭配内网穿透工具&#xff0c;实现随时随地远程连接局域网环境搭建的宝塔FTP文件服务并进行文件…

Qt/C++地图雷达扫描/动态扇形区域/标记线实时移动/轮船货轮动态轨迹/雷达模拟/跟随地图缩放

一、前言说明 地图雷达扫描的需求场景也不少&#xff0c;很多人的做法是直接搞个覆盖层widget&#xff0c;在widget上绘制雷达&#xff0c;优缺点很明显&#xff0c;优点是性能高&#xff0c;毕竟直接在widget上绘制性能明显比js中绘制要高&#xff0c;缺点是要么动态计算经纬…

Springboot集成阿里云通义千问(灵积模型)

我这里集成后&#xff0c;做成了一个工具jar包&#xff0c;如果有不同方式的&#xff0c;欢迎大家讨论&#xff0c;共同进步。 集成限制&#xff1a; 1、灵积模型有QPM(QPS)限制&#xff0c;每个模型不一样&#xff0c;需要根据每个模型适配 集成开发思路&#xff1a; 因有…

【CSS】入门详解

你是否曾经浏览网页时&#xff0c;被一些网站精美的布局、炫酷的动画和赏心悦目的色彩所吸引&#xff1f;这背后神奇的力量就是 CSS&#xff08;层叠样式表&#xff09;。CSS 就像网页的化妆师&#xff0c;它负责网页的样式和布局&#xff0c;让原本枯燥的 HTML 结构变得生动有…

【论文分享】HashGAT-VCA:一种结合哈希函数和图注意力网络的矢量元胞自动机模型,用于城市土地利用变化模拟

本文考虑地块内部异质性&#xff0c;提出一个结合哈希函数和图注意力网络&#xff08;GAT&#xff09;的矢量元胞自动机&#xff08;VCA&#xff09;方法&#xff0c;用于研究城市土地利用变化&#xff1b;并将该模型应用于模拟深圳市2009年至2012年的城市土地利用变化&#xf…

二十、Innodb底层原理与Mysql日志机制深入剖析

文章目录 一、MySQL的内部组件结构1、Server层1.1、连接器1.2、查询缓存1.3、分析器1.4、优化器1.5、执行器 2、存储引擎层 二、Innodb底层原理与Mysql日志机制1、redo log重做日志关键参数2、binlog二进制归档日志2.1、binlog日志文件恢复数据 3、undo log回滚日志4、错误日志…

安全芯片 OPTIGA TRUST M 使用介绍与示例(基于STM32裸机)

文章目录 目的资料索引硬件电路软件框架介绍数据存储框架移植框架使用 使用示例示例地址与硬件连接通讯测试功能测试 总结 目的 OPTIGA TRUST M 是英飞凌推出的安全芯片&#xff0c;芯片通提供了很多 slot &#xff0c;用于存放各类安全证书、密钥、用户数据等&#xff0c;内置…

10. NSTableView Table 数据表格

表格是非常重要和复杂的一个控件&#xff0c;本节会用大量篇幅来把表格这东西力求讲清楚。 基本设置 表格结构 表格是 OS X 组件中为数不多采用了MVC设计模式来实现的控件&#xff0c;即tableView–dataSource–Delegate&#xff0c;这种分层架构给处理数据带来了极大的便利…

控制流与循环:掌握程序的基本控制(2/10)

目录 控制流与循环&#xff1a;掌握程序的基本控制&#xff08;2/10&#xff09; 介绍 条件语句 基本用法 示例&#xff1a;判断用户输入的数字 条件语句中的逻辑运算符 示例&#xff1a;判断年龄阶段 循环结构 for 循环 示例 1&#xff1a;遍历列表 示例 2&#xf…

Python酷库之旅-第三方库Pandas(173)

目录 一、用法精讲 796、pandas.Float32Dtype类 796-1、语法 796-2、参数 796-3、功能 796-4、返回值 796-5、说明 796-6、用法 796-6-1、数据准备 796-6-2、代码示例 796-6-3、结果输出 797、pandas.Float64Dtype类 797-1、语法 797-2、参数 797-3、功能 797-…

linux查看系统架构的命令

两种方式&#xff0c;以下以中标麒麟为示例&#xff1a; 1.cat /proc/verison Linux version 3.10.0-862.ns7_4.016.mips64el mips64el即为架构 2.uname -a 输出所有内容 Linux infosec 3.10.0-862.ns7_4.016.mips64el #1 SMP PREEMPT Mon Sep 17 16:06:31 CST 2018 mips64el…

第J8周:Inception v1算法实战与解析

>- **&#x1f368; 本文为[&#x1f517;365天深度学习训练营]中的学习记录博客** >- **&#x1f356; 原作者&#xff1a;[K同学啊]** &#x1f4cc; 本周任务&#xff1a; 1了解并学习图2中的卷积层运算量的计算过程&#xff08;&#x1f3d0;储备知识->卷积层运算…

内网穿透之网络层ICMP隧道

免责申明 本文仅是用于学习检测自己搭建的靶场环境有关ICMP隧道原理和攻击实验,请勿用在非法途径上,若将其用于非法目的,所造成的一切后果由您自行承担,产生的一切风险和后果与笔者无关;本文开始前请认真详细学习《‌中华人民共和国网络安全法》‌及其所在国家地区相关法规…

提升网站流量和自然排名的SEO基本知识与策略分析

内容概要 在当今数字化时代&#xff0c;SEO&#xff08;搜索引擎优化&#xff09;成为加强网站可见度和提升流量的重要工具。SEO的基础知识包括理解搜索引擎的工作原理&#xff0c;以及如何通过优化网站内容和结构来提高自然排名。白帽SEO和黑帽SEO代表了两种截然不同的策略&a…

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-27

计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-27 目录 文章目录 计算机前沿技术-人工智能算法-大语言模型-最新研究进展-2024-10-27目录1. Large Language Model-based Augmentation for Imbalanced Node Classification on Text-Attributed Graphs摘要研究背…

耳背式助听器与定制式助听器,究竟该如何选?

在面对听力损失问题时&#xff0c;选择一款合适的助听器至关重要。目前&#xff0c;耳背式助听器和定制式助听器是比较常见的两种类型&#xff0c;很多人在二者之间犹豫不决。那么&#xff0c;到底应该怎么选呢&#xff1f; 一、耳背式助听器的特点 耳背式助听器形状类似香蕉&a…

论文阅读 - Pre-trained Online Contrastive Learning for Insurance Fraud Detection

Pre-trained Online Contrastive Learning for Insurance Fraud Detection| Proceedings of the AAAI Conference on Artificial Intelligence 目录 摘要 Introduction Methodology Problem Formulation Pre-trained Model for Enhanced Robustness Detecting Network a…