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()['graphql']['user']