使用 pandas read_json 导入文件时遇到问题

Posted

技术标签:

【中文标题】使用 pandas read_json 导入文件时遇到问题【英文标题】:Trouble with importing a file with pandas read_json 【发布时间】:2019-05-06 12:42:33 【问题描述】:

我是 Python 新手(我使用的是 python 3),我正在尝试在 Jupyter 笔记本中导入 JSON 文件。但是,它给出了以下错误:

UnicodeDecodeError: 'charmap' codec can't decode byte 0x8d in position 4276350: character maps to <undefined> 

下面是代码:

import numpy as np
import pandas as pd
import seaborn as sns
import matplotlib as plt
import json
%matplotlib inline

with open('C:\\Users/Desktop/Machine  Learning/yelp_academic_dataset_business.json') as datafile:
data = pd.read_json(datafile,orient='columns',encoding='utf-8')
dataframe = pd.DataFrame(data)

我将不胜感激。

【问题讨论】:

你能至少展示一下 JSON 文件的样子吗?这样我们都可以看到问题出在哪里。 嗨 mmontoya,我从那里获得数据集的链接。 kaggle.com/yelp-dataset/yelp-dataset数据集:yelp_academic_dataset_business.json 【参考方案1】:

假设 this 是您要导入的文件,它实际上是许多 JSON 对象,每行一个。您需要通过指定lines=True逐行导入:

data = pd.read_json(datafile, lines=True, orient='columns', encoding='utf-8')

另外,传递文件路径作为第一个参数,而不是文件内容。您可以摆脱打开文件的代码。此外,pd.read_json 正在返回一个 DataFrame,不需要你程序的最后一行:

>>> data = pd.read_json('yelp_academic_dataset_business.json', lines=True, orient='columns', encoding='utf-8')
>>> data
                                              attributes             business_id                                         categories             city    ...    review_count stars  state      type
0      'Take-out': False, 'Wi-Fi': 'free', 'Good For...  O_X3PGhk3Y5JWVi866qlJg  [Active Life, Arts & Entertainment, Stadiums &...          Phoenix    ...              29   4.0     AZ  business
1      'Parking': 'garage': False, 'street': False,...  QbrM7wqtmoNncqjc6GtFaQ  [Tires, Automotive, Fashion, Shopping, Departm...         Glendale    ...               3   3.5     AZ  business

【讨论】:

感谢您的回复,是的,这就是我要导入的文件。但是,它仍然给出相同的错误:( @Lonewolf 将文件路径作为第一个参数传递给read_json,而不是文件内容。 以 open('C:\\Users/Desktop/Machine Learning/yelp_academic_dataset_business.json') 作为数据文件:data = pd.read_json('yelp_academic_dataset_business.json',lines=True, orient=' columns', encoding='utf-8') 这是我的代码,但它不起作用。我得到的错误是“ValueError: Expected object or value” 如果与程序不在同一目录下,则需要指定整个路径。pd.read_json('C:/Users/Desktop/Machine Learning/yelp_academic_dataset_business.json', lines=True, orient='columns', encoding='utf-8'),请确保您确认是文件的正确路径。

以上是关于使用 pandas read_json 导入文件时遇到问题的主要内容,如果未能解决你的问题,请参考以下文章

在 Pandas UnicodeDecodeError 中无法使用 pandas.read_json() 解码 JSON 文件中的 Unicode Ascii

使用 pandas.read_json 时出现 ValueError

pandas

如何使用 pandas read_json 读取 ADSB json 数据? [复制]

Pandas read_json() 使用简单的 JSON 字符串失败

如何在 ```pandas.read_json(...)` 期间修复 ```ValueError: Trailing data```?