如何通过流行度图表将不同长度的路径平均起来?

2024-06-16 14:59:10 发布

您现在位置:Python中文网/ 问答频道 /正文

所以基本上,我在看一些流行音乐排行榜的数据。所以我可以看到一首歌在排行榜上出现了多少周,它处于什么位置,它处于那个位置的那一周,以及歌名和歌手

我将图表分开,只包含在某一点上成为头号热门歌曲的条目,并希望看到每首歌曲的平均“旅程”在十年内成为头号热门歌曲

当然,其中一些歌曲在排行榜前100名中的时间更长。因此,虽然简单地平均歌曲占据的每个位置似乎很容易,但这并不是那么容易做到的

当一首歌进入前100名时,我考虑添加一些虚拟变量,比如101首,相当于任何曲目在排行榜上花费的最大周数。但这似乎最终会扭曲我的数据

我的数据如下所示(除了多首曲目,当然,对于这首特定的歌曲,还有更多的条目):

https://ethercalc.org/73oyih35ryu2


Tags: 数据图表时间条目歌曲曲目花费热门
1条回答
网友
1楼 · 发布于 2024-06-16 14:59:10

如果我理解正确,我的解决方案如下:

首先,您可以按歌曲对数据帧进行分组,并将数字作为字符串添加到字符串中

new_df=pd.DataFrame(df.groupby('Song')['Position'].apply(lambda x:' '.join(x.astype(str))))

它将返回如下内容:

                                   Position
Song                                       
Radioactive  93 98 45 56 45 45 45 1 4 67 89

然后我将字符串拆分为“1”,我取第一个元素,并将数字“1”添加到其中

new_df['Position']=new_df['Position'].apply(lambda x:x.split('1')[0]+'1')
print(new_df)
                           Position
Song                               
Radioactive  93 98 45 56 45 45 45 1

之后,我可以将其转化为一个带有空格的列表拆分,然后我可以取该列表的平均值:

new_df['Position'].apply(lambda x: np.mean([int(i) for i in x.split()]))

print(new_df)

Song
Radioactive    53.5

相关问题 更多 >