导入自己的听歌时长数据,统计每周听歌总时长,输出音乐风格偏好分析。

1. 实际应用场景描述

场景

某音乐爱好者使用音乐平台听歌,并导出自己的听歌记录(日期、歌曲名、歌手、音乐风格、听歌时长)。他希望:

- 统计每周听歌总时长

- 分析音乐风格偏好

- 根据数据调整歌单,发现更多喜欢的音乐

痛点

- 手动统计每周听歌时长耗时

- 难以直观看出音乐风格偏好

- 缺乏自动化分析,依赖主观感受

2. 核心逻辑讲解

1. 输入:日期、歌曲名、歌手、音乐风格、听歌时长(分钟)

2. 统计:

- 按周汇总总听歌时长

- 按周和音乐风格汇总时长

3. 分析:找出每周最受欢迎的音乐风格

4. 输出:每周听歌时长报告与风格偏好分析

3. 代码模块化设计

我们将代码分为:

-

"data_loader.py":数据加载模块

-

"analysis.py":统计分析模块

-

"recommendation.py":偏好分析模块

-

"main.py":主程序入口

3.1

"data_loader.py"

# data_loader.py

import json

def load_listening_data(file_path="listening_data.json"):

"""

从JSON文件加载听歌记录

格式: [{"date": "2024-06-01", "song": "歌名", "artist": "歌手", "genre": "风格", "minutes": 3.5}, ...]

"""

try:

with open(file_path, "r", encoding="utf-8") as f:

data = json.load(f)

return data

except FileNotFoundError:

print(f"文件 {file_path} 未找到,使用示例数据")

return [

{"date": "2024-06-01", "song": "光年之外", "artist": "G.E.M.", "genre": "流行", "minutes": 4.0},

{"date": "2024-06-01", "song": "泡沫", "artist": "G.E.M.", "genre": "流行", "minutes": 3.5},

{"date": "2024-06-02", "song": "演员", "artist": "薛之谦", "genre": "流行", "minutes": 4.2},

{"date": "2024-06-03", "song": "蓝色多瑙河", "artist": "约翰·施特劳斯", "genre": "古典", "minutes": 5.0},

{"date": "2024-06-04", "song": "Shape of You", "artist": "Ed Sheeran", "genre": "流行", "minutes": 3.8}

]

3.2

"analysis.py"

# analysis.py

from collections import defaultdict

from datetime import datetime

def weekly_total_minutes(records):

"""

按周统计总听歌时长

:param records: list of dict

:return: dict {week_number: total_minutes}

"""

weekly_total = defaultdict(float)

for r in records:

date_obj = datetime.strptime(r["date"], "%Y-%m-%d")

week_num = date_obj.isocalendar()[1]

weekly_total[week_num] += r["minutes"]

return weekly_total

def weekly_genre_minutes(records):

"""

按周和音乐风格统计时长

:param records: list of dict

:return: dict {week_number: {genre: minutes}}

"""

weekly_genre = defaultdict(lambda: defaultdict(float))

for r in records:

date_obj = datetime.strptime(r["date"], "%Y-%m-%d")

week_num = date_obj.isocalendar()[1]

weekly_genre[week_num][r["genre"]] += r["minutes"]

return weekly_genre

3.3

"recommendation.py"

# recommendation.py

def analyze_preference(weekly_genre):

"""

分析每周音乐风格偏好

:param weekly_genre: dict {week: {genre: minutes}}

:return: list of str

"""

analysis_result = []

for week, genres in weekly_genre.items():

if not genres:

continue

top_genre = max(genres.items(), key=lambda x: x[1])

total = sum(genres.values())

ratio = top_genre[1] / total

analysis_result.append(

f"第{week}周最偏好的音乐风格是「{top_genre[0]}」,占比{ratio:.1%}"

)

return analysis_result

3.4

"main.py"

# main.py

from data_loader import load_listening_data

from analysis import weekly_total_minutes, weekly_genre_minutes

from recommendation import analyze_preference

def main():

print("=== 听歌时长统计与音乐风格偏好分析系统 ===")

records = load_listening_data()

weekly_total = weekly_total_minutes(records)

weekly_genre = weekly_genre_minutes(records)

