Python Pandas dataframe read csv提供值中的隐藏字符
我试着阅读这个网站提供的CSV,它通常用于构建RecComedation系统。我使用了BX-Books.csv和BX-Book-Ratings.csv。这是BX-Books.csv的示例Python Pandas dataframe read csv提供值中的隐藏字符,python,pandas,csv,Python,Pandas,Csv,我试着阅读这个网站提供的CSV,它通常用于构建RecComedation系统。我使用了BX-Books.csv和BX-Book-Ratings.csv。这是BX-Books.csv的示例 "ISBN";"Book-Title";"Book-Author";"Year-Of-Publication";"Publisher";"Image-URL-S";"Image-UR
"ISBN";"Book-Title";"Book-Author";"Year-Of-Publication";"Publisher";"Image-URL-S";"Image-URL-M";"Image-URL-L"
"0195153448";"Classical Mythology";"Mark P. O. Morford";"2002";"Oxford University Press";"http://images.amazon.com/images/P/0195153448.01.THUMBZZZ.jpg";"http://images.amazon.com/images/P/0195153448.01.MZZZZZZZ.jpg";"http://images.amazon.com/images/P/0195153448.01.LZZZZZZZ.jpg"
"0002005018";"Clara Callan";"Richard Bruce Wright";"2001";"HarperFlamingo Canada";"http://images.amazon.com/images/P/0002005018.01.THUMBZZZ.jpg";"http://images.amazon.com/images/P/0002005018.01.MZZZZZZZ.jpg";"http://images.amazon.com/images/P/0002005018.01.LZZZZZZZ.jpg"
以及BX-Book-Ratings.csv
"User-ID";"ISBN";"Book-Rating"
"276725";"034545104X";"0"
"276726";"0155061224";"5"
"276727";"0446520802";"0"
我尝试用以下代码读取两个文件:
Books = pd.read_csv(r"C:\Users\Yosafat VS\PycharmProjects\Recomendation_KNN\Data\BX-Books.csv", sep=';', error_bad_lines=False, encoding="latin-1")
Ratings = pd.read_csv(r"C:\Users\Yosafat VS\PycharmProjects\Recomendation_KNN\Data\BX-Book-Ratings.csv", sep=';', error_bad_lines=False, encoding="latin-1")
当我试图检查数据时,我发现两个csv上的一些ISBN加载错误(应该不是ISBN代码),如下所示
count
ISBN
_____________
0330299891 2
0375404120 2
0586045007 1
9022906116 2
9032803328 1
... ...
cn113107 1
ooo7156103 1
§423350229 1
´3499128624 1
Ô½crosoft 1
但当我检查CSV时,我没有发现数据有任何问题,ISBN似乎是正确的。但是,csv中的每个值都用双引号括起来,BX-Book.csv使用ANSI而不是UTF-8。使用UTF-8的BX图书评级
这就是为什么当我尝试将数据透视的BX图书评级映射到BX图书时,会出现错误:
KeyError: "None of [Index([' 0330299891', ' 0375404120', ' 9022906116', '*0452281903',\n '+0451197399', '0 7336 1053 6', '0 907 062 008', '0*708880258',\n '00000000', '000000000',\n ...\n 'O77O428452', 'O786001690', 'O805063196', 'O9088446X', 'O971880107',\n 'SBN425037452', 'X000000000', 'XXXXXXXXXX', 'ZR903CX0003',\n '`3502103682'],\n dtype='object', name='ISBN', length=135794)] are in the [index]"
实际上,csv和csv中都存在密钥,有时我们会发现一些拼图编码问题,大多数时候我们可以忽略它,因为这些行很少 我们可以使用
open
来处理该作业
file='BX Books.csv'
以“打开”(文件,errors='ignore')作为fr:
数据=fr.read()
df=pd.read_csv(io.StringIO(数据),sep=';',error_bad_lines=False)
结果:
# BX-Book-Ratings.csv (1149780, 3) -> filelines 1149781
# BX-Books.csv (271360, 8) -> filelines 271380
科尔斯:
此特定示例的另一个解决方案:
file='BX Books.csv'
以“打开”(文件,errors='ignore')作为fr:
数据=fr.read()
data\u list=data.strip().split('\n')
obj=pd.系列(数据列表)
obj=obj.str.strip(“”)
dfn=obj.str.split(“;”,expand=True)
dfn.columns=dfn.iloc[0]
dfn.drop(0,原地=真)
dfn形状:
# BX-Books.csv (271379, 8) -> filelines 271380(with a header row)
# BX-Books.csv (271379, 8) -> filelines 271380(with a header row)