欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

关于利用Python进行数据分析的方法讲解

程序员文章站 2024-01-24 08:33:46
二进制数据格式 pickle序列化 实现二进制存储最简单方法就是使用pickle序列化。 pandas可以用frame.save('ch06/frame_pickle...

二进制数据格式

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,数据库等等。