数据清洗,筛选

本人在私募,负责数据收集以及清洗,就是包括收集数据,按照领导要求,选出满足条件的数据,用于校验策略是否正确。
现在就在这进行代码上传,即用于自己总结整理,也用于供大家学习了解,实习生到底干什么事。
数据收集:
#期权数据收集
import akshare as ak
import pandas as pd
import numpy as np
import datetime
import time
#用于将千分位数字改为常规数字
from  locale import atof
# 显示所有列
pd.set_option('display.max_columns', None)
# 显示所有行
pd.set_option('display.max_rows', None)
#收集数据,铁矿石期权的全部数据
start = '2019-02-09'
#获得全部的交易日数据
dates  = ak.tool_trade_date_hist_sina() 
today = time.strftime("%Y-%m-%d")
#筛选符合条件的日期
dates = dates.loc[(dates['trade_date']>start)&(dates['trade_date']<today)] 
#创建储存数据的DF
last = pd.DataFrame()
last_2 = pd.DataFrame()
#循环获取数据
for i in range(len(dates)):date = dates.iloc[i, 0]#print(date)# 获取当天所有合约part_1, part_2 = ak.get_dce_option_daily(trade_date= i, symbol="铁矿石期权")#print(part_1.head())#print(part_2.head())#增加日期,cp,年份,月份,行权价,part_1['date'] = datepart_1['cp'] = part_1['合约名称'].apply(lambda x: x[6:7])part_1['year'] = part_1['合约名称'].apply(lambda x: x[1:3])part_1['o_month'] = part_1['合约名称'].apply(lambda x: x[3:5])part_1['xqj'] = part_1['合约名称'].apply(lambda x: x[8:]) part_1['合约系列'] = part_1['合约名称'].apply(lambda x: x[0:5])#以日期作为indexpart_1.set_index('date',inplace=True)last = last.append(part_1)part_2.columns = [['合约系列','IV']]#增加日期,年份,月份part_2['date'] = datepart_2.set_index('date')part_2['year'] = part_2['合约系列'].apply(lambda x: x[1:3])part_2['month'] = part_2['合约系列'].apply(lambda x: x[3:])last_2 = last_2.append(part_2)
#保存数据,为方便读者复现,使用csv。(真实情况,直接存入sql数据库,各种报错,各种坑,数据缺失,格式不正确............)
last.to_csv('i.csv')
last_2.to_csv('i2.csv')

数据处理:

df = pd.read_csv('i.csv')
#默认期权持仓量为1,999这种千分位数字格式。
setlocale(LC_NUMERIC, 'English_US')
df['持仓量'] = df['持仓量'].apply(lambda x:atof(x))#根据每天的主力合约数据信息,筛选最虚值合约,分为C,P两块,且持仓量最大。
#举例:今天c端最虚c5800,持仓量1w,为c端最大持仓量,则符合条件保留。
def select_xu(df):df_c = df.loc[df['cp'] == 'C']#根据行权价排序,获得最虚值,C端取最大值。dfc = df_c.sort_values(by='xqj',ascending=True).tail(1)
#     print(df_c)
#     print(dfc)
#     print('-'*20)df_p = df.loc[df['cp']=='P']#根据行权价排序,获得最虚值,p端取最小值。dfp = df_p.sort_values(by='xqj',ascending=True).head(1)
#     print(df_p)
#     print(dfp)if max(dfc['持仓量']) == max(df_c['持仓量']) :dfc = dfcelse:dfc = Noneif max(dfp['持仓量']) == max(df_p['持仓量']) :dfp = dfpelse:dfp = Nonereturn dfc ,dfp
#目标,里面为日期和年份,月份
dfd = pd.read_excel('I.xlsx') 
last = pd.DataFrame()
last1 = pd.DataFrame()
last2 = pd.DataFrame()
if __name__ == '__main__':for i in range(len(dfd)):year = dfd.iloc[i,-2]month = dfd.iloc[i,-1]date = dfd.iloc[i,0]#筛选数据d = df.loc[(df['year']==int(year))&(df['o_month']==int(month))&(df['date']==datetime.datetime.strftime(date,'%Y-%m-%d'))]#如果数据不为空if len(d)>0:dfc,dfp =select_xu(d)if dfc is not None and dfp is not None:s = pd.merge(dfc,dfp)last = last.append(s)elif dfc is  None and dfp is not None :s = dfplast1 = last1.append(s)elif dfc is not None and dfp is  None :s = dfclast2 = last2.append(s)else:s = Noneelse:passlast.to_csv('i0.csv')last1.to_csv('i1.csv')last2.to_csv('i2.csv')

