ipython pandas TypeError:read_csv()获得意外的关键字参数“delim whitespace”

ipython pandas TypeError:read_csv()获得意外的关键字参数“delim whitespace”,python,python-2.7,pandas,ipython,Python,Python 2.7,Pandas,Ipython,在尝试ipython.org笔记本时,介绍了用于数据挖掘的PYTHON 以下代码: data = pd.read_csv("http://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data-original", delim_whitespace = True, header=None, names = ['mpg', 'cylinders',

在尝试ipython.org笔记本时,介绍了用于数据挖掘的PYTHON

以下代码:

data = pd.read_csv("http://archive.ics.uci.edu/ml/machine-learning-databases/auto-mpg/auto-mpg.data-original",
               delim_whitespace = True, header=None,
               names = ['mpg', 'cylinders', 'displacement', 'horsepower', 'weight', 'acceleration',
                        'model', 'origin', 'car_name'])
产生以下错误:

 TypeError: read_csv() got an unexpected keyword argument 'delim-whitespace'
不幸的是,数据集文件本身并不是真正的csv,我不知道为什么他们使用read_csv来获取数据

数据如下所示:

 14.0   8.   454.0      220.0      4354.       9.0   70.  1.    "chevrolet impala"
环境是基于Debian stable的python/2.7,其中包含ipython 0.13。 在这里搜索后,我发现很可能是版本问题, 因为参数“delim whitespace”可能在pandas库的更高版本中,而不是APT包管理器可用的版本中

我尝试了几种变通办法,但没有成功

首先,我试图通过从最新的源代码构建来升级pandas,但我发现最终会出现一系列其他依赖项构建,这些依赖项的版本需要升级,最终可能会破坏环境。例如,我必须安装Cython,然后它又报告说它是 APT软件包管理器上的版本太旧,因此我必须重建Cython,+其他libs/模块等等

然后在看了一下API之后,我尝试使用其他参数: 在读取的调用中使用分隔符=“”会导致 它需要将引号内的字符串分成几列

ValueError: Expecting 9 columns, got 13 in row 0
我尝试使用read_csv参数quotechar='',正如API中记录的那样,但还是没有识别出意外的关键字参数

最后我试着用另一种方式加载文件

data = DataFrame()

data.from_csv(url)
我有

Out[18]: 
<class 'pandas.core.frame.DataFrame'>
Index: 405 entries, 15.0   8.   350.0      165.0      3693.      11.5   70.  1."buick skylark 320" to 31.0   4.   119.0      82.00      2720.      19.4   82.  1.   "chevy s-10"
Empty DataFrame

In [19]: print(data.shape)
(0, 9)
产生错误

ValueError: Expecting 31 columns, got 35 in row 1
In [21]: print(data.shape)
(0, 9)
或者,同样的负面结果:

In [32]: data = DataFrame( columns = ['mpg', 'cylinders', 'displacement', 'horsepower', 'weight', 'acceleration','model', 'origin', 'car_name'])

In [33]: data.from_csv(url,sep=', \t')Out[33]: 
<class 'pandas.core.frame.DataFrame'>
Index: 405 entries, 15.0   8.   350.0      165.0      3693.      11.5   70.  1."buick skylark 320" to 31.0   4.   119.0      82.00      2720.      19.4   82.  1.   "chevy s-10"
Empty DataFrame

In [34]: data.head()
Out[34]: 
Empty DataFrame
我试着用ipython3来代替, 但它无法找到/加载matplotlib,因为我的系统没有python3的matplotlib 系统


对此问题的任何帮助都将不胜感激。

奇怪的是,delim_空白参数出现在方法摘要中,而不是参数列表中。尝试用delimiter=r'\s+'替换它,这与我认为作者的意思相同

CSV确实指逗号分隔的值,但它通常用于指一般的分隔文本格式。TSV制表符分隔值是另一个变量;在本例中,基本上是以空格分隔的值。

您的代码使用delim_空格,但错误消息显示delim空格。前者存在,后者不存在

如果数据文件包含

 14.0   8.   454.0      220.0      4354.       9.0   70.  1.    "chevrolet impala"
您可以使用

然后,数据帧确实被成功解析:

   mpg  cylinders  displacement  horsepower  weight  acceleration  model  \
0   14          8           454         220    4354             9     70   

   origin          car_name  
0       1  chevrolet impala  
因此,您只需将连字符更改为下划线

注意,当您指定delim_whitespace=True时,将使用纯Python解析器。在这种情况下,我认为没有必要这样做。Steve Howard建议使用delimiter=r'\s+'可能会更好,C引擎更快,而python引擎更快
目前更多的功能已经完成,但我认为python引擎有C引擎没有的功能。

感谢您的回复。是的,这也够奇怪的了——尤其是在文档中!顺便说一句,尝试的笔记本的url使用分隔符=r'\s+'会导致将引用的字符串再次拆分为几列。感谢您的回复以及delim_空格和delim空格之间的差异!我尝试的笔记本的url是我刚刚再试了一次,delim空白是我的一个输入错误,如果在函数调用中使用,它会被视为一个表达式。我应该编辑原始问题还是保留打字错误?谢谢现在正在尝试unutbu建议的分隔符值。。。ValueError:预期9列,第0行有12列,使用delim_whitespace=True给出原始问题中的错误,因为APT使用的熊猫是较旧的版本。您使用的熊猫是什么版本?我尝试在这里为.pandas版本0.8.0编写说明,通过APT存储库python pkg的一个。。当我运行$sudo pip install-install option=-prefix=-U时,我得到。。。文件/usr/lib/python2.7/dist-packages/pkg_resources.py,第588行,在resolve raise VersionConflictdist中,req XXX将更多信息放在这里pkg_resources.VersionConflict:numpy 1.6.2/usr/lib/pymodules/python2.7,Requirement.parse'numpy>=1.7.0'--------------命令python setup.py egg\u info失败,错误代码为1,位于~/build/pandas Storing complete log in~/.pip/pip.log到目前为止,唯一的解决方案是编辑数据文件,使其实际上是逗号分隔的请参见问题,然后在不使用delim\u空格的情况下调用pd.read\u csv函数论点
data = pd.read_csv('data', delim_whitespace = True, header=None, names = ['mpg', 'cylinders', 'displacement', 'horsepower', 'weight', 'acceleration', 'model', 'origin', 'car_name'])
   mpg  cylinders  displacement  horsepower  weight  acceleration  model  \
0   14          8           454         220    4354             9     70   

   origin          car_name  
0       1  chevrolet impala