我目前正在尝试使用Python中的numpy库将一些逗号分隔的文本数据导入到数组中。我使用以下代码:
data = np.genfromtxt(fname, delimiter=',')
我收到以下错误:
第2行(有12列而不是11列)
表示标题后的每一行。
原因似乎是其中一个列包含一个逗号,但尝试使用该列数据周围的文本限定符(“)处理此问题。如果我使用Python csv库,则默认处理例如:
reader = csvreader(open(fname, 'rb'))
我知道我可以使用csv
库导入数据,然后将其转换为数组,但我想知道是否可以从numpy的一个函数中执行此操作,该函数将文本数据转换为数组为genfromtxt
。我已经查看了genfromtxt
上的帮助,但所列出的参数似乎都没有描述我要找的内容,除非我遗漏了什么。
如果它有帮助,这里是文件中几行的样本:
survived,pclass,name,sex,age,sibsp,parch,ticket,fare,cabin,embarked
0,3,"Braund, Mr. Owen Harris",male,22,1,0,A/5 21171,7.25,,S
1,1,"Cumings, Mrs. John Bradley (Florence Briggs Thayer)",female,38,1,0,PC 17599,71.2833,C85,C
1,3,"Heikkinen, Miss. Laina",female,26,0,0,STON/O2. 3101282,7.925,,S
我认为这是名称列引起的问题。
答案 0 :(得分:1)
Numpy数组不太适合您在这里的分类数据。您可能最好使用pandas
:
import pandas
data = pandas.read_csv(fname)
答案 1 :(得分:1)
解决此问题的一种方法是添加另一个名称字段,这样您就有十三个名称字段,其中包含一个单独的forename和surname列:
survived,pclass,surname,forname,sex,age,sibsp,parch,ticket,fare,cabin,embarked
如果您随后导入:
data = np.genfromtxt(fname, delimiter=',',names=True,dtype=None)
应该有效:
data['surname']
array(['"Braund', '"Cumings', '"Heikkinen'],
dtype='|S10')
请注意,您可能还需要在原始文件中列出"
标记。