果粉有福了!5分钟学会用Python统计自己最爱听的音乐(6)
2023-04-29 来源:飞速影视
这里的目标是收集评分和音轨时长,然后画一些图。在①行和接下来的代码行中,读取了播放列表文件,并访问Tracks字典。接下来,创建两个空列表,保存评分和时长②(在iTunes播放列表中,评分是一个整数,范围是[0,100])。迭代遍历音轨,在③行,将评分和时长添加到相应的列表中。最后,在④行检查完整性,确保从播放列表文件收集了有效数据。
绘制数据
我们已准备好绘制一些数据了。
# scatter plot① x = np.array(durations, np.int32) # convert to minutes② x = x/60000.0③ y = np.array(ratings, np.int32)④ pyplot.subplot(2, 1, 1)⑤ pyplot.plot(x, y, "o")⑥ pyplot.axis([0, 1.05*np.max(x), -1, 110])⑦ pyplot.xlabel("Track duration")⑧ pyplot.ylabel("Track rating") # plot histogram pyplot.subplot(2, 1, 2)⑨ pyplot.hist(x, bins=20) pyplot.xlabel("Track duration") pyplot.ylabel("Count") # show plot⑩ pyplot.show()
在①行,利用numpy.array()(在代码中作为np导入),将音轨时长数据放到32位整数数组中。然后在②行,利用numpy,将一个操作应用于数组中的每个元素。在这个例子中,将每个以毫秒为单位的时长值除以值60×1000。在③行,将乐曲评分保存另一个numpy数组y中。
用matplotlib在同一图像上绘制两张图。在④行,提供给subplot()的参数(即,(2, 1, 1))告诉matplotlib,该图应该有两行(2)一列(1),且下一个点应在第一行(1)。在⑤行,通过调用plot()创建一个点,并且o告诉matplotlib用圆圈来表示数据。
在⑥行,为 x 轴和 y 轴设置略微大一点儿的范围,以便在图和轴之间留一些空间。在⑦和⑧行,为 x 轴和 y 轴设置说明文字。
现在用matplotlib的方法hist(),在同一张图中的第二行中,绘制时长直方图⑨。bins参数设置了数据分区的个数,其中每分区用于添加在这个范围内的计数。最后,调用show()⑩,matplotlib在新窗口中显示出漂亮的图。
本站仅为学习交流之用,所有视频和图片均来自互联网收集而来,版权归原创者所有,本网站只提供web页面服务,并不提供资源存储,也不参与录制、上传
若本站收录的节目无意侵犯了贵司版权,请发邮件(我们会在3个工作日内删除侵权内容,谢谢。)
www.fs94.org-飞速影视 粤ICP备74369512号