2016年阿里天池大赛,也是中国高校第一届大数据挑战赛的数据。数据包括两个表,分别是用户行为表mars_tianchi_user_actions.csv和歌曲艺人表mars_tianchi_songs.csv。大赛开放抽样的歌曲艺人数据,以及和这些艺人相关的6个月内(20150301-20150831)的用户行为历史记录。选手需要预测艺人随后2个月,即60天(20150901-20151030)的播放数据。 按照艺人统计每个艺人每天所有歌曲的播放量,输出文件为exp2_3.csv,各个列名为艺人id,日期Ds, 歌曲播放总量。注意:这里只统计歌曲的播放量,不包括下载和收藏的数量。代码
时间: 2024-02-20 19:56:36 浏览: 131
根据题目要求,我们需要按照艺人统计每个艺人每天所有歌曲的播放量。这里以Python为例,具体代码实现如下:
```python
import pandas as pd
# 读取用户行为表和歌曲艺人表
action_data = pd.read_csv('mars_tianchi_user_actions.csv')
song_data = pd.read_csv('mars_tianchi_songs.csv')
# 筛选出行为类型为播放的记录,并且只保留用户id,日期和歌曲id这三个字段
play_data = action_data[action_data.action_type == 1][['user_id', 'Ds', 'song_id']]
# 将歌曲id和艺人id进行匹配,得到每个歌曲所属的艺人id
song_artist_dict = dict(zip(song_data.song_id, song_data.artist_id))
play_data['artist_id'] = play_data['song_id'].map(song_artist_dict)
# 按照艺人id、日期进行分组,统计播放次数
artist_daily_plays = play_data.groupby(['artist_id', 'Ds']).size().reset_index(name='play_count')
# 将结果输出到exp2_3.csv文件中
artist_daily_plays.to_csv('exp2_3.csv', index=False)
```
上述代码中,首先读取了用户行为表和歌曲艺人表。然后筛选出行为类型为播放的记录,并只保留用户id、日期和歌曲id这三个字段。接着,将歌曲id和艺人id进行匹配,得到每个歌曲所属的艺人id。最后,按照艺人id、日期进行分组,统计播放次数,并将结果输出到exp2_3.csv文件中。
阅读全文