我有一个数据存储在csv文件如下格式
892,3,"Kelly, Mr. James",male,34.5,0,0,330911,7.8292,,Q
893,3,"Wilkes, Mrs. James (Ellen Needs)",female,47,1,0,363272,7,,S
894,2,"Myles, Mr. Thomas Francis",male,62,0,0,240276,9.6875,,Q
895,3,"Wirz, Mr. Albert",male,27,0,0,315154,8.6625,,S
896,3,"Hirvonen, Mrs. Alexander (Helga E Lindqvist)",female,22,1,1,3101298,12.2875,,S
897,3,"Svensson, Mr. Johan Cervin",male,14,0,0,7538,9.225,,S
每个列的数据类型
^{pr2}$第一列以892893开头。。。897应以int
格式存储array
。第三列,如“Wilkes,Mrs.James(Ellen Needs)”应该存储在string
类型中。但是,第三列是string
格式,但是字符的长度是不是固定的,也就是说,我不知道这个列中存储的字符的最大长度
我已经做到了:
csv_file_object = csv.reader(open('trainData.csv', 'rb'))
header = csv_file_object.next()
data=[]
for row in csv_file_object:
data.append(row)
data = np.array(data)
但是,上面的代码将所有列读为string
,但其中许多不是string
格式,并以string
格式存储信息。另一方面,如果我使用genfromtxt
,那么第三列就是问题,因为它在double quota中包含逗号。在
我希望用它自己的数据类型来存储每一列,也就是说,第一列应该存储为int
类型。在
我的预期数组:
892 3 "Kelly, Mr. James" male 34.5 0 0 330911 7.8292 NaN Q
893 3 "Wilkes, Mrs. James (Ellen Needs)" female 47 1 0 363272 7 NaN S
894 2 "Myles, Mr. Thomas Francis" male 62 0 0 240276 9.6875 NaN Q
895 3 "Wirz, Mr. Albert" male 27 0 0 315154 8.6625 NaN S
896 3 "Hirvonen, Mrs. Alexander (Helga E Lindqvist)" female 22 1 1 3101298 12.2875 NaN S
897 3 "Svensson, Mr. Johan Cervin" male 14 0 0 7538 9.225 S
如您所见,如果数据不可用,NaN
或其派生者应该被放入。在
我应该读什么csv文件?在
我不太清楚你的意思,但我想这对你有用。在
我实现了另外两个函数来决定字符串是float还是integer。在
如果这个字符串是一个空字符串,我没有写,不过,你可以把它改成任何你喜欢的。在
输出:
^{pr2}$您可以更轻松地使用熊猫库,如下所示:
输出:
^{pr2}$csv文件应该如下所示,因为第一行是列名
你可以在这里阅读更多关于熊猫的文章http://pandas.pydata.org/pandas-docs/stable/tutorials.html
我假设你用的是熊猫,因为问题的标签是熊猫。按如下方式阅读文件:
您将得到这样一个数据帧:
我冒昧为专栏编了名字。在
一旦你把数据读入一个数据框,你就可以用它做各种各样的魔术——看看熊猫教程(它们很棒)。这里有一个例子
^{pr2}$相关问题 更多 >
编程相关推荐