实现二进制存储最简单方法就是使用 pickle 序列化。
pandas 可以用
把 frame 以 pickle 形式保存到磁盘上的方法。读取使用的是
- frame.save('ch06/frame_pickle')
。
- pd.load('ch06/frame_pickle')
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被用来一次写多次读,不建议多个写操作,文件可能会损坏。
读取 xls 或者 xlsx 文件得到 ExcelFile 实例
- xls_file = pd.ExcelFile('data.xls')
实例再通过 parse 读取到 DataFrame 中:
- table = xls_file.parse('Sheet1')
访问这些提供了数据的 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 实例:
- import pymongo
- con = pymongo.Connection('localhost',port=27017)
写入数据:
- import requests, json
- url = 'http://search.twitter.com/search.json?q=python pandas'
- 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,数据库等等。既然数据已经加载完毕,那么下一章节就该开始清洗,规整一下这些数据了。
来源: http://www.jianshu.com/p/194caa56310a