在開始學習之前,我們需要安裝pandas模塊。由於我安裝的python的版本是2.7,故我們在https://pypi.python.org/pypi/pandas/0.16.2/#downloads 此網站上下載的0.16.2版本,下載後解壓縮利用dos命令打開對應的文件下,並運行 python
在開始學習之前,我們需要安裝pandas模塊。由於我安裝的python的版本是2.7,故我們在https://pypi.python.org/pypi/pandas/0.16.2/#downloads 此網站上下載的0.16.2版本,下載後解壓縮利用dos命令打開對應的文件下,並運行 python setup.py install安裝,可能會出現報錯:error: Microsoft Visual C++ 9.0 is required (Unable to find vcvarsall.bat). Get it from http://aka.ms/vcpython27,此刻轉到http://www.microsoft.com/en-us/download/confirmation.aspx?id=44266,會自動下載Microsoft Visual C++ Compiler for Python 2.7,下載後安裝。然後再運行python setup.py install,就可以正常安裝了,安裝過程在30s左右即可完成。安裝成功後可在idle視窗中
import pandas
查看是否引用成功,成功後就可以開始下一步學習。
輸入輸出數據通常分為幾個大類,讀取文本文件和其他更高效的磁碟存儲格式,載入資料庫中數據,也可以利用web的API操作網路數據資源。
一、讀取文本格式數據
pandas提供一些將表格數據讀取為dataframe對象的函數。
read_csv | 從文件,url,文件型對象中載入帶分隔符的數據,預設分隔符為逗號。 |
read_table | 從文件,url,文件型對象中載入帶分隔符的數據,預設分隔符為製表符('\t')。 |
read_fwf | 讀取定寬格式的數據,無分隔符 |
read_clipboard | 讀取剪貼板中數據 |
read_csv會為數據分配預設的列名,也可以指定數據的列名如:pd.read_csv('ch06/ex2/csv',names=['a','b','c','d','message'])
假設你希望將message列作為dataframe的索引,可以通過index_col參數指定message:
names=['a','b','c','d','message']
pd.read_csv('ch06/ex2/csv',names=names,index_col='message')
將數據寫出到文本格式
1、利用data_frame的to_csv方法,可以將數據寫到一個以逗號分隔的文件中,也可用sep參數指定分隔符,如 data.to_csv()
2、缺失值寫入輸出時會被表示為空字元串,可使用na_rep表示為別的標記值。
手工處理分隔符格式
對於任何單字元分隔符文件,可以直接使用python內置的csv模塊,將任意打開的文件或文件型的對象傳給csv.reader:
import csv f=open('ch06/ex7.csv') reader=csv.reader(f)
對這個reader迭代將會為每行產生一個列表,為了使數據合乎需求,需要進行一些手工整理:
lines=list(csv.reader(open('ch06\ex7.csv'))) header,values=lines[0],lines[1:] data_dict={h:v for h,v in zip(header,zip(*values))}
csv的文件的形式有很多,只需定義csv.dialect的一個子類即可定義出新格式:
class my_dialect(csv.Dialect): lineterminator='\n' delimiter=';' quotechar='"' reader=csv.reader(f,dialect=my_dialect)
二、JSON數據
JSON數據已經成為通過http請求在wed瀏覽器和其他應用程式之間發送數據的標準格式之一,它是一種比表格型文本格式更靈活的數據格式。
JSON非常接近於有效的python代碼,基本類型都有對象,數組,字元串,數值,布爾型以及null。通過json.loads即可將JSON字元串轉換為python形式。
import json result=json.loads(obj)
json.dump則將python對象轉換為JSON格式
三、XML和HML:WEB信息收集
lxml可以高效可靠的解析大文件,lxml有多個編程介面,首先我們用lxml.html處理HTML,然後再用lxml.objectify做一些XML處理。
(待續)
四、二進位數據格式
實現二進位數據格式存儲最簡單的方法之一是使用python內置的pickle序列化,pandas對象都有一個用於將數據以pickle形式保存到磁碟上的save方法,然後可用pickle函數pandas.load將數據讀回python:
frame=pd.read_csv('ch06/ec1.csv') frame.save('ch06/frame_pickle')
frame.load('ch06/frame_pickle')
使用HDF5格式
HDF5中指的是層次型數據格式,每個HDF5文件都含有一個文件系統式的節點結構,它使你可以儲存多個數據集並支持元數據。HDF5支持多種壓縮器的即時壓縮。
python中有兩個介面處理HDF5,pytable和h5py。
讀取excel文件
pandas的excelfile類支持讀取存儲excel中的表格型數據,由於excelfile用到了xlrd和openpyxl包,所以得先安裝它們(https://pypi.python.org/pypi/xlrd),通過傳入一個xls或xslx文件的路徑即可創建一個excelfile實例,存放在某個工作表中的數據可以通過parse讀取到dataframe中。
xls_file=pd.ExcelFile('data.xls') table=xls_file.parse('Sheet1')
五、使用HTML和WEB API
許多網站都有一些通過JSON或其他格式提供數據的公用API,通過python訪問這些API簡單推薦的方法是requests包,如下:
網頁信息讀取後可進行更高級一步的處理。
import requests url='http://www.baidu.com' resp=requests.get(url) resp import json data=json.loads(resp.text)
六、使用資料庫
具體應用中,數據很少取自文本數據,更多來源與資料庫(包括關係型資料庫與非關係型資料庫)