如何从Python groupby中提取值进行数据分析?



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()给出相同的结果。

最新更新