如何保存csv文件,以便iPython shell可以打开并使用它?

时间:2016-07-09 19:51:10

标签: python python-2.7 csv pandas ipython

我是Python的新手。我在iPython shell中打开我的csv文件时遇到了麻烦,虽然我可以在Spyder中打开我的文件。如何正确保存csv或任何其他文件以供Spyder和iPython使用?

例如,我尝试打开并阅读文件

DATA_data = open('Data.csv')

DATA_reader = (pd.read_csv(Data), ',')

print DATA_reader

我会收到此错误消息:

IOError: [Errno 2] No such file or directory: 'Data.csv'

另外,我如何确保csv文件与我的python脚本在同一个导演中?

1 个答案:

答案 0 :(得分:1)

csv文件是纯文本,因此几乎所有代码都可以读取它。使用ipython,您可以使用shell命令,Python读取或使用numpy或pandas来读取它。

知道文件所在位置的第一个问题。这是一个文件系统问题 - 目录是什么。在ipython中,您可以使用%pwd魔法查看当前目录,使用%cd更改目录。 %ls给出了目录列表。使用magics,您可以使用像bash这样的linux shell(以及带有一些术语调整的窗口)进行所有文件和目录操作。

找到文件后,您可以使用%cat

查看

例如:

In [26]: %pwd
Out[26]: '/home/paul'
In [27]: %ls
~/    Desktop/    Downloads/  mypy/      Public/     Videos/
bin/  Documents/  Music/      Pictures/  Templates/
In [28]: %cd mypy
/home/paul/mypy
In [29]: %ls test*
test       test2.hdf  test.h5    test.ipy    test.mat  test.npz
test1.hdf  test.gz    test.hdf5  testipy.py  test.npy  test.txt
In [30]: %cat test
       one          a          1
       two          b          2
     three          c          3

普通Python阅读:

In [34]: f=open('test')
In [35]: f.read()
Out[35]: '       one          a          1\n       two          b          2\n     three          c          3\n'
In [36]: f.close()

np.genfromtxt是最强大的numpy csv读者:

In [38]: np.genfromtxt('test',dtype=None)
Out[38]: 
array([(b'one', b'a', 1), (b'two', b'b', 2), (b'three', b'c', 3)], 
      dtype=[('f0', 'S5'), ('f1', 'S1'), ('f2', '<i4')])

在这种情况下,我得到了一个带有结构化dtype的1d数组 - 因为字符串和数字列的混合。在这种情况下,我的分隔符是空格。

loadtxt

In [40]: np.loadtxt('test',dtype='str')
Out[40]: 
array([["b'one'", "b'a'", "b'1'"],
       ["b'two'", "b'b'", "b'2'"],
       ["b'three'", "b'c'", "b'3'"]], 
      dtype='<U8')

我没有在此计算机上安装pandas,因此无法证明这一点,但我认为data = pd.read_csv('data.csv', delimiter=',')应该足够(即文件名和分隔符)。