数据获取(期权数据)
本人从事领域为量化期权领域(皇冠上的明珠,真好听,可是做起来,难度真是(滴-------------))。从最开始的手动从三大所复制粘贴期权数据,到现在爬虫整理数据,再之后借助第三方获取数据,这个历程真的是无以复加。就想说(滴---------------------)。
不废话,直接上干货。(要求,复制我代码可以拿过去就直接跑出和我一样的结果出来。如果没有,欢迎留言,一同克服难关。)
首先wind数据源获取数据:
#导包
import pandas as pd
import numpy as np
from scipy.interpolate import interp1d
from WindPy import *
from datetime import timedelta
w.start()#获取50数据并保存
_,df_price = w.wset("optiondailyquotationstastics","startdate=2020-06-01;enddate=2020-07-02;exchange=sse;windcode=510050.SH",usedf=True)
df_price.to_csv('option_price.csv')
_,df_con = w.wset("optioncontractbasicinfo","exchange=sse;windcode=510050.SH;status=all", usedf=True)
df_con.to_csv('info.csv')#修改数据并统一
df_price = pd.read_csv('option_price.csv', index_col=0, parse_dates=['date'], dtype={'option_code':str})
con_col = df_con.columns.values
con_col[0] = 'option_code'
df_con.columns = con_col
df_data = pd.merge(df_price, df_con, on='option_code')
df_data.to_csv('50info.csv')
然后是tushare数据源:
import numpy as np
import pandas as pd
import tushare as ts
ts.set_token('token')
pro = ts.pro_api()
import time
df = pd.DataFrame()
for i in range(10000000 , 20000000):dfi = pro.opt_daily(ts_code = str(i)+'.SH')time.sleep(6)df.append(dfi)
df.to_csv('D:/50.csv')
保存数据
本人使用的是SQL_Server,不知道就用这个代码:
from sqlalchemy import create_engine
from scipy.interpolate import interp1d
import pymssql
#连接数据库
conn = pymssql.connect(host = '.',user ='sa',password = 'test',database = 'pos',charset = 'utf8' )
#pos:数据库名称
engine = create_engine('mssql+pymssql://sa:test@127.0.0.1/pos')
#插入数据库
data.to_sql(db_name,engine,index=False,if_exists='append')
#append:后面添加 #replace :覆盖
#调用数据,本人习惯全部调用后再进行数据处理
df=pd.read_sql("select * from pos ",engine)
print(df)
使用MongoDB
from pymongo import MongoClient
import pandas as pd
client = MongoClient(host = '.',port =27017)#获取数据库
test_db= client['db']
#查看库下所有的表格
print(test_db.collection_names(include_system_collctions=False))
#获取表格
collection == test_db['sheet']
collection.insert_many(df)
#获取数据并保存到本地
s = pd.DataFrame(list(collection.find()))
s.to_csv('s.csv')