用Python分析Spotify听歌数据:从年度报告到完整行为洞察
第一次打开我的Spotify年度报告时我盯着那个“听了上千遍”的数字看了好几遍第一反应是统计出了bug。后来我索性把StreamingHistory文件导出来用Python分析Spotify听歌数据才明白数据不会骗人记忆才会。年度报告只会告诉你流媒体平台想让你看的高光时刻而原始JSON里藏着完整的行为轨迹——凌晨三点反复循环的那首歌、通勤路上雷打不动播放的播客、某个艺术家的作品被你完整丢进了收藏但从未播放过。这篇文章写给所有想认真审视自己听歌习惯的人无论你是只想看看TOP 10歌单的入门玩家还是想做完整分析报告的数据爱好者都能从中找到可以直接复用的代码和思路。很多人以为导出Spotify数据是个很麻烦的事其实官方早就提供了标准入口只是藏得比较深。整个流程加上等待时间大约需要三到五天拿到手的是几个JSON文件用Python跑一遍几乎所有你想知道的“听歌秘密”都能挖出来。下面我会从数据导出、字段解析、关键指标计算、时间维度洞察、艺术家比较到可视化呈现一步步带你走完整条链路。1. 为什么个人数据比年度报告更值得挖掘1.1 年度报告的局限只有高光没有过程年度报告这类总结本质上是一份营销产品它精心挑选了最亮眼的数据展示给你目的是让你愿意分享到社交平台。真正的问题在于它不会告诉你中途切掉了多少首歌不会告诉你某个曲目其实只在背景里被误触播放了两分钟也不会透露你循环最多次的歌究竟是在什么情绪下听的。有一次我在整理数据时发现某个冷门乐队的歌在我年度报告里根本排不上号但在原始记录中它的年播放时长占据了接近三成。原因是我的播放习惯是整夜播放助眠音乐列表这个乐队恰好排在夜间列表的头部单次播放就达到几十秒以上。年度报告在计算这类数据时有自己的加权规则而我们拿到原始数据后完全可以按自己的规则重新计算。1.2 从“看到结果”到“理解原因”的升级原始StreamingHistory文件记录的是每一次播放行为的完整日志曲目名、艺术家、播放结束时间、实际播放时长毫秒。有了这张表你可以回答很多年度报告答不了的问题一周里哪一天你最专注听歌工作日和周末的品味有明显差异吗深夜时段的循环播放到底是失眠还是派对你的常驻播放列表里有多少歌是真正听完的多少被中途切掉某一艺术家的作品你真的常听还是只是收藏了从来没点开这些问题的答案都在数据里。我做完一遍完整分析之后最大的感受是听歌习惯比性格测试更诚实它记录的是你独处时的真实状态。1.3 适合谁来操作如果你是数据分析的新手这篇文章的代码量控制得很少主要依赖pandas和matplotlib两个库几分钟就能跑完。如果你平时不写代码也可以照着操作步骤复制粘贴拿到结果之后再学着理解每个数字的含义。如果本身有Python基础建议直接跳到第3章后面代码可以直接整合进你自己的分析脚本里。2. 导出Spotify个人数据的完整流程与文件结构2.1 官方导出入口与等待周期我开始的第一步是在账户页面找到隐私设置里的“下载你的数据”按钮。路径通常是账户设置 → 隐私选项 → 请求数据 → 选择完整数据包。填完之后Spotify会往注册邮箱发一封确认邮件点击之后进入排队流程。我实测下来等待时间从几个小时到两三天不等偶尔遇到高并发时段可能拖到一周这一点要有心理准备。需要注意的是下载链接有时效性通常是两天内有效过期需要重新申请。我身边就有朋友因为忘记及时下载又得从头排队。申请成功后会收到几封邮件其中一封包含ZIP下载地址解压后能看到多个文件夹和文件。2.2 解压后的文件布局与核心JSON说明解压后的目录大致长这样MyData/ ├── Identity/ ├── MyData/ │ ├── StreamingHistory0.json │ ├── StreamingHistory1.json │ ├── ... │ ├── Playlist1.json │ ├── ... │ ├── SearchQueries.json │ ├── Userdata.json │ └── ...真正值得先关注的就是StreamingHistory开头的文件。它们是按时间段分片导出的每个人拿到的文件数量和尺寸不同有的用户有十几片有的只有两三片。每片的数据结构完全一致都是JSON数组后续只要合并所有分片即可。Playlist开头的文件记录了你创建的播放列表用途相对其次。SearchQueries.json记录的是搜索记录做个性化分析时可以作为辅助信号但核心还是StreamingHistory。2.3 StreamingHistory核心字段的含义打开任意一个StreamingHistory文件每条记录长这样{ endTime: 2024-03-15 14:32:10, artistName: Some Artist, trackName: Some Track, msPlayed: 245000 }四个字段各有讲究我整理成表格方便对照字段类型含义注意事项endTime字符串本次播放结束的时间点格式是“年-月-日 时:分:秒”时区归属需要额外判断artistName字符串艺术家名称可能出现大小写不统一影响聚合统计trackName字符串曲目名称同名歌曲不同版本会被合并需要清洗msPlayed整数本次播放的实际时长单位是毫秒不是秒很多人第一次算错就栽在这里3. 用pandas把JSON流式记录变成可分析的数据集3.1 加载与合并多个分片拿到数据的第一步是把所有StreamingHistory文件读进来并合并成一个DataFrame。用glob匹配文件名是最省事的方式不用手写每个文件名import json import glob import pandas as pd files glob.glob(StreamingHistory*.json) records [] for f in files: with open(f, r, encodingutf-8) as fp: records.extend(json.load(fp)) print(f共加载 {len(records)} 条听歌记录) df pd.DataFrame(records)这里有个容易忽略的点打开文件必须带encodingutf-8。部分平台在下载时会把文件编码处理成带BOM的UTF-8如果直接打开会报错加上参数之后一般都能解决。我遇到过更极端的场景某些记录里有异常字符用errorsignore可以跳过。3.2 时间字段和时长字段的预处理原始数据的endTime是字符串必须转成pandas的时间戳类型才能做月份、小时、星期之类的时间分析。msPlayed是整数毫秒直接除以1000得到秒数再除以60得到分钟除以3600000得到小时。这一步看似简单但单位换算错误会让后面的所有数字都差出数量级。df[endTime] pd.to_datetime(df[endTime]) df[msPlayed] df[msPlayed].astype(int) df[seconds] df[msPlayed] / 1000 df[minutes] df[seconds] / 60 df[hours] df[minutes] / 60做完这些预处理df已经是标准的分析表了。我习惯先做一层基础结构检查print(df.shape) print(df.isnull().sum()) print(df.dtypes)确认没有大面积缺失值后再继续。这里的缺失主要包括artistName和trackName为空的情况占比极小可以按行直接删除因为缺失这些字段没有分析价值。3.3 识别播放行为的有效程度Spotify记录msPlayed时是真实播放时长不是文件总时长。这意味着被切掉的歌会留下很短的duration比如5秒、10秒。在计算“真正常听的曲目”时建议设置一个过滤阈值比如只保留msPlayed大于3000030秒的记录把误触和切歌的杂音滤掉。df_valid df[df[msPlayed] 30000]这个阈值不要设太高否则会丢掉很多真实收听场景。比如有些爵士钢琴曲本来就是2分钟的短曲整曲播放也不到30秒的2倍。我试过50000毫秒的效果发现会把一些正常播放的短曲误伤最后回到30000作为默认值。只要在分析前明确说明过滤口径结果就是自洽的。4. 播放量与收听时长的双重度量找到真正的常听4.1 为什么播放次数会骗人只按播放次数排序容易把“被切掉的歌”和“真正听完的歌”混在一起。想象一个场景某天你连着点了三首不喜欢的歌每首听5秒就切掉这批记录都会进入播放次数统计。另一首歌你完整听了3分钟播放次数只有1次但包含的收听时长是前者的36倍。所以要同时看两个指标播放次数和有效收听时长。播放次数体现的是点击冲动收听时长体现的是留存沉浸。两者结合才接近真实的听歌态度。4.2 按曲目聚合计算核心指标对trackName和artistName做分组聚合同时算出播放数、总时长、平均单次时长song_stats (df_valid.groupby([artistName, trackName]) .agg( plays(msPlayed, count), total_ms(msPlayed, sum), avg_ms(msPlayed, mean) ) .sort_values(total_ms, ascendingFalse) .reset_index()) song_stats[total_hours] song_stats[total_ms] / 3600000 song_stats[avg_minutes] song_stats[avg_ms] / 60000看输出结果时我一般先看排序后的前几十行。真正让你意外的是频率不高但单次播放很长的歌曲它们往往代表你集中沉浸的时刻。比如某首9分钟的古典乐播放次数只有8次但总时长已经超过1小时这类数据在年度报告里完全不会显眼。4.3 最常听的艺术家总量视野艺术家的排行更接近“长期品味”的维度。同一个艺术家可能只有两三首歌在循环但累计下来的时长足以排到前三。聚合的方法和歌曲类似只是分组键换成artistNameartist_stats (df[df[msPlayed] 30000] .groupby(artistName) .agg( total_plays(trackName, count), total_ms(msPlayed, sum) ) .sort_values(total_ms, ascendingFalse) .head(20)) artist_stats[total_hours] artist_stats[total_ms] / 3600000这里我没有过滤掉短播放记录因为艺术家维度的噪声没那么大偶尔的5秒误触对总时长影响很轻微。真正值得观察的是排名靠前的艺术家之间的时长差距如果第一名是第二名的数倍说明你的听歌行为高度集中在某几个艺术家身上。4.4 单曲平均播放时长的信号意义平均单次播放时长是一个很有意思的指标。一首歌的平均播放时长为整曲时长的90%以上说明你基本每次都是完整听完的这是代表“真正喜欢”的强信号。反过来平均时长只有30秒左右说明你在刻意跳过它或者这首曲子出现在你不常听的场景里。为了做这个判断可以考虑把歌曲时长作为一个字段提前维护进来或者用外部音乐信息接口补齐。如果不想引入额外数据源直接看avg_minutes的排序也能发现端倪——那些播放次数多、平均时长短的就是典型的口嫌体正直。5. 洞察听歌时段、月度偏好与品味的渐变5.1 时间字段的统一时区陷阱拿到记录后最容易忽略的问题是endTime的时区归属。不同账户端下载的数据时区可能不一样。我在实际处理中发现直接按小时聚合时如果一天的高峰出现在凌晨4点到5点大概率是因为时区没转换实际对应的是本地时间下午4点到5点。判断方法很简单找一个你明确记得在白天某个时刻播放过的曲子看它记录的endTime对应的小时数。如果有偏差就需要做时区转换。以我自己的数据为例把记录按UTC8转换后听歌时间分布才和直觉对得上。df[endTime_utc] pd.to_datetime(df[endTime], utcTrue) df[local_time] df[endTime_utc].dt.tz_convert(Asia/Shanghai) df[hour] df[local_time].dt.hour df[weekday] df[local_time].dt.dayofweek df[month] df[local_time].dt.month df[year] df[local_time].dt.year时区转换不可能全自动化判断对错因为不同用户导出的数据可能来自不同时区。最稳妥的做法是结合自己的记忆设定一个本地时区然后抽查几个记录验证。5.2 全年听歌时长的月度变化按月聚合听歌时长可以看到品味的季节性波动。有的人夏天听歌量断崖下跌冬天回升这通常和作息改变相关。有些人的数据里每年12月的时长会异常偏高因为节假日长途出行多听歌场景自然增加。monthly (df.groupby([year, month]) .agg(total_minutes(minutes, sum)) .reset_index()) monthly[period] monthly[year].astype(str) - monthly[month].astype(str)画出柱状图后如果发现某个月你有断崖式空档大概率不是没听歌而是那段时间用了另一台设备或者另一个账号导致记录没同步回主账号。这是交叉验证时的一个重要线索。5.3 小时分布揭示作息与情绪节奏把每小时听歌时长做聚合能得到你一天的“听歌心率”。我自己的典型分布是上午9点一个高峰、下午5点到7点一个高峰、晚上10点后逐步拉长。这基本复刻了通勤和夜间独处的作息线。更细的玩法是按weekday和hour做交叉表展开成一张7×24的二维矩阵再画出热力图周末早晨8点的高亮说明你有“起床音乐”的习惯工作日深夜的长尾说明睡眠时间偏晚。这类规律一旦被发现带给你的信息量远超年度报告的任何数据。pivot pd.crosstab(df[hour], df[weekday])pivot的行是24小时列是星期一到星期天。把df替换成过滤掉30秒以下短记录的子集之后热力图会更干净。5.4 月度艺术家偏好迁移品味的演化可以按月统计每个月播放时长第一的艺术家再看这些艺术家的更替节奏。如果一整年榜首都没换人说明你的口味非常稳定如果每个月都在换说明正处于探索期。这里有个隐藏信息量很大的观察维度高活跃的新艺术家往往出现在春季和秋季因为大型巡演和新专发布集中在这两个时段数据恰好能反映外部事件对你的影响。6. 艺术家对比与曲目聚类识别专一与游猎6.1 集中度分析你的听歌偏好有多专一我用一个简单粗暴的指标来衡量专一程度排名前5的艺术家时长占总时长的比例。比例超过50%就是极高集中度说明你的听歌行为围绕极少数艺术家展开低于20%则是典型的游猎型听众习惯在不同风格里跳来跳去。top5_share artist_stats.head(5)[total_ms].sum() / df[df[msPlayed] 30000][msPlayed].sum()第一次算出自己的数字时我发现集中度接近40%比我预想的高很多。原因是通勤时我听的是同一批歌单高频重复自然拉高了集中度。这个指标如果用来对比不同账号的数据能直观看出听歌风格的差异。6.2 用时段分群拆解“另一个自己”白天和深夜的听歌偏好可能完全像两个人。我习惯把数据切成工作日白天、工作日深夜、周末白天、周末深夜四组分别跑一遍Top 10艺术家。结果往往差异明显白天是节奏明快的流行曲深夜却沉溺在氛围感十足的低保真音乐里。这种拆解可以直接沿用前面所有代码只需要加一个时间段判断列def time_segment(hour, weekday): if weekday 5: if 6 hour 18: return 工作日白天 return 工作日夜晚 else: if 6 hour 18: return 周末白天 return 周末夜晚 df[segment] df.apply( lambda r: time_segment(r[hour], r[weekday]), axis1 )分组统计之后每组呈现的听歌偏好画像常常是反直觉的尤其能暴露你在深夜隐藏的情绪出口。6.3 同曲名不同版本的合并问题很多歌在不同专辑、现场版、重制版里都有同名记录。比如某首经典单曲可能同时出现在录音室专辑、Acoustic版本和Live版本里它们在StreamingHistory里会显示为三行不同的记录。按trackName直接聚合会分散这些数据导致你误以为没有经常听这首曲子。清洗方案有两种。简单方案是在聚合前把trackName中的“Live”“Remaster”“Acoustic”等关键词统一去掉再归并复杂方案是引入外部音乐库的ISRC码做精确匹配。对绝大多数人来说简单方案已经够用import re def clean_track(name): name re.sub(r\(.*?\), , name) name re.sub(r - (Live|Remaster|Acoustic).*$, , name, flagsre.I) return name.strip() df[track_clean] df[trackName].apply(clean_track)清洗之后再做聚合很多被切碎的隐藏常听歌曲会重新浮出水面。7. 可视化报告与我在实际处理中踩过的坑7.1 图表比数字更会讲故事把统计结果画成图是分享给朋友或复盘时最高效的方式。我常用的四张图分别是每月时长柱状图、每日时段热力图、Top 10艺术家横向条形图、月度艺术家变化堆叠图。每月时长柱状图最简单import matplotlib.pyplot as plt plt.rcParams[font.sans-serif] [SimHei] monthly.plot(xperiod, ytotal_minutes, kindbar, figsize(12, 5)) plt.title(每月听歌总时长) plt.ylabel(分钟) plt.tight_layout() plt.show()中文显示需要提前设置字体否则所有标签都会变成方框。用SimHei或微软雅黑都可以Mac上要用系统自带的中文字体路径。7.2 热力图一眼看懂一周节奏时段热力图适合做成7×24的矩阵用颜色深浅代表播放时长。实现方式可以直接用matplotlib的imshow也可以换用Seaborn的heatmap。配色建议从浅到深的暖色系因为深夜时段的高亮在视觉上更有冲击力。import seaborn as sns pivot pd.crosstab(df[hour], df[weekday], valuesdf[minutes], aggfuncsum) pivot pivot.reindex(indexrange(24), columnsrange(7), fill_value0) sns.heatmap(pivot, cmapYlOrRd, xticklabels[一,二,三,四,五,六,日]) plt.title(一周听歌时长热力图小时×星期) plt.show()做完这张图之后我最大的发现是周三凌晨有一个持续数小时的收听峰值——这完全推翻了原本以为自己总是早睡的认知。7.3 数据口径检查避免“看似合理实则错误”的结论实际处理中我踩过不少坑最有代表性的几个可以列出来你也值得提前避一避。第一个坑是流式记录里混入了播客和广告。有些订阅的播客节目也会进入StreamingHistory它们通常表现为超长时长、artistName是节目名。如果不做过滤你的“艺术家Top 10”里会出现一个从来没正式发过歌的播客名字。过滤方式是在聚合前加一个黑名单或者只保留时长在10分钟以下的记录中对应歌曲类型。第二个坑是大小写不一致导致的分裂。同一个艺术家的名字在不同批次里可能出现过手动修改比如“half.alive”和“Half.Alive”会被统计成两个艺术家。简单方案是统一转小写或首字母大写再手动合并别名。第三个坑是下载数据的时间覆盖范围可能不是一整年。这个尤其重要我拿到过一份只包含最近六个月的流媒体历史一开始月度图表里“前半年零记录”吓了我一跳后来发现是导出时可选日期范围导致的偏差。分析前一定要先看df[year].unique()和df[month].min()确认数据覆盖范围否则所有趋势结论都会失真。7.4 导出后的复查与脚本整理建议拿到下载的ZIP后建议第一时间把ZIP备份到网盘或外部存储因为Spotify的下载链接有时限且重新生成需要再次排队。解压后的文件我习惯在项目目录里分成raw和processed两层raw保持原始命名不动processed存放清洗后的parquet或csv方便反复读取。分析脚本也建议保存下来因为数据下载一般只能手动申请重新排队成本很高。把脚本整理成模板之后后续只要换数据路径就能一键重新生成报告做横向对比非常方便。我自己在最后通常还会多做一步把Top 100歌曲导成一个新的播放列表然后低频循环一个月。这一步不是为了“提升数据好看”而是重新发现那些被时间淹没的老朋友。数据能告诉你的永远是事实本身但让数据重新影响你的生活才是分析最大的价值。

