将 Facebook Ads Insights 结果导入 pandas 数据框
Posted
技术标签:
【中文标题】将 Facebook Ads Insights 结果导入 pandas 数据框【英文标题】:Get Facebook Ads Insights results into pandas dataframe 【发布时间】:2016-04-19 16:40:08 【问题描述】:我正在尝试将 Facebook 广告洞察查询的结果放入 pandas 数据框,但返回的对象不合作。
我正在运行一个基本的异步使用示例,正如 Facebook 在此处概述的那样:https://developers.facebook.com/docs/marketing-api/insights/v2.6
campaign = Campaign(my_campaign)
params =
'level': 'ad',
'date_preset': 'lifetime',
'time_increment': 1,
'fields': ['date_start', 'ad_id', 'ad_name', 'spend', 'reach', 'total_actions']
async_job = campaign.get_insights(params=params, async=True)
async_job.remote_read()
while async_job[AsyncJob.Field.async_percent_completion] < 100:
time.sleep(1)
async_job.remote_read()
time.sleep(1)
result = async_job.get_result()
然后我试图将结果更改为一个列表,在这里回复:https://***.com/a/36397567/5459606
result = [x for x in async_job.get_result()]
type(result)
这会将结果作为列表返回,但是当我尝试使用 df = pd.DataFrame(result) 将其读入 pandas 时出现错误
如果我查看返回的内容,我会看到每个列表条目如下所示:
<AdsInsights>
"ad_id": "6035212284443",
"ad_name": "Outlook - Image 2, copy 1",
"date_start": "2015-11-21",
"date_stop": "2015-11-21",
"reach": 625,
"spend": 2.4,
"total_actions": 10
如果我询问此对象的类型,它是 facebookads.adobjects.adsinsights.AdsInsights 而不是字典,我猜这是问题所在。有谁知道如何解决这个问题,让我用 pandas 来阅读这些 Facebook 结果。
【问题讨论】:
【参考方案1】:哈哈,你可以使用list(),然后使用pandas.DataFrame。 你可以看这里[How to parse nested FB API response from Python SDK
【讨论】:
您好,谢谢您的回复。我按照您在示例中的操作方式(result = [x for x in async_job.get_result()])但我被抛出了一个错误。 KeyError:“无” 哦,我忘了你用的是“异步”。如果要获取数据,应将“async=True”更改为“async=False”。这次我帮忙,它可以提供帮助。 嘿,非常感谢您的帮助。不幸的是,由于 KeyError:'None',它仍然无法正常工作。我认为问题在于,当我使用 result[0].keys() 查看结果列表中的单个条目时,我可以在其中看到大量键(无论我在 fields 参数中选择的那些)和一个of then 是 None,而不是字符串。只是坐在那里,没有人,就在中间,把事情搞砸了(我认为)。【参考方案2】:您也可以使用windsor.ai 来执行此操作。您只需将您的 Facebook 帐户连接到 windsor.ai,然后使用他们的 Python SDK (pywindsorai) 将数据加载到 pandas。
import pandas as pd
from pywindsorai.client import Client
api_key = 'xxx' # Get this from your windsor.ai account
client = Client(api_key)
campaign_clicks = client.connectors(date_preset='last_7d', fields=['date','clicks','spend'])
df = pd.DataFrame(campaign_clicks['data'])
查看这篇博文了解更多信息:https://www.windsor.ai/multichannel-marketing-data-analysis-via-python-using-pywindsorai/
【讨论】:
以上是关于将 Facebook Ads Insights 结果导入 pandas 数据框的主要内容,如果未能解决你的问题,请参考以下文章
Facebook Insights 统计数据中的 XButton 负面反馈类型
将 Google Ads 转化跟踪代码手动添加到 Facebook 客户聊天中
为啥 Facebook Ads 的 MediaView 会重复图片 3 次?
膨胀类 com.facebook.ads.MediaView 时出错