【金融】【python】处理表格(*.xlsx)形式的期货数据

  • 数据读取
    • 打开文件
    • 截取特定列
    • 处理脏数据/空数据
    • 转换数据格式
    • 处理数据索引和顺序
    • 显示收盘价折线图
  • 对读取后的数据进行处理
    • 处理金融指标
    • 将表示时间的字符串拆分为数值
    • 剔除前20天数据
    • 可视化

匆忙整理,直接从jupyter notebook上粘贴下来的。

数据读取

打开文件

import numpy as np
import pandas as pd
import matplotlib.pyplot as plt# %matplotlib inline
# %config InlineBackend.figure_format = 'svg'data = pd.read_excel(r'F:\\data\\market_index_data\\恒生指数日线数据.xlsx', sheet_name=0)
# data = pd.read_excel(r'D:\\MINE_FILE\\dataSet\\market_index_data\\恒生指数日线数据.xlsx', sheet_name=0)data.head()

截取特定列

data = pd.read_excel(r'F:\\data\\market_index_data\\恒生指数日线数据.xlsx', sheet_name=0, usecols=[0,1,2,3,4,10])
# data = pd.read_excel(r'D:\\MINE_FILE\\dataSet\\market_index_data\\恒生指数日线数据.xlsx', sheet_name=0, usecols=[0,1,2,3,4,10])
data.rename(columns={"交易日期": "date", "开盘点位": "Open", "最高点位": "High", "最低点位": "Low", "收盘价": "Close", "成交额(万)": "Volume"},inplace=True)# 手动取有成交额的部分
data = data.loc[0:3678]
# 确认一下
data.tail()

处理脏数据/空数据

清理逗号和空数据"–"

data = data[~data['Volume'].isin(['--'])]data['Open'] = data['Open'].str.replace(',', "")
data['High'] = data['High'].str.replace(',', "")
data['Low'] = data['Low'].str.replace(',', "")
data['Close'] = data['Close'].str.replace(',', "")
data['Volume'] = data['Volume'].str.replace(',', "")

转换数据格式

由于带逗号,读出来是字符串,需要进行格式转换。

data[u"Open"] = pd.to_numeric(data[u"Open"])
data[u"High"] = pd.to_numeric(data[u"High"])
data[u"Low"] = pd.to_numeric(data[u"Low"])
data[u"Close"] = pd.to_numeric(data[u"Close"])
data[u"Volume"] = pd.to_numeric(data[u"Volume"])
# 查看一下
data.head()

处理数据索引和顺序

原本是倒的。

data['newindex'] = np.arange(len(data)-1,-1,-1)
data.sort_values('newindex',inplace=True)
data.drop('newindex',axis=1,inplace=True)
data = data.reset_index(drop=True)
data.head()

显示收盘价折线图

plt.figure(figsize=(20,7))data['date'] = pd.to_datetime(data['date'])
data = data.set_index('date')
data['Close'].plot()# plt.plot(data.loc[:,'Close'].values, 'b', label='Close Price')
plt.xlabel("time")
plt.ylabel("point")
plt.legend()
plt.show()

对读取后的数据进行处理

处理金融指标

featureExtraction中的函数未放入本文,

from featureExtraction import *priceSeq = data.iloc[:,1:5].values
data.insert(data.shape[1], 'RSI', RSI(priceSeq))
print('finish RSI')
data.insert(data.shape[1], 'SO', SO(priceSeq))
print('finish SO')
data.insert(data.shape[1], 'WR', WR(priceSeq))
print('finish WR')
data.insert(data.shape[1], 'MACD', MACD(priceSeq))
print('finish MACD')
data.insert(data.shape[1], 'PROC', PROC(priceSeq))
print('finish PROC')
data.insert(data.shape[1], 'Simple10MA', Simple10MA(priceSeq))
print('finish Simple10MA')
data.insert(data.shape[1], 'Weighted10MA', Weighted10MA(priceSeq))
print('finish Weighted10MA')
data.insert(data.shape[1], 'Momentum', Momentum(priceSeq))
print('finish Momentum')
data.insert(data.shape[1], 'ADOscillator', ADOscillator(priceSeq))
print('finish ADOscillator')
data.insert(data.shape[1], 'CCI', CCI(priceSeq))
print('finish CCI')

将表示时间的字符串拆分为数值

def DateSplit(df, col):"""split the object of '2010-01-02' into year(2010), month(1) and day(2).:param df:  to operate data (type:DataFrame):param col: column label of date object (type:str):return: converted date (type: DataFrame)"""year, month, day = [], [], []data = df.loc[:, col].valuesdf = df.drop([col], axis=1)for i in range(data.shape[0]):year.append(int(data[i][:4]))month.append(int(data[i][5:7]))day.append(int(data[i][8:]))date = pd.DataFrame({'year': year, 'month': month, 'day': day})result = pd.concat([date, df], axis=1)return resultdata= DateSplit(df=data,col='date')
data.head(10)

剔除前20天数据

剔除各个金融指标计算的周期大小的数据。

# 剔除前20天数据
data = data.loc[20:]
data = data.reset_index(drop=True)
data.info()

可视化

plt.subplot(3,2,1)
plt.plot(data.loc[:,'Close'].values, 'r', label='Close')
plt.legend(loc='best')
plt.subplot(3,2,2)
plt.plot(data.loc[:,'RSI'].values, 'b', label='RSI')
plt.subplot(3,2,3)
plt.plot(data.loc[:,'SO'].values, 'g', label='SO')
plt.subplot(3,2,4)
plt.plot(data.loc[:,'WR'].values, 'r', label='WR')
plt.subplot(3,2,5)
plt.plot(data.loc[:,'MACD'].values, 'b', label='MACD')
plt.subplot(3,2,6)
plt.plot(data.loc[:,'PROC'].values, 'g', label='PROC')
plt.show()