相关新闻

告别 node_modules:scriptc 单文件部署全流程实操,从交叉编译到发布一次跑通

告别 node_modules:scriptc 单文件部署全流程实操,从交叉编译到发布一次跑通

告别 node_modules:scriptc 单文件部署全流程实操,从交叉编译到发布一次跑通 【免费下载链接】scriptc TypeScript-to-Native Compiler 项目地址: https://gitcode.com/GitHub_Trending/sc/scriptc Node.js 生态里的一个长期痛点:写好…

2026/10/16 12:23:34 阅读更多 →
Fedora Server 搭建 Nextcloud 私有云:从部署到安全加固的完整实践

Fedora Server 搭建 Nextcloud 私有云:从部署到安全加固的完整实践

1. 为什么我最终选择了 Fedora Server 加 Nextcloud 这套组合很多人第一次动了"自己搭私有云"的念头,往往是因为受够了公共网盘的各种限制:下载限速、空间收费、文件莫名其妙被和谐、分享链接说失效就失效。我最早也是这么被逼上梁山的。一开始…

2026/10/16 12:22:30 阅读更多 →
金融服务中间层实战:幂等、状态机与对账的完整设计

金融服务中间层实战:幂等、状态机与对账的完整设计

去年年中,团队接了一个金融服务相关的中间层项目,项目代号就叫 financial-services。背景是一家合规运营的金融服务机构已经有了能稳定跑核心账务的系统,但外部渠道越来越多,支付、账单、退款、对账这些能力每次接一个新渠道都要在…

