前面介绍了 numpy 和 pandas 的数据计算功能.但是这些数据都是我们自己手动输入构造的.如果不能将数据自动导入到 python 中, 那么这些计算也没有什么意义.这一章将介绍数据如何加载以及存储.
首先来看读写文本格式的数据
pandas 提供了一些用于将表格型数据读取为 DataFrame 对象的函数.如下表:
csv 文件是默认以, 为分割符.可以通过命令行 cat 来读取文件内容.
- In [4]: cat /home/zhf/1.csv
- 1,2,3,4
- 5,6,7,8
- 9,10,11,12
同样的我们也可以用 pandas 的函数进行读取.
- In [6]: result=pd.read_csv(/home/zhf/1.csv)
- In [7]: result
- Out[7]:
- 1 2 3 4
- 0 5 6 7 8
- 1 9 10 11 12
但是读入的文件没有列名, 如果要添加列名, 需要设置 header 参数
- In [11]: result=pd.read_csv(/home/zhf/1.csv,header=None)
- In [12]: result
- Out[12]:
- 0 1 2 3
- 0 1 2 3 4
- 1 5 6 7 8
- 2 9 10 11 12
也可以自己制定列的名称
- In [14]: result=pd.read_csv(/home/zhf/1.csv,names=[one,two,three,four]
- ...: )
- In [15]: result
- Out[15]:
- one two three four
- 0 1 2 3 4
- 1 5 6 7 8
- 2 9 10 11 12
- In [16]: result[one]
- Out[16]:
- 0 1
- 1 5
- 2 9
还可以明确将该列放到某个索引的位置上, 通过制定 index_col 参数.
- In [18]: result=pd.read_csv(/home/zhf/1.csv,names=[one,two,three,four]
- ...: ,index_col=four)
- In [19]: result
- Out[19]:
- one two three
- four
- 4 1 2 3
- 8 5 6 7
- 12 9 10 11
如果出现像下面的这种数据,# 的这一行是我们不需要的.该如何省略掉呢
- In [22]: result=pd.read_csv(/home/zhf/1.csv)
- In [23]: result
- Out[23]:
- 1 2 3 4
- 0 # # # #
- 1 5 6 7 8
- 2 9 10 11 12
可以通过 skiprows 将某一行的数据跳过.
- In [24]: result=pd.read_csv(/home/zhf/1.csv,skiprows=[1])
- In [25]: result
- Out[25]:
- 1 2 3 4
- 0 5 6 7 8
- 1 9 10 11 12
同样的在读出的数据中, 也可以判断是否为非空或者需要填充
- In [10]: result
- Out[10]:
- 1 2 3 4
- 0 # # # NaN
- 1 5 6 7 8.0
- 2 9 10 11 12.0
- In [11]: pd.isnull(result)
- Out[11]:
- 1 2 3 4
- 0 False False False True
- 1 False False False False
- 2 False False False False
read_csv 和 read_table 的内置函数如下:
逐块读取文本文件
在处理很大的文件时, 或找出大文件中的参数集便于后续处理的时候, 只需要读取文件的一小部分或逐块对文件进行迭代.
读取某几行需要设置 nrows 参数, 这里的 nrows 下标是从0开始的.因此 nrows=2 代表前3行.
- In [19]: result=pd.read_csv(/home/zhf/1.csv,nrows=2)
- In [20]: result
- Out[20]:
- 1 2 3 4
- 0 # # # NaN
- 1 5 6 7 8.0
将数据写到文件上
数据也可以被输出为分隔符格式的文本
to_csv 将数据写入到文件中, 如果没有该文件, 将会自动创建一个.
data1=data.to_csv(/home/zhf/3.csv)
在写入的时候也可以制定分隔符
data1=data.to_csv(/home/zhf/3.csv,sep=|)
JSON文件
json 文件是在HTTP上广泛用来传输数据的文件之一, 下面来看下如何将 json 对象传入到 DataFrame 中
- In [34]: import json
- In [35]: result=json.loads(/home/zhf/test.json)
In [36]: data=json.dumps(result)
In [37]: ret=DataFrame(data[one],columns=[name,age])
还有很多其他格式的文件, 比如HTML,XML, 数据库等文件.这些文件的读写和在 python 中是一样的.这里就不再一一介绍了.
来源: http://www.bubuko.com/infodetail-2499283.html