【发布时间】:2015-07-21 09:57:43
【问题描述】:
我有一个数据存储在 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
每个列
的数据类型1. int 6. int
2. int 7. int
3. String 8. float
4. String 9. float
5. float 10.String
11.String
以 892, 893, ... 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,第三列就有问题,因为它在双引号内包含逗号。
我希望用自己的数据类型存储每一列,即第一列应该存储为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文件?
【问题讨论】:
-
pandas.read_csv('data.csv', dtypes=[int, int, str])呢? -
@mbatchkarov 我不知道 pandas,我可以用它在 array 或 matrix 中得到预期的结果吗?你能用你的方式写一个答案吗?
-
@mbatchkarov 嘿,我应该如何使用它?第一行是标题
标签: python numpy pandas anaconda