2026/10/16 12:22:30 阅读更多 →

最新新闻

Spring事务完整解析:@Transactional失效场景与排查技巧

Spring事务完整解析:@Transactional失效场景与排查技巧

做Java后端开发的,Spring事务可以说是绕不开的一道坎。平时加个Transactional注解好像很轻松,但真到了线上出问题,事务不生效、回滚没触发、死锁频繁,这些坑能让你排查到怀疑人生。我自己就踩过大坑:某转账服务里一个方…

2026/10/16 13:04:03 阅读更多 →
Spring事务从注解到原理:传播行为、隔离级别与事务失效的完整剖析

Spring事务从注解到原理:传播行为、隔离级别与事务失效的完整剖析

Spring事务(Transaction)这个话题,看起来谁都会用,但真正出了生产事故能把责任分清楚的人,永远是那些把原理吃透的人。我在一线写了快十年的业务系统,见过太多线上数据错乱、订单状态对不上、用户被重复扣款…

2026/10/16 13:04:03 阅读更多 →
AI课堂分析架构:多模态数据与CEED标准如何让教学评价可计算

AI课堂分析架构:多模态数据与CEED标准如何让教学评价可计算

简介:这份资源是华东师范大学课程与教学研究所杨晓哲副教授撰写的学术论文《基于人工智能的课堂分析架构:一种智能的课堂教学研究》,面向教育研究者、教研员、中小学教师及教育技术方向的学习者,聚焦大规模课堂分析难以落地、传统…

