ipython pandas TypeError:read_csv()获得意外的关键字参数“delim whitespace”
在尝试ipython.org笔记本时,介绍了用于数据挖掘的PYTHON 以下代码: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',
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