Python-阅读Google Ads关键字规划.csv

时间:2019-03-04 15:40:09

标签: python pandas csv google-adwords

在读取从Google Ads关键字规划工具下载的文件时遇到一些问题。如果我从此工具(不是API,而是GUI)下载了任何文件,则会得到一个基本的制表符分隔的CSV文件,如下所示(在记事本中打开时)。

Keyword Stats 2019-03-01 at 14_08_25
"February 1, 2018 - January 31, 2019"
Keyword Currency    Avg. monthly searches   Min search volume   Max search volume   Competition Competition (indexed value) Top of page bid (low range) Top of page bid (high range)    Ad impression share Organic impression share    Organic average position    In account? In plan?    Searches: Feb 2018  Searches: Mar 2018  Searches: Apr 2018  Searches: May 2018  Searches: Jun 2018  Searches: Jul 2018  Searches: Aug 2018  Searches: Sep 2018  Searches: Oct 2018  Searches: Nov 2018  Searches: Dec 2018  Searches: Jan 2019
Women Fashion Plus Sizes    USD N/A 0   10  Unknown                                                                             
plus size women USD N/A "10,000"    "100,000"   High    100 0.88    2.51                                                                    
Large Fashionable Clothing  USD N/A 0   10  Unknown                                                                             
plus size clothing  USD N/A "100,000"   "1,000,000" High    100 1.02    2.79                                                                    
plus size dresses   USD N/A "100,000"   "1,000,000" High    100 0.67    1.79    

此文件也可以使用excel打开。

但是,如果我使用以下代码在Pandas中读取文件:

df = pd.read_csv(file, skiprows = 10, header = 0, sep = '\t')

创建一个数据框,该数据框完全为空(所有nan和未命名的标头),但具有正确的行数和26列。

如果我只是打开并读取文件,则会得到一大堆看上去很奇怪(很多x00)的unicode,当这样读取时,unicode似乎不等于任何东西。

open(file).readlines()

    >>>  '\x00p\x00l\x00u\x00s\x00 \x00s\x00i\x00z\x00e\x00 \x00o\x00u\x00t\x00f\x00i\x00t\x00 \x00i\x00d\x00e\x00a\x00s\x00 \x00f\x00o\x00r\x00 \x00s\x00u\x00m\x00m\x00e\x00r\x00\t\x00U\x00S\x00D\x00\t\x00N\x00/\x00A\x00\t\x001\x000\x000\x00\t\x00"\x001\x00,\x000\x000\x000\x00"\x00\t\x00H\x00i\x00g\x00h\x00\t\x001\x000\x000\x00\t\x000\x00.\x005\x008\x00\t\x005\x00.\x006\x002\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\n',
 "\x00w\x00o\x00m\x00e\x00n\x00'\x00s\x00 \x00p\x00l\x00u\x00s\x00 \x00s\x00i\x00z\x00e\x00 \x00b\x00o\x00u\x00t\x00i\x00q\x00u\x00e\x00 \x00c\x00l\x00o\x00t\x00h\x00i\x00n\x00g\x00 \x00o\x00n\x00l\x00i\x00n\x00e\x00\t\x00U\x00S\x00D\x00\t\x00N\x00/\x00A\x00\t\x001\x000\x00\t\x001\x000\x000\x00\t\x00H\x00i\x00g\x00h\x00\t\x009\x007\x00\t\x000\x00.\x005\x001\x00\t\x008\x00.\x009\x003\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\n",
'\x00w\x00o\x00m\x00e\x00n\x00s\x00 \x00p\x00l\x00u\x00s\x00 \x00s\x00i\x00z\x00e\x00 \x00s\x00t\x00o\x00r\x00e\x00\t\x00U\x00S\x00D\x00\t\x00N\x00/\x00A\x00\t\x001\x000\x00\t\x001\x000\x000\x00\t\x00H\x00i\x00g\x00h\x00\t\x009\x007\x00\t\x000\x00.\x006\x002\x00\t\x001\x00.\x005\x005\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\n',
 '\x00b\x00e\x00s\x00t\x00 \x00p\x00l\x00u\x00s\x00 \x00s\x00i\x00z\x00e\x00 \x00b\x00r\x00a\x00n\x00d\x00s\x00\t\x00U\x00S\x00D\x00\t\x00N\x00/\x00A\x00\t\x001\x000\x000\x00\t\x00"\x001\x00,\x000\x000\x000\x00"\x00\t\x00L\x00o\x00w\x00\t\x002\x003\x00\t\x001\x00.\x002\x003\x00\t\x007\x00.\x000\x005\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\n',
 '\x00g\x00r\x00e\x00a\x00t\x00 \x00p\x00l\x00u\x00s\x00 \x00s\x00i\x00z\x00e\x00 \x00d\x00r\x00e\x00s\x00s\x00e\x00s\x00\t\x00U\x00S\x00D\x00\t\x00N\x00/\x00A\x00\t\x001\x000\x00\t\x001\x000\x000\x00\t\x00H\x00i\x00g\x00h\x00\t\x001\x000\x000\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\n',
 '\x00l\x00o\x00o\x00k\x00i\x00n\x00g\x00 \x00f\x00o\x00r\x00 \x00p\x00l\x00u\x00s\x00 \x00s\x00i\x00z\x00e\x00 \x00d\x00r\x00e\x00s\x00s\x00e\x00s\x00\t\x00U\x00S\x00D\x00\t\x00N\x00/\x00A\x00\t\x001\x000\x00\t\x001\x000\x000\x00\t\x00H\x00i\x00g\x00h\x00\t\x001\x000\x000\x00\t\x000\x00.\x005\x009\x00\t\x001\x00.\x008\x001\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\n',
 '\x00a\x00m\x00e\x00r\x00i\x00c\x00a\x00n\x00 \x00p\x00l\x00u\x00s\x00 \x00s\x00i\x00z\x00e\x00 \x00c\x00l\x00o\x00t\x00h\x00i\x00n\x00g\x00 \x00o\x00n\x00l\x00i\x00n\x00e\x00\t\x00U\x00S\x00D\x00\t\x00N\x00/\x00A\x00\t\x001\x000\x00\t\x001\x000\x000\x00\t\x00U\x00n\x00k\x00n\x00o\x00w\x00n\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\t\x00\n',
 ...]

我尝试了多种不同的编码,但无济于事。

想法?

谢谢您的帮助!

2 个答案:

答案 0 :(得分:1)

下载的CSV文件以大端UTF-16编码。我认为Adwords这样做是为了确保与Microsoft Excel的兼容性。

df = pd.read_csv(file, skiprows = 10, header = 0, sep = '\t', encoding='utf_16_be')

应该给出预期的结果。

答案 1 :(得分:0)

什么对我有用:

df = pd.read_csv(
    "Keyword Stats file name.csv", encoding='utf_16', sep='\t', skiprows=2
)