如何使用Pandas合并三个数据集:餐厅、用户与评分数据
合并餐厅、用户与评分数据集的解决方案
没问题!要把这三个数据集整合为包含餐厅特征、用户特征和对应评分标签的统一数据集,用Python的pandas库就能高效完成。下面是详细的步骤和代码示例:
步骤1:导入必要的库
首先确保你已经安装了pandas,然后导入它:
import pandas as pd
步骤2:读取三个CSV文件
使用pd.read_csv()读取你的三个数据集:
# 读取餐厅数据 restaurants = pd.read_csv('restaurants.csv') # 读取用户数据 users = pd.read_csv('users.csv') # 读取评分数据 ratings = pd.read_csv('rating.csv')
步骤3:逐步合并数据集
我们需要以rating.csv为核心(它关联了用户和餐厅),先合并餐厅特征,再合并用户特征:
3.1 合并评分与餐厅数据
通过place_id将评分数据和餐厅数据关联起来:
# 合并评分与餐厅数据,保留双方都匹配的记录(内连接) rating_with_rest = pd.merge(ratings, restaurants, on='place_id', how='inner')
3.2 合并用户特征到结果中
接着通过user_id将用户数据合并到上面的结果里:
# 合并用户数据,同样使用内连接确保每条记录都有对应的评分、餐厅和用户信息 final_dataset = pd.merge(rating_with_rest, users, on='user_id', how='inner')
优化:处理重复的列名
注意到restaurants.csv和users.csv都有feature1、feature2列,合并后会自动加上_x(来自餐厅)和_y(来自用户)的后缀。如果想让列名更清晰,可以用两种方式处理:
方法1:合并时指定自定义后缀
final_dataset = pd.merge( pd.merge(ratings, restaurants, on='place_id', how='inner'), users, on='user_id', how='inner', suffixes=('_rest', '_user') # 餐厅特征加_rest后缀,用户特征加_user后缀 )
方法2:提前重命名列
# 重命名餐厅的特征列 restaurants = restaurants.rename(columns={'feature1': 'rest_feature1', 'feature2': 'rest_feature2'}) # 重命名用户的特征列 users = users.rename(columns={'feature1': 'user_feature1', 'feature2': 'user_feature2'}) # 再进行合并 final_dataset = pd.merge(pd.merge(ratings, restaurants, on='place_id'), users, on='user_id')
查看最终结果
你可以用head()方法查看合并后的数据集前几行:
print(final_dataset.head())
这样得到的final_dataset就完整包含了你需要的所有信息:餐厅特征、用户特征以及对应的评分标签。
内容的提问来源于stack exchange,提问作者Gunay Abdullayeva
相关产品推荐
相关产品推荐

