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

Python - Read Google Ads Keyword Planning .csv

我在读取从 Google 广告关键字规划工具下载的文件时遇到一些问题。如果我从这个工具(不是 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 和未命名 headers),但具有正确的行数和 26 列。

如果我只是打开并阅读文件,我会得到一大堆看起来很奇怪(很多 x00)的 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',
 ...]

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

想法?

提前感谢您的帮助!

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

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

应该给出预期的结果。

对我有用的:

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