我是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脚本在同一个导演中?
答案 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=',')
应该足够(即文件名和分隔符)。