plt.subplot(3,2,1)
plt.plot(data.loc[:,'Volume'].values, 'r', label='Close')
plt.legend(loc='best')
plt.subplot(3,2,2)
plt.plot(data.loc[:,'Simple10MA'].values, 'b', label='Simple10MA')
plt.subplot(3,2,3)
plt.plot(data.loc[:,'Weighted10MA'].values, 'g', label='Weighted10MA')
plt.subplot(3,2,4)
plt.plot(data.loc[:,'Momentum'].values, 'r', label='Momentum')
plt.subplot(3,2,5)
plt.plot(data.loc[:,'ADOscillator'].values, 'b', label='ADOscillator')
plt.subplot(3,2,6)
plt.plot(data.loc[:,'CCI'].values, 'g', label='CCI')
plt.show()

【金融】【python】处理表格(*.xlsx)形式的期货数据相关推荐

  1. 【随记】Python:前端表格获取到的填写数据插入到数据库表格中数据类型问题

    Python:前端表格获取到的填写数据插入到数据库表格中数据类型问题 背景 问题再现 结论 背景 用户在前端界面的表格中填写数据,通过 text() 获取到的数据插入到数据库表中,该过程涉及到了数据类 ...

  2. python 获取国内期货_获取和讯期货数据(Python版本).md

    > 策略名称 获取和讯期货数据(Python版本) > 策略作者 edwardgyw > 策略描述 数狂很早之前写了个js版本的第三方数据获取,我照着他的改写了个python版本的, ...

  3. 3 Python获取股票、基金、期货数据,好用的库efinance

    efinance 是由个人打造的用于获取股票.基金.期货数据的免费开源 Python 库,你可以使用它很方便地获取数据以便更好地服务于个人的交易系统需求. 范例 Stock 获取股票历史日 K 线数 ...

  4. Python以表格、可视化图像的形式输出模型特征重要度(feature importances)并进行重要度归一化及排序

    Python以表格.可视化图像的形式输出模型特征重要度(feature importances)并进行重要度归一化及排序 目录

  5. 【金融】【python】使用python处理多种期货数据指标

    [金融][python]使用python处理多种期货数据指标 featureExtraction.py pandas_techinal_indicators.py featureExtraction. ...

  6. Python根据字体的大小获取字符串像素长度并以表格的形式在图片中显示

    在Python中常用的两个图像处理库,一个opencv,一个是PIL.其中,opencv是不支持中文显示的,所以只能显示英文.详细实现如下代码: # -*- coding: utf-8 -*-# # ...

  7. python读取表格报错:xlrd.biffh.XLRDError:Excel xlsx file;not support

    python读取表格报错 当你间歇性踌躇满志的打开pycharm,看了一篇python+unittest+request接口自动化测试框架,你觉得有必要站在巨人的肩膀上眺望一下远方,于是你按步骤走到了 ...

  8. python处理表格-python表格处理

    广告关闭 腾讯云双11爆品提前享,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高满返5000元! 应懒癌朋友的要求,在这整理一下之前发过的几篇关于 excel 表格处理以及 pdf ...

  9. python制作表格处理_使用python处理excel表格——pandas(1)

    这里写目录标题 一.基本概念 二.内容 1.创建文件 A.创建空表格 B.创建非空表格 2.读取文件 A.读取整个表格 (1)读取有多个sheet的excel (2).title在首行 (3)titl ...

最新文章

  1. 用cmd运行java程序
  2. java ee s2sh复习题_JavaEESSH框架答案试题题目及答案,期末考试题库,章节测验答案...
  3. STM32 电机教程 32 - 基于ST X-CUBE-SPN7 无刷无感电机库的电机驱动实现
  4. 如何解决提示the operation % is undefined for the argument type string,int的错误
  5. gin context和官方context_Gin框架系列01:极速上手
  6. Python 生成账号密码算法
  7. 如何采用设置标志的方法来区分循环队列的满和空
  8. 数据交互智能终端设想
  9. oracle 使用数据泵恢复,oracle 使用数据泵 导出整个db 并恢复
  10. opencms内容管理入门指南pdf_企业微信管理员训练营回顾(三) | 企业微信高效协作入门指南...
  11. 和大家分享一下我最近的编程心得!!!
  12. php中的条件语句,PHP中的条件语句和示例
  13. 在Ubuntu安装QT及相关环境配置
  14. apk倒入android studio,反编译apk导入android studio
  15. flink on yarn使用第三方jars的方法如何查看进程所持有jar包
  16. CSS 中哪些属性可以继承?
  17. alc236黑苹果驱动_黑苹果核心显卡驱动教程
  18. 使用wifi网卡笔记5---AP模式
  19. 美通企业日报 | 爱茉莉太平洋与阿里巴巴达成战略合作;新富人群房地产投资比重提升...
  20. ajax获取涨停股票接口,涨停技术-教你如何捕捉涨停版(绝对经典)

热门文章

  1. 控制div的大小自适应_干货 | 浅谈模糊自适应PID控制
  2. 软件度量五步法包括_软件交付效能度量——从吞吐量和稳定性开始
  3. python搭建博客项目思路_Django项目——Blog简易开发入门
  4. 蓝桥杯2016年C/C++ 混搭
  5. ~~分解质因数法求组合数
  6. 目标检测——如何让模型过拟合
  7. spring mvc处理静态资源
  8. 为什么linux/mac os系统和windows系统不一样(文件系统)
  9. Borland Enterprise Core Object II (ECO II)第一次接觸
  10. Python3安装cx_Oracle连接oracle数据库实操总结