I.xlsx数据内容如下:
dfd数据格式
此时便可获得满足条件的期权数据。用于后续的校验。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/449801.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

HSTS的来龙去脉

前言 安全经常说“云、管、端”&#xff0c;“管”指的是管道&#xff0c;传输过程中的安全。为了确保信息在网络传输层的安全&#xff0c;现在很多网站都开启了HTTPS&#xff0c;也就是HTTPTLS&#xff0c;在传输过程中对信息进行加密。HTTPS使用了对称加密、非对称加密、消息…

利用XShell上传、下载文件(使用sz与rz命令) 超实用!

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 rz、sz 安装方式&#xff1a;sz/rz命令安装方式 借助XShell&#xff0c;使用linux命令sz可以很方便的将服务器上的文件下载到本地&#…

quantaxis使用docker安装,解决了一个很奇特的问题

之前使用docker-compose pull 更新之后&#xff0c;使用docker-compose up进行安装。出现 qaweb显示address already in web,cmd中显示Starting qa_web is wrong。之前一直觉得什么毛病啊&#xff0c;试了很多办法。 比如关闭8010接口&#xff1a; netstat -ano|findstr “801…

Datawhale MySQL 训练营 Task2 查询语句

目录 MySQL 管理MySQL 用户管理 参考数据库管理SQ查询语句1. 导入示例数据库&#xff0c;教程 MySQL导入示例数据库2. 查询语句 SELECT3. 筛选语句 WHERE &#xff0c;过滤4. 分组语句 GROUP BY5. 排序语句 ORDER BY6. 函数作业总结MySQL 管理 MySQL版本 8.0.15 MySQL 用户管理…

视差滚动(Parallax Scrolling)插件补充

13. Windows Windows (github) 是一个让你用占据整个屏幕的section来构建单面网站的插件。该插件提供给你一些回调函数&#xff0c;当新的section出现在可视区并且并且处理快照时被调用&#xff0c;所以你可以轻松的继承它来自定义导航菜单或更多的东西。下面是一个例子&#x…

MVC日期格式化,后台使用Newtonsoft.Json序列化日期,前端使用”f”格式化日期

MVC控制器中&#xff0c;经常使用Newtonsoft.Json把对象序列化成json字符串传递到前端视图。当对象中有DateTime类型的属性时&#xff0c;前后台如何处理才能把DateTime类型转换成想要的格式呢&#xff1f; 有这样的一个类具有DateTime类型属性&#xff1a; using System; name…

Google Go Programming In Eclipse

http://www.tutorialsavvy.com/2013/04/google-go-programming-in-eclipse.html/ Google Go Programming In Eclipse The new “Go” programming language is from Google co.It has many features better then other languages.Go language features are:-– High Speed Comp…

pycharm打开ipynb显示为文本格式解决办法

然后进入 添加类型 jupyter notebook 然后下方添加 *.ipynb

[基础篇]ESP32-RTOS-SDK教程(一)之Windows环境搭建

当下正是物联网最好的时代&#xff0c;学习新的技术怎么能只学习ESP8266呢&#xff1f;要知道ESP8266还有一个孪生兄弟呢&#xff0c;最重要的是这个孪生兄弟要比ESP8266是更厉害的&#xff0c;所以我们也是非常有必要学习一下的&#xff0c;其实这篇文章去年就已经写了&#x…

安卓系统上的远程 JS 调试 Remote JavaScript Debugging on Android

