InstagramAPI - 如何将 JSON Python 数据解析为 Pandas DataFrame(iPython,Jupyter Notebook)

InstagramAPI - How to Parse JSON Python Data into Pandas DataFrame (iPython, Jupyter Notebook)

这是我在 Jupyter Notebook 中构建的 python 脚本,用于查询我自己的 Instagram 用户名,但我似乎无法将所有数据放入 pandas dataframe,谁能帮帮我?

    from instagram.client import InstagramAPI    
    import pandas as pd    
    import requests  
    import json   

    access_token = "xxxx"  
    client_secret = "xxxx"  

    recentMediaResponse = requests.get("https://api.instagram.com/v1/users/self/media/recent/",params = {"access_token": access_token})
    recentMediaJson = json.loads(recentMediaResponse.text)     

    DataDF = pd.DataFrame(columns = ['numComments', 'likes', 'id', 'tags'])

    numcomments = pd.DataFrame({'numComments' : [recentMediaJson['data'][1]['comments']['count']],
                               'likes': [recentMediaJson['data'][1]['likes']['count']],
                               'id': [recentMediaJson['data'][1]['id']],
                               'tags': [recentMediaJson['data'][1]['tags']]


                               })
    Final = DataDF.append(numcomments)
    print Final

当我打印 'Final' 变量时,我只得到一个 id 和所有相应的数据 values/strings :

我知道有很多数据,因为 'recentMediaJson' 文件看起来是这样的:

在本节中,我认为您选择的是词典列表中的第一个元素 recentMediaJson['data'][1]。您将需要遍历列表中的所有条目并每次将 numcomments 附加到 DataDF

numcomments = pd.DataFrame({'numComments' : [recentMediaJson['data'][1]['comments']['count']],
                                   'likes': [recentMediaJson['data'][1]['likes']['count']],
                                   'id': [recentMediaJson['data'][1]['id']],
                                   'tags': [recentMediaJson['data'][1]['tags']]

您还可以使用 pprint 更轻松地可视化 api 返回的 json 对象。尝试导入 pprint 和 运行 pprint.pprint(recentMediaJson),您将能够更好地看到结构。

您只包含 JSON 数据中的一条记录。

我从这里得到了答案:JSON to pandas DataFrame

这是未经测试的,但像这样的东西应该可以工作。

data = json.loads(recentMediaResponse.text)
numComments,likes,id,tags = [],[],[],[]
for result in data['results']:
    numcomments.append(result['comments']['count'])
    likes.append(result['likes']['count'])
    id.append(result['id'])
    tags.append(result['tags'])
df = pd.DataFrame([numcomments,likes,id,tags]).T
print df