前面介紹了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中是一樣的.這里就不再一一介紹了.