利用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)

六、使用數據庫

具體應用中,數據很少取自文本數據,更多來源與數據庫(包括關系型數據庫與非關系型數據庫)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM