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

Posted

技术标签:

【中文标题】InstagramAPI - 如何将 JSON Python 数据解析为 Pandas DataFrame(iPython、Jupyter Notebook)【英文标题】:InstagramAPI - How to Parse JSON Python Data into Pandas DataFrame (iPython, Jupyter Notebook) 【发布时间】:2018-02-21 12:39:06 【问题描述】:

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

    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 和所有相应的数据值/字符串:

我知道有很多数据,因为这就是“recentMediaJson”文件的外观:

【问题讨论】:

【参考方案1】:

在本节中,我认为您正在选择字典列表中的第一个元素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),您将能够更好地看到结构。

【讨论】:

您是正确的,您需要遍历它,但我在回答中的做法略有不同。【参考方案2】:

您只包含来自 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

【讨论】:

谢谢,这成功了!你知道我怎样才能在每次查询中获得超过 20 个帖子吗? 很高兴为您提供帮助。不确定每个查询的帖子,但我会查看 Instagram API 文档。这几乎肯定是你会放在 params 字典中的东西。能否请您将此标记为正确答案并点赞?

以上是关于InstagramAPI - 如何将 JSON Python 数据解析为 Pandas DataFrame(iPython、Jupyter Notebook)的主要内容,如果未能解决你的问题,请参考以下文章

我无法从 Instagram api 解析 json

我不能为 instagram API 做 json()['graphql']['user']

用 php 提取 Instagram 信息——解码然后呢?

无法加载 JSON 数据

PHP 或 Jquery 用于解释和格式化 polymaps 的 json 数据?

如何将 Ruby 对象转换为 JSON