30天学会量化交易模型 Day03

第二天讲到保存为csv文件,下面的命令将数据保存为我们更加常用,且兼容性更好的excel文件 和sql数据库文件。
 

excel.jpg

 
常用参数说明:

excel_writer: 文件路径或者ExcelWriter对象
sheet_name:sheet名称,默认为Sheet1
sep : 文件内容分隔符,默认为,逗号
na_rep: 在遇到NaN值时保存为某字符,默认为’‘空字符
float_format: float类型的格式
columns: 需要保存的列,默认为None
header: 是否保存columns名,默认为True
index: 是否保存index,默认为True
encoding: 文件编码格式
startrow: 在数据的头部留出startrow行空行
startcol :在数据的左边留出startcol列空列


tushare数据保存到SQL数据库文件

df.to_sql(表名,数据库的连接器)
引用官方的参数:


pandas.DataFrame.to_sql

DataFrame.to_sql(name, con, flavor=None, schema=None, if_exists='fail', index=True, index_label=None,chunksize=None, dtype=None)[source]

Write records stored in a DataFrame to a SQL database.

Parameters:

name : string

Name of SQL table

con : SQLAlchemy engine or DBAPI2 connection (legacy mode)

Using SQLAlchemy makes it possible to use any DB supported by that library. If a DBAPI2 object, only sqlite3 is supported.

flavor : ‘sqlite’, default None

DEPRECATED: this parameter will be removed in a future version, as ‘sqlite’ is the only supported option if SQLAlchemy is not installed.

schema : string, default None

Specify the schema (if database flavor supports this). If None, use default schema.

if_exists : {‘fail’, ‘replace’, ‘append’}, default ‘fail’

fail: If table exists, do nothing.
replace: If table exists, drop it, recreate it, and insert data.
append: If table exists, insert data. Create if does not exist.

index : boolean, default True

Write DataFrame index as a column.

index_label : string or sequence, default None

Column label for index column(s). If None is given (default) and index is True, then the index names are used. A sequence should be given if the DataFrame uses MultiIndex.

chunksize : int, default None

If not None, then rows will be written in batches of this size at a time. If None, all rows will be written at once.

dtype : dict of column name to SQL type, default None

Optional specifying the datatype for columns. The SQL type should be a SQLAlchemy type, or a string for sqlite3 fallback connection.


这里只支持sqlalchemy和sqlite。 所以如果是用的mysql,需要安装sqlalchemy的插件才行。

这里使用简单的sqlite3 作为例子:
import sqlite3
db=sqlite3.connect("testdb.db")
df = ts.get_k_data('300333',start='2016-01-01',end='2016-12-28')
df.to_sql("newtable",db,flavor='sqlite')

这样,数据就保存到到名字为testdb.db的数据库中,表名为 newtable


 
上一篇:30天学会量化交易模型 Day02 
http://30daydo.com/article/13 

下一篇:30天学会量化交易模型 Day04 (tushare获取破新高的股票)
链接: http://www.30daydo.com/article/70 

 

9 个评论

请问如果是要分别根据 日,周,月线图,分别保存在 一个excel文件中的sheet1,sheet2,sheet3的工作表里面的要怎么做好?ktype好像无法传入一个列表,且如果要在已使用过的Excel文件进行操作是不是不能直接用to_excel进行保存?
是的,因为excel是不能追加的,你可以使用保存到csv文件,这个带追加功能。
如果一定要保存为excel文件,需要手工写代码实现。 我之前折腾过一阵子,需要用到excel的一些库,可以实现。
我的出现NameError: name 'self' is not defined,刚开始学希望多多指教
你的格式可能有问题,或者没有定义类。 贴上你的代码,帮你调试。
代码是这样的,您有邮箱之类的联系方式吗?大神
import numpy as np
import pandas as pd
import tushare as ts
import openpyxl
import sqlite3

db = sqlite3.connect('testdb.db')
df = ts.get_k_data('300333', start = '2016-01-01', end = '2016-12-28')
df.to_sql('newtable', self.db, flavor = 'sqlite')
你上面的代码里面,把 self.db 改成db 就可以了。
文章的代码我也修改过了。 原文是用在类的情况下。所以多了个self.
谢谢高手,我的貌似编码方式不对,我看看怎么修改编码
不用客气。

要回复文章请先登录注册