2017-11-09 9 views
1

私はPythonを使用してGoogleのAdWords APIからデータを取得しています。そのデータをPandas DataFrameに入れて、データの分析を実行したいと思います。Adwords APIからデータを引き出してPandasデータフレームに入れる方法

from googleads import adwords 
import pandas as pd 
import numpy as np 

# Initialize appropriate service. 

adwords_client = adwords.AdWordsClient.LoadFromStorage() 

report_downloader = adwords_client.GetReportDownloader(version='v201710') 

# Create report query. 
report_query = (''' 
select Date, Clicks 
from ACCOUNT_PERFORMANCE_REPORT 
during LAST_7_DAYS''') 

df = pd.read_csv(report_downloader.DownloadReportWithAwql(
    report_query, 
    'CSV', 
    client_customer_id='xxx-xxx-xxxx', # denotes which adw account to pull from 
    skip_report_header=True, 
    skip_column_header=False, 
    skip_report_summary=True, 
    include_zero_impressions=True)) 

出力はCSV形式とどのように見えるかのデータである:私はGoogleが提供する例を使用していhere.以下

はパンダのデータフレームとして読み取られるように、出力を取得しようとする私の試みですエラー。

Day,Clicks 
2017-11-05,42061 
2017-11-07,45792 
2017-11-03,36874 
2017-11-02,39790 
2017-11-06,44934 
2017-11-08,45631 
2017-11-04,36031 
--------------------------------------------------------------------------- 
ValueError        Traceback (most recent call last) 
<ipython-input-5-cc25e32c9f3a> in <module>() 
    25  skip_column_header=False, 
    26  skip_report_summary=True, 
---> 27  include_zero_impressions=True)) 

/anaconda/lib/python3.6/site-packages/pandas/io/parsers.py in parser_f(filepath_or_buffer, sep, delimiter, header, names, index_col, usecols, squeeze, prefix, mangle_dupe_cols, dtype, engine, converters, true_values, false_values, skipinitialspace, skiprows, nrows, na_values, keep_default_na, na_filter, verbose, skip_blank_lines, parse_dates, infer_datetime_format, keep_date_col, date_parser, dayfirst, iterator, chunksize, compression, thousands, decimal, lineterminator, quotechar, quoting, escapechar, comment, encoding, dialect, tupleize_cols, error_bad_lines, warn_bad_lines, skipfooter, skip_footer, doublequote, delim_whitespace, as_recarray, compact_ints, use_unsigned, low_memory, buffer_lines, memory_map, float_precision) 
    653      skip_blank_lines=skip_blank_lines) 
    654 
--> 655   return _read(filepath_or_buffer, kwds) 
    656 
    657  parser_f.__name__ = name 

/anaconda/lib/python3.6/site-packages/pandas/io/parsers.py in _read(filepath_or_buffer, kwds) 
    390  compression = _infer_compression(filepath_or_buffer, compression) 
    391  filepath_or_buffer, _, compression = get_filepath_or_buffer(
--> 392   filepath_or_buffer, encoding, compression) 
    393  kwds['compression'] = compression 
    394 

/anaconda/lib/python3.6/site-packages/pandas/io/common.py in get_filepath_or_buffer(filepath_or_buffer, encoding, compression) 
    208  if not is_file_like(filepath_or_buffer): 
    209   msg = "Invalid file path or buffer object type: {_type}" 
--> 210   raise ValueError(msg.format(_type=type(filepath_or_buffer))) 
    211 
    212  return filepath_or_buffer, None, compression 

ValueError: Invalid file path or buffer object type: <class 'NoneType'> 

私は根本的な何かが欠けています知っていると私は完全にパンダのデータフレームにデータを取得する方法を理解していません。どんな助けでも大歓迎です。

答えて

3

誰かが好奇心が強い、あるいは同じ問題があった場合、自分の質問に対する答えを見つけることができました。私はimport ioにして、私はoutputという名前の文字列にAdWordsクエリからの出力を書きました。その後、最初からseek()メソッドを使用し、pandas read_csvを使用してそれを読み取りました。

from googleads import adwords 
import pandas as pd 
import numpy as np 
import io 

# Define output as a string 
output = io.StringIO() 

# Initialize appropriate service. 
adwords_client = adwords.AdWordsClient.LoadFromStorage() 

report_downloader = adwords_client.GetReportDownloader(version='v201710') 

# Create report query. 
report_query = (''' 
select Date, HourOfDay, Clicks 
from ACCOUNT_PERFORMANCE_REPORT 
during LAST_7_DAYS''') 

# Write query result to output file 
report_downloader.DownloadReportWithAwql(
    report_query, 
    'CSV', 
    output, 
    client_customer_id='xxx-xxx-xxx', # denotes which adw account to pull from 
    skip_report_header=True, 
    skip_column_header=False, 
    skip_report_summary=True, 
    include_zero_impressions=False) 


output.seek(0) 

df = pd.read_csv(output) 

df.head() 
関連する問題