我是Python的新手,我认为Json和Pandas面临着一个相当简单的问题。
不幸的是,我的大脑似乎停止了工作,所以我很感激你的帮助。
我想分析《超级马里奥》游戏中itunes上的评论,我想用JSON来做这件事。
我想检索评论和随之而来的所有信息,我想把它作为一个数据框架,这样我就可以开始我的分析了。
链接:https://itunes.apple.com/gb/rss/customerreviews/id=1145275343/page=1/json
我的代码:
import json
import requests
import pandas as pd
requestpost = requests.get('https://itunes.apple.com/gb/rss/customerreviews/id=1145275343/page=1/json')
r = json.loads(requestpost.text)
r
dict_keys= r['feed'].keys()
df = pd.DataFrame(r['feed'] , columns = [list(dict_keys)])
df
输出:author entry updated rights title icon link id
我只得到列,每列中没有数据。
我正在学习Python for Data Analysis这本书,我已经阅读了文档并经历了无数的例子。我不明白问题出在哪里。
如有任何帮助,我们将不胜感激。
向致以最良好的问候
解决方案
import json
import requests
import pandas as pd
response = requests.get('https://itunes.apple.com/gb/rss/customerreviews/id=1145275343/page=1/json')
json_data = json.loads(response.text)
data = json_data['feed']['entry']
pd.json_normalize(data=data)
您可以通过以下方式获得所需的输出:
import json
import requests
from pandas.io.json import json_normalize
response = requests.get('https://itunes.apple.com/gb/rss/customerreviews/id=1388411277/page=1/json')
json_data = json.loads(response.text)
data = json_data['feed']
json_normalize(data=data)
json_normalize返回一个数据帧。
从您的数据来看,第一个键中似乎有多个键。例如:
r['feed']["author"]
输出:
{'name': {'label': 'iTunes Store'},
uri': {'label': 'http://www.apple.com/uk/itunes/'}}
所以你需要再过滤一点,以获得你想要的输出