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

问题描述 投票:0回答:1

我在阅读从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')

创建一个完全为空的数据框(所有南方和未命名的标题),但具有正确的行数和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',
 ...]

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

想法?

感谢您的帮助!

python pandas csv google-adwords
1个回答
1
投票

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

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

应该给出预期的结果。

© www.soinside.com 2019 - 2024. All rights reserved.