【问题标题】:How to save a csv file so iPython shell can open and use it?如何保存 csv 文件以便 iPython shell 可以打开并使用它?
【发布时间】:2016-07-09 19:51:09
【问题描述】:

我是 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 脚本在同一个目录中?

【问题讨论】:

  • 请编辑您的问题以包含您尝试过的内容。
  • 如果您使用的是 pandas,请将该标签放入您的问题或其他包中
  • 您确定文件 Data.csv 与 python 脚本位于完全相同的目录中吗?

标签: python python-2.7 csv pandas ipython


【解决方案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 的一维数组 - 因为字符串和数字列的混合。在这种情况下,我的分隔符是空格。

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=',') 应该足够了(即文件名和分隔符)。

【讨论】:

    猜你喜欢
    • 2015-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-09
    • 2016-11-16
    • 1970-01-01
    • 2019-10-30
    • 1970-01-01
    相关资源
    最近更新 更多