初入python,尝试获得A股交易数据(5)——利用tushare获取A股数据并尝试存入mysql(续)
使用财经类网站如新浪财经、东方财富获取实时股票数据 #生活技巧# #个人理财技巧# #金融资讯获取#
1.Tushare是一个免费、开源的python财经数据接口包。主要实现对股票等金融数据从数据采集、清洗加工 到 数据存储的过程,能够为金融分析人员提供快速、整洁、和多样的便于分析的数据,为他们在数据获取方面极大地减轻工作量,使他们更加专注于策略和模型的研究与实现上。考虑到Python pandas包在金融量化分析中体现出的优势,Tushare返回的绝大部分的数据格式都是pandas DataFrame类型,非常便于用pandas/NumPy/Matplotlib进行数据分析和可视化。当然,如果您习惯了用Excel或者关系型数据库做分析,您也可以通过Tushare的数据存储功能,将数据全部保存到本地后进行分析。应一些用户的请求,从0.2.5版本开始,Tushare同时兼容Python 2.x和Python 3.x,对部分代码进行了重构,并优化了一些算法,确保数据获取的高效和稳定。
from sqlalchemy import create_engine
import tushare as ts
df = ts.get_tick_data('300274', date='2018-03-27')
engine = create_engine('mysql://user:passwd@127.0.0.1/db_name?charset=utf8')
df.to_sql('tick_data',engine)
首先建立本地数据库连接:
#数据库名称和密码
name = 'xxxx'
password = 'xxxx' #替换为自己的用户名和密码
#建立本地数据库连接(需要先开启数据库服务)
db = pymysql.connect('localhost', name, password, charset='utf8')
cursor = db.cursor()
其中,数据库名称(name)和密码(password)是安装MySQL时设置的。
创建数据库,专门用来存储本次股票数据:
#创建数据库stockDataBase,如果存在则跳过
sqlSentence1 = "create database if not exists stockDataBase"
cursor.execute(sqlSentence1)#选择使用当前数据库
sqlSentence2 = "use stockDataBase;"
cursor.execute(sqlSentence2)
在首次运行的时候一般都会正常创建数据库,但如果再次运行,因数据库已经存在,那么跳过创建,继续往下执行。创建好数据库后,选择使用刚刚创建的数据库,在该数据库中存储数据表。
下面看具体的存储代码:
#获取本地文件列
fileList = os.listdir(filepath)
#依次对每个数据文件进行存储
for fileName in fileList:
data = pd.read_csv(filepath+fileName, encoding="gbk")
#创建数据表,如果数据表已经存在,会跳过继续执行下面的步骤print('创建数据表stock_%s'% fileName[0:6])
sqlSentence3 = "create table if not exists stock_%s" % fileName[0:6] + "(日期 date, 股票代码 VARCHAR(10), 名称 VARCHAR(10), 收盘价 float,\
最高价 float, 最低价 float, 开盘价 float, 前收盘 float, 涨跌额 float, 涨跌幅 float, 换手率 float,\
成交量 bigint, 成交金额 bigint, 总市值 bigint, 流通市值 bigint)"
cursor.execute(sqlSentence3)#迭代读取表中每行数据,依次存储(整表存储还没尝试过)
print('正在存储stock_%s'% fileName[0:6])
length = len(data)
for i in range(0, length):
record = tuple(data.loc[i])
#插入数据语句
try:
sqlSentence4 = "insert into stock_%s" % fileName[0:6] + "(日期, 股票代码, 名称, 收盘价, 最高价, 最低价, 开盘价,\
前收盘, 涨跌额, 涨跌幅, 换手率, 成交量, 成交金额, 总市值, 流通市值) \
values ('%s',%s','%s',%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)" % record
#获取的表中数据很乱,包含缺失值、Nnone、none等,插入数据库需要处理成空值
sqlSentence4 = sqlSentence4.replace('nan','null').replace('None','null').replace('none','null')
cursor.execute(sqlSentence4)
except:#如果以上插入过程出错,跳过这条数据记录,继续往下进行
break
网址:初入python,尝试获得A股交易数据(5)——利用tushare获取A股数据并尝试存入mysql(续) https://www.yuejiaxmz.com/news/view/147261
相关内容
Python 量化投资原来这么简单(5) — A股回测KDJ策略上证指数股吧,1A0001股吧
数据库连接对象Connection对象的获取及相关知识总结
python数据分析
公交线路数据获取脚本分享
Python爬虫山东济南景点数据可视化和景点推荐系统 开题报告
if(a==1&a==2&a==3)为true?
用python写一个股票提醒、并用邮件方式发送出去
让生活自动化的5个Python项目:从初级到高级
Python+Django二手图书交易售卖系统=含卖家