读取、处理Yelp数据集

10 篇文章 0 订阅
5 篇文章 0 订阅

##读取、处理Yelp数据集

import pandas as pd
import json

reviews_path =r"../yelp_dataset/yelp_academic_dataset_review.json"

'''
读取原始数据
'''
file = open(reviews_path, 'r', encoding="utf-8")

users_id = []
items_id = []
ratings = []
reviews = []
dates = []

for line in file:
     js = json.loads(line)
      print(js)
      if str(js['user_id']) == 'unknown':
          print("unknown user id")
          continue
      if str(js['business_id']) == 'unknown':
          print("unkown item id")
          continue
      date = str(js["date"])
      _date = date.split('-')[0]
      if _date == '2017':
          reviews.append(js['text'])
          users_id.append(str(js['user_id']))
          items_id.append(str(js['business_id']))
          ratings.append(str(js['stars']))
          dates.append(date)

data_frame = {'user_id': pd.Series(users_id), 'item_id': pd.Series(items_id),
              'ratings': pd.Series(ratings), 'reviews': pd.Series(reviews),'date': pd.Series(dates)}
data = pd.DataFrame(data_frame)
print(data)

'''
将u_id和i_id进行唯一编码
'''
userID = list(set(users_id))
itemID = list(set(items_id))
item2id = {key:index for index, key in enumerate(itemID)}#enumerate() 函数用于将一个可遍历的数据对象(如列表、元组或字符串)组合为一个索引序列
user2id = {key:index for index, key in enumerate(userID)}

def numerize(data,user2id,item2id):
    uid = list(map(lambda x: user2id[x], data['user_id']))
    iid = list(map(lambda x: item2id[x], data['item_id']))
    data['user_id'] = uid
    data['item_id'] = iid
    return data

data = numerize(data,user2id,item2id)
print(data)
  • 0
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值