您的位置:首页 > 数据库 > MySQL

pandas和数据库进行交互(以mysql为例)

2016-07-17 22:34 1751 查看
pandas提供了将数据便捷存入关系型数据库的方法

在新版的pandas中,主要是以sqlalchemy方式与数据库建立链接

支持Mysql、postgresql、Oracle、MS SQLServer、SQLite等主流数据库

本例以MySql为代表,展示将从tushare中获取到的股票数据存入数据库的方法

其他类型数据库请参考sqlalchemy官方文档的create_engine部分

1、用到的模块

import tushare as ts
import pandas as pd
from sqlalchemy import create_engine
2、tushare中的数据展示

TuShare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工到数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据。

考虑到python pandas包在金融量化分析中体现出的优势,TuShare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化。



3、进行交互

df = ts.get_hist_data('000875')#读取数据,格式为DataFrame
engine = create_engine('mysql://root:pwd@192.168.226.148/tushare?charset=utf8')#用sqlalchemy创建引擎
df.to_sql('tick_data',engine,if_exists='append')#存入数据库,这句有时候运行一次报错,运行第二次就不报错了,不知道为什么
df1 = pd.read_sql('tick_data',engine)#从数据库中读取表存为DataFrame

4、存入之前和存入之后进行比较

存入前DataFrame的info:



存入后DataFrame的info:



按上面的方式读取之后还要进行进一步处理才能还原成之前的DataFrame(需要把date设为索引),用下面的读取方式进行读取就和原来的数据一样了:

df1 = pd.read_sql('tick_data',engine,index_col='date',parse_dates=['date'])
parse_dates参数可以不填的,因为tushare中读出来的DataFrame的索引也不是datetime格式的。

参考资料:
http://jingyan.baidu.com/article/3065b3b68d7fb5becff8a494.html
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: