python新手,我在python中使用Spotify的spotipy包尝试创建"音乐品味多样性评分";给我的spotify顶级艺人。我根据spotify的7个内置功能对所有艺术家的歌曲进行了分类,并显示了每个分类中的歌曲数量以及每个分类中艺术家的分布情况。我正在努力将这些值转换为可行的numpy数组或df,以便继续生成我的"多样性分数"。因为这是我第一个处理python的完整项目。
# display distribution of clusters
df2 = df.groupby(['cluster group'])['artist'].size()
df2
输出:集群分布
# display distribution of artists in cluster groups
df2 = df.groupby(['cluster group', 'artist']).size()
df2
输出:艺人分布
我试过在cluster
和其他类似的方法中迭代artist
,但它似乎是唯一可迭代的在df2
中是每个集群的艺术家的数量。
有人能告诉我如何提取每个集群组的值?
我已经尝试迭代在集群和其他类似的艺术家方法,但df2中唯一可迭代的似乎是每个方法的计数集群的艺术家。
原因是df2
实际上是您的两个示例中的熊猫Series
。因此,df2
仅包含由第一个示例中的cluster group
和第二个示例中的(cluster group, artist)
索引的整数值序列。
您使用的确切dataFrame没有指定,但是根据您编写的内容,您似乎希望对不同的列执行不同的聚合。对吗?比方说,如果有列songs
,那么下面应该会给你一个单独的数据帧,结合来自两个df2
的一些信息,即每个集群中不同艺术家和歌曲的数量。
df.groupby(['cluster group']).agg({'artist': 'nunique', 'songs': 'nunique'})
对于第一个示例,仅对artists
列而不是所有其他列应用聚合函数size()
不会产生任何影响,因为只计算行数,因此df.groupby(['cluster group']).size()
给出相同的结果。