我已经下载了数据集"第一次婚姻的年龄(女性)"来自Excel {CSV格式的http://www.gapminder.org/data。数据集的第一行包含标题,第一列包含国家/地区的名称。
要阅读这些数据,我使用下面的代码。
import numpy as np
source=open("D:\FirstMarriage.csv")
data = np.genfromtxt(source, dtype=None, delimiter=",", skip_header=1)
print data
执行此代码后(在Spyder IDE中),我收到此错误:
ValueError: Some errors were detected !
Line #37 (got 118 columns instead of 117)
Line #38 (got 118 columns instead of 117)
Line #72 (got 118 columns instead of 117)
Line #87 (got 118 columns instead of 117)
Line #97 (got 118 columns instead of 117)
Line #98 (got 118 columns instead of 117)
Line #184 (got 118 columns instead of 117)
当我用Notepad ++打开csv文件并查找指示的行时,我发现这些行包含名称中具有昏迷的国家/地区的名称。此外,这些名称被用作引号,因为它们可能只表示这是一个全名。但是,它对我没有帮助。请参阅下面的示例(我只显示第一列):
China
Colombia
"Congo, Dem. Rep."
"Congo, Rep."
Costa Rica
有没有简单的方法来清理这些数据并将引号中的名称视为单个字符串?
我在Windows 10上使用Python 2.7(Anaconda)。
提前致谢!
答案 0 :(得分:2)
在我看来,读取csv或任何其他字符分隔文件的最佳方法是使用Pandas中的DataFrame
类。您不必处理逗号的存在,因为DataFrame
遵循所有公共CSV规范。
import pandas as pd
data = pd.read_csv(source)
答案 1 :(得分:0)
numpy引用不知道。
有两个解决方案。
使用 pandas 库
import pandas
pandas.read_csv(filepath_or_buffer, quotechar='"').as_matrix()
答案 2 :(得分:0)
可以使用2个csv文件来完成。首先你需要创建一个来减轻逗号中的数据并添加一个单独的分隔符;
并删除那些双引号。欲了解更多信息,请访
https://docs.scipy.org/doc/numpy/reference/generated/numpy.genfromtxt.html
使用deletechars
参数。然后在生成的csv文件中使用它作为numpy数组的输入,只需将分隔符用作;