print("\n📊 每周听歌总时长:")

for week, mins in sorted(weekly_total.items()):

print(f"第 {week} 周: {mins:.1f} 分钟")

print("\n🎵 每周音乐风格偏好分析:")

preferences = analyze_preference(weekly_genre)

for pref in preferences:

print(f" - {pref}")

if __name__ == "__main__":

main()

4. README.md

# 听歌时长统计与音乐风格偏好分析系统

## 项目简介

基于Python的音乐听歌记录分析工具,帮助统计每周听歌总时长并分析音乐风格偏好。

## 功能

- 导入听歌记录(JSON格式)

- 按周统计总听歌时长

- 按周分析音乐风格偏好

- 输出偏好报告

## 安装与使用

1. 确保已安装 Python 3.7+

2. 准备 `listening_data.json` 数据文件(或使用内置示例数据)

3. 运行 `python main.py`

## 数据格式示例 (listening_data.json)

json

[

{"date": "2024-06-01", "song": "光年之外", "artist": "G.E.M.", "genre": "流行", "minutes": 4.0}

]

## 模块说明

- `data_loader.py`: 数据加载

- `analysis.py`: 统计分析

- `recommendation.py`: 偏好分析

- `main.py`: 主程序

5. 使用说明

1. 创建

"listening_data.json" 文件,按示例格式填写听歌记录

2. 运行:

python main.py

3. 查看控制台输出的每周听歌时长及风格偏好分析

6. 核心知识点卡片

知识点 说明

JSON数据处理 读写结构化数据

datetime模块 解析日期并计算ISO周数

defaultdict 高效分组统计

字典操作 存储与查询统计数据

模块化设计 便于维护与扩展

条件分支分析 业务规则驱动偏好分析

大数据预处理 真实场景可用Pandas处理千万级听歌记录

7. 总结

本项目通过模块化Python编程,解决了音乐听歌数据分析的痛点:

- 自动化:一键统计每周听歌时长

- 智能化:自动分析音乐风格偏好

- 可扩展:可接入音乐平台API实现实时数据获取

未来可结合协同过滤算法或NLP分析歌词情感,实现更精准的个性化推荐,打造真正的个人音乐智能管家。

如果你愿意,可以把这个系统升级成带GUI的桌面应用(Tkinter/PyQt)或者Web版(Flask + ECharts),并增加歌词情感分析功能,让推荐更符合你的心情。

利用AI高效解决实际问题,如果你觉得这个工具好用,欢迎关注我!

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python基于Web技术的智能养老管理系统

目录基于Web技术的智能养老管理系统摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!基于Web技术的智能养老管理系统摘要 随着人口老龄化加剧,传统养老模式面临资源分配不均、…

python基于大数据文化产业发展智能分析系统

目录基于大数据文化产业发展智能分析系统的摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!基于大数据文化产业发展智能分析系统的摘要 随着文化产业的快速发展,大数据技术成…

MySQL面试中,锁机制必问的5大问题!

文章目录MySQL中有哪几种锁?引言:为什么我们要聊锁?第一部分:MySQL中的锁类型1. 表级锁(Table Lock)示例:MyISAM 表的表级锁配置建议2. 行级锁(Row Lock)示例&#xff1a…

Questions for the Technical Advisory Board - 2

Elections 选举 Williams then posed a question to his fellow TAB members: with the (recently closed) TAB election, what do they want to see next year? What should the TAB be looking at? And for the non-TAB audience members: what conversations can the TAB…

前馈/反馈控制是什么

前馈/反馈控制是什么 在航天工程中,卫星姿态控制系统(Attitude Control System, ACS)是确保卫星正确指向、稳定运行和完成任务的核心子系统。无论是对地观测卫星精确对准地球表面,还是通信卫星将天线指向地面站,亦或是…

2025年市面上有实力的尘埃粒子计数器源头厂家排行榜,在线式粒子计数器/尘埃粒子检测仪供应厂家电话 - 品牌推荐师

随着工业4.0与智能制造的深度推进,洁净环境监测需求呈现爆发式增长。尘埃粒子计数器作为洁净车间、半导体制造、生物医药等领域的核心检测设备,其技术精度与稳定性直接影响生产质量与合规性。然而,市场鱼龙混杂,部…

2025年市场技术好的楼板搭建公司推荐,现浇楼梯/楼板现浇/钢筋混凝土现浇/现浇搭建/楼梯现浇,楼板搭建报价口碑推荐 - 品牌推荐师

随着城市化进程加速,楼板搭建作为建筑结构改造的核心环节,需求量持续攀升。然而,行业准入门槛低、施工标准参差不齐等问题,导致市场鱼龙混杂。业主在选择服务商时,往往面临“低价陷阱”“工期拖延”“质量隐患”等…

小程序 智能ai技术的基于Spring Boot的宠物(狗)健康管理的设计与实现

目录摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 随着宠物经济的快速发展,宠物健康管理需求日益增长。基于Spring Boot框架和智能AI技术,设计并实现了一…

全网最全自考必看!10款AI论文工具测评TOP10

全网最全自考必看!10款AI论文工具测评TOP10 2026年自考论文写作工具测评:为何需要这份榜单? 随着人工智能技术的不断进步,AI论文工具在学术写作中的应用越来越广泛。对于自考学生而言,撰写高质量论文不仅是学业要求&am…

【开题答辩全过程】以 基于微信小程序健康跑平台的设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

python网络招聘信息分析系统的设计与实现 boss直聘 爬虫 技术的猎聘数据可视化分析

目录摘要开发技术路线相关技术介绍核心代码参考示例结论源码lw获取/同行可拿货,招校园代理 :文章底部获取博主联系方式!摘要 随着互联网招聘平台的普及,网络招聘信息分析系统成为企业招聘和求职者决策的重要工具。基于Python的网络招聘信息分…

【开题答辩全过程】以 基于Android的高校员工考勤系统的设计与实现为例,包含答辩的问题和答案

个人简介一名14年经验的资深毕设内行人,语言擅长Java、php、微信小程序、Python、Golang、安卓Android等开发项目包括大数据、深度学习、网站、小程序、安卓、算法。平常会做一些项目定制化开发、代码讲解、答辩教学、文档编写、也懂一些降重方面的技巧。感谢大家的…

SKF轴承动力学仿真信号分析代码功能说明

ANSYS WORKBENCH轴承动力学仿真,ANSYS做内圈、外圈和滚子故障的模拟图片为凯斯西储大学SKF轴承内外圈故障的结果,振动加速度包络后故障特征频率可以与实验相差仅为5%。一、代码整体概述 本次分析的代码集源自SKF轴承动力学仿真模型,包含3个核…

URL地址末尾加不加”/“有什么区别

URL 结尾是否带 / 主要影响的是 服务器如何解析请求 以及 相对路径的解析方式,具体区别如下:1. 基础概念URL(统一资源定位符) :用于唯一标识互联网资源,如网页、图片、API等。目录 vs. 资源:以 …

珲春好吃的烤肉哪家好吃

珲春好吃的烤肉,延炭乳酸菌烤肉不容错过在珲春,烤肉是当地美食文化的重要组成部分,众多烤肉店各有特色。而延炭乳酸菌烤肉凭借其独特的健康理念和美味菜品脱颖而出,成为食客们的心头好。主打健康,腌制独特延炭乳酸菌烤…

AI数据报告产品在文旅景区运营中的实践与技术搭建

AI数据报告产品在文旅景区运营中的实践与技术搭建pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas",…

【小程序毕设源码分享】基于springboot+微信小程序的面向小学生的阅读交流系统的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

【小程序毕设全套源码+文档】基于微信小程序的学生定位考勤系统设计与实现(丰富项目+远程调试+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

2026 年水质检测仪采购清单:手持式、台式、固定式设备品牌全解析 - 品牌推荐大师1

2026年水质检测仪采购清单:手持式、台式、固定式设备品牌全解析 随着全球对水资源安全与环境保护重视程度的不断提升,水质检测技术已从实验室走向现场、从人工走向自动化。在当前市场中,水质检测仪种类繁多,功能各…

【小程序毕设源码分享】基于springboot+微信小程序的上门做菜预定服务平台的设计与实现(程序+文档+代码讲解+一条龙定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…