为你完整设计一个每日玩手机时长分析与沉迷检测系统,结合大数据与智能管理课程的思想,从场景到代码、从模块到文档,全部覆盖。
1. 实际应用场景 & 痛点引入
场景
你是一名关注健康与效率的人,想记录自己每天的手机使用时长(小时),并分析:
- 每周平均每天玩多久手机?
- 是否有沉迷风险(每天超过 5 小时)?
- 根据数据给出健康建议。
痛点
- 手机自带的使用统计分散,不易长期跟踪。
- 手动计算周均值和沉迷天数很麻烦。
- 缺乏自动化的健康提醒与建议。
2. 核心逻辑讲解
1. 数据获取
- 输入每日手机使用时长(CSV/Excel),字段包括:
"date"(日期)、
"usage_hours"(使用时长,单位:小时)。
2. 数据清洗
- 确保时长为数值类型,去除无效数据。
3. 统计分析
- 计算每周平均使用时长(按自然周分组)。
- 统计每天超过 5 小时的天数。
4. 沉迷判断与建议
- 如果某天 > 5 小时 → 标记为“沉迷日”。
- 根据沉迷天数给出健康建议。
5. 输出结果
- 打印每周平均时长、沉迷天数、建议。
- 可选:保存结果到 CSV。
3. 代码实现(模块化 + 注释)
目录结构
phone_usage_analysis/
├── data/
│ └── usage.csv
├── output/
├── analysis.py
├── utils.py
├── README.md
└── requirements.txt
"requirements.txt"
pandas>=1.5.0
"utils.py"(工具函数)
import pandas as pd
def load_usage_data(file_path):
"""
加载手机使用时长 CSV 文件
:param file_path: CSV 文件路径
:return: DataFrame
"""
df = pd.read_csv(file_path)
# 确保使用时长为数值类型
df['usage_hours'] = pd.to_numeric(df['usage_hours'], errors='coerce')
return df
def clean_data(df):
"""
清洗数据:删除使用时长为空的行
:param df: DataFrame
:return: 清洗后的 DataFrame
"""
return df.dropna(subset=['usage_hours'])
"analysis.py"(主分析逻辑)
import pandas as pd
from utils import load_usage_data, clean_data
def analyze_phone_usage(file_path, addiction_threshold=5):
# 1. 加载数据
df = load_usage_data(file_path)
df = clean_data(df)
# 2. 添加星期信息
df['date'] = pd.to_datetime(df['date'])
df['week'] = df['date'].dt.isocalendar().week
# 3. 计算每周平均使用时长
weekly_avg = df.groupby('week')['usage_hours'].mean()
# 4. 判断沉迷天数
df['is_addicted'] = df['usage_hours'] > addiction_threshold
addicted_days = df['is_addicted'].sum()
# 5. 输出结果
print("每周平均手机使用时长(小时):")
for week, avg in weekly_avg.items():
print(f"第 {week} 周: {avg:.2f} 小时")
print(f"\n沉迷天数(> {addiction_threshold} 小时/天): {addicted_days} 天")
# 6. 给出建议
if addicted_days > 3:
advice = "警告:你近期手机使用时间较长,建议减少非必要使用,增加运动与线下社交。"
elif addicted_days > 0:
advice = "注意:部分天数手机使用偏多,建议合理规划时间,避免影响休息与学习工作。"
else:
advice = "恭喜!你的手机使用习惯良好,请继续保持。"
print(f"\n建议: {advice}")
# 7. 保存结果
result_df = pd.DataFrame({
'week': weekly_avg.index,
'avg_usage_hours': weekly_avg.values,
'addicted_days': [addicted_days] * len(weekly_avg)
})
result_df.to_csv('../output/usage_summary.csv', index=False)
print("\n分析结果已保存到 output/usage_summary.csv")
if __name__ == "__main__":
analyze_phone_usage('../data/usage.csv', addiction_threshold=5)
4.
"README.md"
# 手机使用时长分析与沉迷检测系统
## 功能
- 导入每日手机使用时长数据
- 统计每周平均使用时长
- 判断是否沉迷(超过5小时/天)
- 给出健康建议
- 保存结果到 CSV
## 环境依赖
- Python 3.8+
- pandas
## 安装
bash
pip install -r requirements.txt
## 使用
1. 将数据放入 `data/usage.csv`,格式如下:
date,usage_hours
2025-12-01,4.5
2025-12-02,6.2
2025-12-03,3.8
...
2. 运行分析脚本:
bash
python analysis.py
3. 查看终端输出的每周平均时长、沉迷天数和建议,并在 `output/` 目录查看保存的 CSV 文件。
## 作者
全栈开发工程师 & 技术布道者
5. 核心知识点卡片
知识点 说明
Pandas 数据加载
"pd.read_csv()" 读取 CSV,
"to_numeric" 转换类型
数据清洗
"dropna()" 删除缺失值,保证分析准确性
时间处理
"pd.to_datetime()" 转换日期,
"dt.isocalendar().week" 获取周数
分组聚合
"groupby().mean()" 计算周均值
条件标记
"df['col'] > threshold" 标记沉迷日
数据保存
"to_csv()" 将结果保存为 CSV
模块化设计 工具函数与主逻辑分离,便于维护
6. 总结
本项目展示了如何用 Python 快速构建一个手机使用时长分析与沉迷检测工具,结合了:
- 大数据处理思想(数据清洗、分组聚合)
- 智能管理应用(健康监测与行为干预)
- 全栈开发实践(模块化、文档化、可扩展性)
通过这个小项目,你可以:
- 掌握 Pandas 数据处理与时间序列分析的核心方法
- 学会用简单条件判断实现业务逻辑
- 理解如何将原始数据转化为可行动的洞察
- 为后续接入手机 API、Web 前端、健康管理平台打下基础
如果你需要,可以生成一个示例 CSV 手机使用时长数据文件,这样你可以直接运行代码看到效果。
利用AI高效解决实际问题,如果你觉得这个工具好用,欢迎关注我!