每当在 Android 移动设备上调试网页时&#xff0c;开发人员往往都会不自觉陷入调试的泥潭中去。《Android开发指南》提供了一个解决方案&#xff0c;却有点繁琐复杂。因此&#xff0c;许多 Web 开发人员会倾向于使用类似 Firefox Firebug 的或像 WebKit 的 Web Inspector 之类的…

SEO艺术

SEO艺术 编辑推荐 在本书中&#xff0c;四位搜索引擎优化&#xff08;SEO&#xff09;领域最受瞩目的专家阐述了制订以及执行一个完善的SEO策略时应遵循的一些实用指南与最新技术。 基本信息 原书名&#xff1a; The Art of SEO原出版社&#xff1a; OReilly作者&#xff1a; (…

http状态码301和302详解及区别

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到教程。 一直对http状态码301和302的理解比较模糊&#xff0c;在遇到实际的问题和翻阅各种资料了解后&#xff0c;算是有了一定的理解。这里记录下…

哪些编程语言需要修复?

摘要&#xff1a;编程语言有十全十美的吗&#xff1f;每种语言都有缺陷吗&#xff1f;这不&#xff0c;Java、C、C、Python都中枪了。语言之间也可相互“掐架”&#xff0c;一起来看下。 原文作者Kevin Kelleher采用一种比较新颖的方式来比较编程语言&#xff1a;即描述每个编程…

Python标准库

《Python标准库》基本信息原书名&#xff1a; The Python Standard Library by Example 原出版社&#xff1a; Pearson Education 作者&#xff1a; (美)Doug Hellmann 译者&#xff1a; 刘炽 出版社&#xff1a;机械工业出版社 ISBN&#xff1a;9787111378105上架时间&#xf…

Perl迎来25岁生日

摘要&#xff1a;Perl迎来了它的第25岁生日&#xff0c;普天下Perlist都冒泡同庆一下&#xff0c;很多开发者喜欢它的理由是因其具备强力、稳定、成熟、可移植性等特点&#xff0c;Perl的爱好者们赶快送上你的祝福吧&#xff01; 昨天&#xff0c;Perl迎来了它的第25岁生日&…

20165114 《网络对抗技术》 Exp0 Kali安装与配置 Week1

目录&#xff1a; 一、kail的下载与安装 二、kali的网络设置 三、安装vmware-tools。 四、更新软件源。 五、共享文件夹 六、安装中文输入法 一、kail的下载与安装 VMware workstation的安装 因为之前的课程已经涉及&#xff0c;所以本机已经安装好了VMware workstation&#x…

大数据:互联网大规模数据挖掘与分布式处理

《大数据:互联网大规模数据挖掘与分布式处理》基本信息原书名&#xff1a;Mining of Massive Datasets作者&#xff1a; (美)拉贾拉曼(Rajaraman,A.) (美)厄尔曼(Ullman,J.D.) [作译者介绍]译者&#xff1a; 王斌丛书名&#xff1a; 图灵程序设计丛书出版社&#xff1a;人民邮电…

SpringCloud框架搭建+实际例子+讲解+系列五

&#xff08;4&#xff09;服务消费者&#xff0c;面向前端或者用户的服务 本模块涉及到很多知识点&#xff1a;比如Swagger的应用&#xff0c;SpringCloud断路器的使用&#xff0c;服务API的检查、token的校验&#xff0c;feign消费者的使用。大致代码框架如下&#xff1a; 先…

软件开发者最重要的四大技能

摘要&#xff1a;现如今&#xff0c;可供选择的技术、语言及平台可谓五花八门&#xff0c;因此要弄明白哪里是花时间训练的最佳投资点也就难上加难…… 现如今&#xff0c;可供选择的技术、语言及平台可谓五花八门&#xff0c;因此作为软件开发者&#xff0c;要弄明白哪里是花时…

Java 12 将于3月19日发布,8 个最终 JEP 一览

开发四年只会写业务代码&#xff0c;分布式高并发都不会还做程序员&#xff1f; JDK 12 已于2018年12月进入 Rampdown Phase One 阶段&#xff0c;这意味着该版本所有新的功能特性被冻结&#xff0c;不会再加入更多的 JEP 。该阶段将持续一个月&#xff0c;主要修复 P1-P3 级…