pandas数据分析-读取sqlite3数据库的数据
在许多应用中,数据很少取自文本文件,因为用这种方式存储大量数据文件很低效,基于SQL的关系型数据库使用很广泛,此外还有一些非SQL(如NOSQL)型数据库也变得非常流行,数据库的选择通常取决于性能,数据完整性以及应用程序的伸缩性需求。
将数据从SQL加载到DataFrame非常简单,此外pandas还有一些能简化该过程的函数,例如,我将使用一款嵌入式SQLite数据库(通过python内置的sqlite3驱动器)
import sqlite3
from pandas import Series,DataFrame
import pandas.io.sql as sql
query = """
CREATE TABLE test
(a VARCHAR(20),b VARCHAR(20),
c REAL,d INTEGER
);"""
con = sqlite3.connect(':memory:')
con.execute(query)
con.commit()
然后插入几行数据
从表中选取数据时,会返回一个元组列表
date = [('atl','at',1.25,3),
('btl','bt',1.35,4),
('ctl','ct',1.45,5)]
stmt = "INSERT INTO test VALUES(?,?,?,?)"
con.executemany(stmt,date)
con.commit()
cur = con.execute('select * from test')
rows = cur.fetchall()
print(rows)
你可以将这个元组列表传给DataFrame的构造器
print(DataFrame(rows))
这种数据规整操作非常多,你肯定不想每查一次数据库就重写一次,pandas有一个可以简化该过程的read_sql函数,只需要传入select语句和连接对象即可。
print(sql.read_sql('select * from test',con))