Python数据分析 | (21) Web APIs交互和数据库交互

目录

1. Web APIs交互

2. 数据库交互

3. 总结


1. Web APIs交互

许多网站都有一些通过JSON或其他格式提供数据的公共API。通过Python访 问这些API的办法有不少。一个简单易用的办法(推荐)是requests包 (http://docs.python-requests.org)。

为了搜索最新的30个GitHub上的pandas主题,我们可以发一个HTTP GET请 求,使用requests扩展库:

import requests
url = 'https://api.github.com/repos/pandas-dev/pandas/issues'
resp = requests.get(url)
resp

响应对象的json方法会返回一个包含被解析过的JSON字典,加载到一个Python对象中:

data = resp.json()
data[0]['title']

 data中的每个元素都是一个包含所有GitHub主题页数据(不包含评论)的字 典。我们可以直接传递数据到DataFrame,并提取感兴趣的字段:

issues = pd.DataFrame(data, columns=['number', 'title',
                                     'labels', 'state'])
issues

花费一些精力,你就可以创建一些更高级的常见的Web API的接口,返回DataFrame对象,方便进行分析。

 

2. 数据库交互

在商业场景下,大多数数据可能不是存储在文本或Excel文件中。基于SQL的 关系型数据库(如SQL Server、PostgreSQL和MySQL等)使用非常广泛, 其它一些数据库也很流行。数据库的选择通常取决于性能、数据完整性以及 应用程序的伸缩性需求。

将数据从SQL加载到DataFrame的过程很简单,此外pandas还有一些能够简 化该过程的函数。例如,我将使用SQLite数据库(通过Python内置的sqlite3驱动器):

import sqlite3
query = """
CREATE TABLE test
(a VARCHAR(20), b VARCHAR(20),
 c REAL,        d INTEGER
);"""
con = sqlite3.connect('mydata.sqlite')
con.execute(query)
con.commit()

然后插入几行数据:

data = [('Atlanta', 'Georgia', 1.25, 6),
        ('Tallahassee', 'Florida', 2.6, 3),
        ('Sacramento', 'California', 1.7, 5)]
stmt = "INSERT INTO test VALUES(?, ?, ?, ?)"
con.executemany(stmt, data)
con.commit()

从表中选取数据时,大部分Python SQL驱动器(PyODBC、psycopg2、MySQLdb、pymysql等)都会返回一个元组列表:

cursor = con.execute('select * from test')
rows = cursor.fetchall()
rows

你可以将这个元组列表传给DataFrame构造器,但还需要列名(位于光标的description属性中):

cursor.description

pd.DataFrame(rows, columns=[x[0] for x in cursor.description])

这种数据规整操作相当多,你肯定不想每查一次数据库就重写一次。SQLAlc hemy项目是一个流行的Python SQL工具,它抽象出了SQL数据库中的许多 常见差异。pandas有一个read_sql函数,可以让你轻松的从SQLAlchemy连 接读取数据。这里,我们用SQLAlchemy连接SQLite数据库,并从之前创建 的表读取数据:

import sqlalchemy as sqla
db = sqla.create_engine('sqlite:///mydata.sqlite')
pd.read_sql('select * from test', db)

 

3. 总结

访问数据通常是数据分析的第一步。在Python数据分析(19)、(20)、(21)中,我们已经学了一些有用的工具。在接下来的博客中,我们将深入研究数据规整、数据可视化、时间序列分析和其它主题。

 

 

 

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值