如何将 CountVectorizer 用于聚合数据?
How can I use CountVectorizer with aggregated data?
我正在 goodbooks-10k dataset 开发推荐系统。我想用书的标签来做推荐。书的标签以聚合的方式出现——对于每本书和每个标签,都有一行包含书名、标签名称以及该标签在这本书中出现的次数。
数据集如下所示:
我想使用这些信息来构建标签的词袋表示,其中对于每个标签,我都有一个列,其中包含该标签在给定书中出现的次数。
用 pandas 实现这个的正确方法是什么?
提前致谢!
您可以使用pandas.pivot_table
示例数据框:
df= pd.DataFrame({"book_id": [1,1,2,2,3], "tag_id": [100, 120, 130, 140, 150], "tag_count": [100, 200, 300, 400, 500]})
# df
# book_id tag_id tag_count
# 0 1 100 100
# 1 1 120 200
# 2 2 130 300
# 3 2 140 400
# 4 3 150 500
df.pivot_table(values="tag_count", index="book_id", columns="tag_id", aggfunc="sum", fill_value=0)
输出:
# tag_id 100 120 130 140 150
# book_id
# 1 100 200 0 0 0
# 2 0 0 300 400 0
# 3 0 0 0 0 500
我正在 goodbooks-10k dataset 开发推荐系统。我想用书的标签来做推荐。书的标签以聚合的方式出现——对于每本书和每个标签,都有一行包含书名、标签名称以及该标签在这本书中出现的次数。 数据集如下所示:
我想使用这些信息来构建标签的词袋表示,其中对于每个标签,我都有一个列,其中包含该标签在给定书中出现的次数。
用 pandas 实现这个的正确方法是什么?
提前致谢!
您可以使用pandas.pivot_table
示例数据框:
df= pd.DataFrame({"book_id": [1,1,2,2,3], "tag_id": [100, 120, 130, 140, 150], "tag_count": [100, 200, 300, 400, 500]})
# df
# book_id tag_id tag_count
# 0 1 100 100
# 1 1 120 200
# 2 2 130 300
# 3 2 140 400
# 4 3 150 500
df.pivot_table(values="tag_count", index="book_id", columns="tag_id", aggfunc="sum", fill_value=0)
输出:
# tag_id 100 120 130 140 150
# book_id
# 1 100 200 0 0 0
# 2 0 0 300 400 0
# 3 0 0 0 0 500