SciPy.org — SciPy.org https://www.scipy.org/
Python Data Analysis Library — pandas: Python Data Analysis Library http://pandas.pydata.org/
pandas_360百科 https://baike.so.com/doc/25250734-26252486.html
SQLAlchemy 教程 —— 基础入门篇 - 吃咯 - 博客园 https://www.cnblogs.com/mrchige/p/6389588.html
SQLAlchemy Documentation — SQLAlchemy 1.2 Documentation http://docs.sqlalchemy.org/en/latest/
pandas和数据库进行交互(以mysql为例)
pandas中主要是以sqlalchemy方式与数据库建立链接
支持Mysql、postgresql、Oracle、MS SQLServer、SQLite等主流数据库
本例以MySql为代表,展示将从tushare中获取到的股票数据存入数据库的方法,其他类型数据库请参考sqlalchemy官方文档的create_engine部分
tushare中的数据展示
TuShare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工到数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据。
python pandas包在金融量化分析中体现出的优势,TuShare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化。
Python财经数据接口包TuShare的使用_百度经验 https://jingyan.baidu.com/article/3065b3b68d7fb5becff8a494.html
控制台窗口:pip install tushare
控制台窗口:pip install tushare --upgrade
import tushare as ts
import pandas as pd
from sqlalchemy import create_engine
ts.get_hist_data('601111').head(1000) #获得1000条数据
Python财经数据接口包TuShare的使用_百度经验 https://jingyan.baidu.com/article/3065b3b68d7fb5becff8a494.html
df = ts.get_hist_data('000875')#读取数据,格式为DataFrame
engine = create_engine('mysql://root:[email protected]/tushare?charset=utf8')#用sqlalchemy创建引擎
df.to_sql('tick_data',engine,if_exists='append')#存入数据库,这句有时候运行一次报错,运行第二次就不报错了,不知道为什么
df1 = pd.read_sql('tick_data',engine)#从数据库中读取表存为DataFrame
按上面的方式读取之后还要进行进一步处理才能还原成之前的DataFrame(需要把date设为索引),用下面的读取方式进行读取就和原来的数据一样了:
df1 = pd.read_sql('tick_data',engine,index_col='date',parse_dates=['date'])
parse_dates参数可以不填的,因为tushare中读出来的DataFrame的索引也不是datetime格式的。
Pandas读取MySQL数据到DataFrame,数据库连接:
连接方法一:
#-*- coding:utf-8 -*-
from sqlalchemy import create_engine
class mysql_engine():
user='******'
passwd='******'
host='******'
port = '******'
db_name='******'
engine = create_engine('mysql://{0}:{1}@{2}:{3}/{4}?charset=utf8'.format(user,passwd,host,port,db_name))
def get_data(sql):
pg_enine=mysql_engine()
try:
with pg_enine.engine.connect() as con, con.begin():
df=pd.read_sql(sql,con)# 获取数据
con.close()
except:
df=None
return df
数据库连接方法二:
conn = MySQLdb.connect(host="******",user="******",passwd="******",db='******',port = ******,charset="utf8")
sql = "select * from ****** limit 3"
df = pd.read_sql(sql,conn,index_col="id")
print df