2026/10/16 13:04:03 阅读更多 →
DeepSeek V3 + AnythingLLM 本地知识库搭建实战与避坑指南

DeepSeek V3 + AnythingLLM 本地知识库搭建实战与避坑指南

简介:这份PDF教程面向希望搭建个人知识库的知识管理爱好者与效率工具用户,以DeepSeek V3为核心,讲解从零构建本地化知识库的完整流程。内容涵盖注册DeepSeek账号并获取API密钥、安装AnythingLLM客户端、配置AI提供商与模型选择、创建工作区、…

2026/10/16 13:04:03 阅读更多 →
机器视觉工业缺陷检测全流程指南:光源、相机与经典算法解析

机器视觉工业缺陷检测全流程指南:光源、相机与经典算法解析

简介:机器视觉工业缺陷检测是智能制造中质量控制的关键环节,涵盖硬件选型、图像处理算法与算法库应用等多个层面。这份PDF文档系统梳理了相关知识点:光源方面,介绍了LED、萤光灯、卤素灯等常见类型及背向、前向、结构光、频闪光等…

2026/10/16 13:04:03 阅读更多 →
FlexPipe:LLM推理流水线在碎片化GPU集群中的动态换挡实践

FlexPipe:LLM推理流水线在碎片化GPU集群中的动态换挡实践

跑过LLM推理服务的人大概都见过这个场景:一张A100上排了几百个请求,旁边一张3090的利用率却只有个位数,流水线里某个前置stage像血栓一样把整条链路卡死。GPU集群从来不是机房规划图上的整齐划一,而是日积月累拼出来的“百家被”—…

2026/10/16 13:02:59 阅读更多 →

日新闻

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

个人 AI Agent 平台接入 TaoToken:统一 Key 与 API 通道的配置大纲

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 0:00:05 阅读更多 →
信号与系统频域分析作业解题指南

信号与系统频域分析作业解题指南

1. 作业背景与核心要求解析信号与系统作为电子信息类专业的核心基础课,其作业设计往往直接关联课程的核心知识框架。2026年春季第六次作业的布置,通常对应着课程进展到频域分析的关键阶段。根据常规教学进度推测,本次作业可能涉及以下核心内容…

2026/10/16 0:00:05 阅读更多 →
Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

Django MVT实战:从零构建图书借阅系统,彻底搞懂Model-View-Template分层

1. 从一个"四不像"的练手项目说起如果你已经看完了Django的官方教程前几章,跟着敲完了投票应用,大概会有一种"我好像会了,又好像什么都不会"的割裂感。教程里每个知识点都是拆开的——这一章讲模型,下一章讲视…

2026/10/16 0:00:05 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/15 16:18:54 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/15 19:41:51 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/15 13:48:15 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 0:14:36 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/16 3:49:43 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/15 9:49:14 阅读更多 →