movielens数据集(ml.zip)的读取问题

文章讲述了在Python中处理ZIP文件时遇到的问题,包括路径转换、字节模式和编码错误。作者提供了解决方案,如使用os.path.join调整路径,修改sep参数,以及在read_csv中指定正确的编码方式(ISO-8859-1)来读取数据。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

import os
import zipfile
import pandas as pd
import numpy as np
DATASET = 'ml-1m'  
RAW_PATH = os.path.join('./', DATASET)
with zipfile.ZipFile(os.path.join(RAW_PATH, DATASET + '.zip')) as z:#已有名为ml-1m的zip文件
	with z.open(os.path.join(DATASET, 'movies.dat')) as f:
            data_df = pd.read_csv(f, sep=b'::', header=None, engine='python')#每行数据形为1::Toy Story (1995)::Animation|Children's|Comedy

最后两行代码有问题。

首先是KeyError: “There is no item named ‘ml-1m\\movies.dat’ in the archive”,可能是windows下路径得转换。解决:将open函数内替换为os.path.join(DATASET, ‘ratings.dat’).replace(‘\’,‘/’)。

然后是TypeError: cannot use a bytes pattern on a string-like object,解决:sep=‘::’,即不要b。

最后是UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xe9 in position 3114: invalid continuation byte,解决:read_csv添加参数encoding=‘ISO-8859-1’ 。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值