关于利用Python进行数据分析的方法讲解
二进制数据格式
pickle序列化
实现二进制存储最简单方法就是使用pickle序列化。
pandas可以用frame.save('ch06/frame_pickle')把frame以pickle形式保存到磁盘上的方法。读取使用的是pd.load('ch06/frame_pickle')。
使用HDF5格式
HDF指层次型数据格式(hierarchical data format)。HDF5支持多种压缩器的即时压缩,还能高效存储重复模式数据,还可以高效分块读写,所以对非常大的无法直接放入内存的数据集就非常有效。
HDF5库有两个接口分别是PyTables和h5py。处理海量数据(io密集型 重复读写磁盘数据)时,这两个接口非常符合要求。
#HDFStore就是通过PyTables存储的pandas对象: store = pd.HDFStore('mydata.h5') store['obj1'] = frame store['obj1_col'] = frame['a'] #形如字典一样存取。 #HDF5被用来一次写多次读,不建议多个写操作,文件可能会损坏。
读取Microsoft Excel文件
读取xls或者xlsx文件得到ExcelFile实例
xls_file = pd.ExcelFile('data.xls')
实例再通过parse读取到DataFrame中:
table = xls_file.parse('Sheet1')
使用HTML和Web API
访问这些提供了数据的API最简单的方法使用requests包。
import requests url = 'https://www.baidu.com' resp = requests.get(url)
很多的Web API返回的都是JSON字符串,我们先要加载到Python对象中:
import json data = json.loads(resp.text) data.keys() #keys里有一个results,results有一组tweet,每条为一个字典。 tweet_fields = ['created at', 'from-User', 'id','text'] tweets = DataFrame(data['results'], columns = tweet_fields) #即可得到tweet的数据 tweets.ix[7]
数据库">使用数据库
数据库目前主要有两种,一种是SQL关系数据库(SQL Server,MySQL等),另外就是NoSQL(Not Only SQL)。
import sqlite3 #假设已经有一个Table叫text,先取出表中数据 con = sqlite3.connect(':memory:') cursor = con.execute('select * from test') rows = cursor.fetchall() #cursor.description游标的description属性获取到列名 DataFrame(rows,columns = zip(*cursor.description)[0])
很麻烦,对吧。pandas.io.sql模块提供了简单的方法(read_frame):
import pandas.io.sql as sql sql.read_frame('select * from test',con) #con为连接对象
存取MongoDB中的数据
首先连接上MongoDb实例:
import pymongo con = pymongo.Connection('localhost',port=27017)
写入数据:
import requests, json url = 'https://search.twitter.com/search.json?q=python%20pandas' data = json.loads(requests.get(url).text) for tweet in data['results']: tweets.save(tweet)
读取数据:
cursor = tweets.find({'from_user':'wesmckinn'}) #cursor可以迭代 tweet_fields =['created at','from_user','id','text'] result= DataFrame(list(cursor), columns = tweet_fields)
总结
这章和上一章总结了一般情况下如何加载常用的其他来源的数据,存储,查询等。来源主要有常用的文本,表格,json,数据库等等。
上一篇: centos 7 安装nagios
下一篇: CSS(五)