如何将CSV加载到IPython笔记本中

时间:2014-07-20 18:33:40

标签: python csv matplotlib ipython

我有一个csv文件已准备好加载到我的python代码中,但是,我想将其加载到以下格式:

data = [[A,B,C,D],
        [A,B,C,D],
        [A,B,C,D],
       ]

如何加载可读作为numpy数组的.csv文件?例如,简单地使用以前的教程会严重影响使用:

data = np.array(data)

如果不这样做,我只想上传我的csv文件(例如'dual-Cored.csv'作为data = dual-Cored.csv)

4 个答案:

答案 0 :(得分:9)

最简单的解决方案就是:

import numpy as np

data = np.loadtxt("myfile.csv")

只要数据可以转换为float并且每行的列数相同,就可以了。

如果某些列中的数据无法转换为float,您可以为其编写自己的转换器。请参阅numpy.loadtxt文档。它非常灵活。

答案 1 :(得分:2)

如果你的CVS是这样的:

A,B,C,D
A,B,C,D
A,B,C,D
A,B,C,D

然后

import csv
with open(filename, 'rb') as f:
    data = list(csv.reader(f))

会使data等于

[['A', 'B', 'C', 'D'],
 ['A', 'B', 'C', 'D'],
 ['A', 'B', 'C', 'D'],
 ['A', 'B', 'C', 'D']]

答案 2 :(得分:1)

作为一个小例子,我有一些文件data.csv,其中包含以下内容。

  

A,B,C,d
  1,2,3,4
  W,X,Y,Z
  5,6,7,8

with open('data.csv', 'r') as f:
    data = [i.split(",") for i in f.read().split()]
    print data

输出

[['A', 'B', 'C', 'D'],
 ['1', '2', '3', '4'],
 ['W', 'X', 'Y', 'Z'],
 ['5', '6', '7', '8']]

答案 3 :(得分:1)

我假设您的意思是将所有数据点作为整数或浮点数。

首先我写了一些示例数据:

with open('dual-Cored.csv', 'w') as f:     
    f.write('1,2,3,4\n5,6,7,8\n9,10,11,12')

现在我正在读回样本数据

with open('dual-Cored.csv', 'rU') as f:
    c = csv.reader(f)
    for l in c:
         print list(map(int, l))

打印哪些:

[1, 2, 3, 4]
[5, 6, 7, 8]
[9, 10, 11, 12]

我建议您在datatypes in the Python tutorial, which talks about the difference between strings and numerical types.

上阅读一下

使用csv模块读入numpy数组:

import numpy
with open('dual-Cored.csv', 'rU') as f:
    c = csv.reader(f)
    ar = numpy.array(list(c), dtype=int)

ar现在返回:

array([[ 1,  2,  3,  4],
       [ 5,  6,  7,  8],
       [ 9, 10, 11, 12]])

或直接使用numpy.genfromtxt函数(您需要指定分隔符):

numpy.genfromtxt('dual-Cored.csv', delimiter=',')

返回:

array([[  1.,   2.,   3.,   4.],
       [  5.,   6.,   7.,   8.],
       [  9.,  10.,  11.,  12.]])