【Python】【课程笔记】金融数据分析(一)
本文是课程《金融数据分析》的学习笔记(一),该系列笔记分为基础篇、Numpy、Pandas和Matplotlib等,本系列用于对知识点总结和代码练习,Q&A为问题及解决方案,参考书籍为《利用Python进行数据分析》。
往期回顾:
博文 | 内容 |
---|---|
【Python】【课程笔记】金融数据分析(一) | Python基础、Numpy |
【Python】【课程笔记】金融数据分析(二) | Pandas |
前言:Python基础
1、python基本元素:数字、字符串和变量
类型转换:int()、float()、str()
(1)使用[start: end: step]
分片
[start: end: step] 从start 提取到 end-1, 每step个字符提取一个
(2)使用split()
分割
(3)使用join()
合并
2、python容器:列表、元组、字典、集合
列表
(1)切片提取元素
(2)使用append()
添加元素至末尾
(3)使用extend()
或+=合并列表
(4)使用insert()
在指定为止插入元素
(5)使用del 删除指定位置的元素
(6)使用pop()
获取并删除指定位置的元素
(7)使用index()
查询具有特定值的元素位置
(8)使用in判断值是否存在
(9)使用count()记录特定值出现的次数
(10)使用sort()重新排列元素
列表方法sort()
会对原列表进行排序,改变原列表的内容
通用函数sorted()
则会返回排好序的列表副本,原列表内容不变
(11)使用 = 赋值,使用copy()
复制元组:无法进行增加、删除和修改操作
字典:其中元素的顺序无关紧要,每个元素拥有与之对应的互不相同的键(key),需要通过键来访问元素,键通常为字符串。
(1)使用[key]添加或修改元素,如:dict['A']=a
(2)使用update()
合并字典
(3)使用del删除具有指定键的元素
(4)使用keys()获取所有键
(5)使用values()获取所有值
集合:像“舍弃了值,仅剩下键的字典”,键与键之间不允许重复
3、python外壳:代码结构
(1)使用if,elif和else进行比较
(2)使用while进行循环
(3)使用for迭代
⭐⭐(4)推导式
⭐⭐(5)函数
lambda:匿名函数
4、迭代器[1]
iter()
、next()
:方法
Iterator
、Iterable
:迭代器、可迭代的对象
isinstance()
:判断一个对象是否是一个已知的类型(语法)
例:先检查对象是否是一个列表,如果不是将它转换未列表:
if not isinstance(x, list) and isiterable(x):x = list(x)
第一部分:Numpy(数组)
1、向量的加法
例:输入n,输出:n2+n3n^2 + n^3n2+n3
def numpysum(n):a = np.arange(n)**2b = np.arange(n)**3return a+bnumpysum(10)
2、数组对象:np.arange()
、np.array()
多维数组
a =np.arange(5)
b = np.array([np.arange(2), np.arange(2)])
3、数组属性[1]:b.ndim
、b.shape
、b.size
等
4、取数、索引切片
- 使用[start: end: step]分片
[start: end: step] 从start 提取到 end-1, 每step个字符提取一个
(1)一维数组:[]与冒号的搭配
取其中一部分,隔几个数取,逆序取数
(2)多维数组:[]与冒号、逗号的搭配
5、改变数组的维度
- 将多维数组降为一维,默认是行序优先,传入’F’参数表示列序优先[2]:
b.ravel()
、b.flatten()
区别:flatten()返回的是拷贝。 - 改变维数:
b.reshape()
用法:当参数只有一个-1时表示将数组降为一维。 - 改变维数,会改变原数组[3]:
np.resize(b,())
- 转置:
b.transpose()
b = np.arange(24).reshape(2,3,4)
b.reshape(2,12)
np.resize(b,(2,12))
6、数组的组合
元素:使用
join()
合并
数组:堆叠[4]
np.hstack((a,b))
:在第一维进行堆叠(即最外层的方括号)
np.vstack((a,b))
:将数组在第二维进行堆叠(即第二层方括号)
np.dstack((a,b))
:将数组在第三维进行堆叠(即第三层方括号)np.concatenate((a,b), axis=1)
[5]:axis=1表示对应行的数组进行拼接,默认axis=0(按列)。
7、数组的分割使用split()分割
np.split(a,3,axis=1)
、np.split(a,3,axis=0)
np.hsplit(c,3)
、np.vsplit(c,3)
、np.dsplit(c,3)
案例:股价
- 数据集:data.csv
1、计算成交量价权平均价格
- 函数:
(1)np.loadtxt()
参数:usecols:选取数据的列。
(2)np.average()
参数:weights:加权重
2、计算时间加权平均价格
c,v = np.loadtxt('data.csv', delimiter=',', usecols =(5,6), unpack=True)# 成交量加权
vwap = np.average(c,weights=v)
print ("VWAP=", vwap)
print ("mean=", np.mean(c))# 时间加权
t = np.arange(len(c))
twap = np.average(c,weights=t)
print("TWAP=",twap)
3、统计量
- 函数
(1)np.max()、np.median()、np.var()、np.std()
:最大值、中位数、方差、标准差
(2)np.msort()
:数组按第一个轴排序,返回排序后的数组副本,等价于 np.sort(a, axis=0)。
#中位数
sorted_close = np.msort(c)
N = len(c)
print ("middle = ", sorted_close[np.int((N-1)/2)])
4、股票收益率
- 收益率:
returns = np.diff(c)/c[:-1]
- 对数收益率:
logreturns = np.diff(np.log(c))
- 年化波动率:
annual_volatility = np.std(logreturns)/np.sqrt(1.0/242)
5、简单移动平均线、指数移动平均线
等权表示:
weights = np.ones(N)/N
卷积函数[6]:
numpy.convolve(a, v, mode=‘full')
参数:
a:(N,)输入的一维数组
v:(M,)输入的第二个一维数组
mode:{‘full’, ‘valid’, ‘same’}参数可选
①‘full’ 默认值,返回每一个卷积值,长度是N+M-1,在卷积的边缘处,信号不重叠,存在边际效应。
②‘same’ 返回的数组长度为max(M, N),边际效应依旧存在。
③‘valid’ 返回的数组长度为max(M,N)-min(M,N)+1,此时返回的是完全重叠的点。边缘的点无效。创建等差数组[7]:
np.arange([start, ]stop, [step, ]dtype=None)
用法:指定开始值,终值和步长生成等差数列的一维数组。
参数:
start:可忽略不写,默认从0开始;起始值
stop:结束值;生成的元素不包括结束值
step:可忽略不写,默认步长为1;步长
dtype:默认为None,设置显示元素的数据类型创建等差数列[8]:
numpy.linspace(start, stop, num=50, endpoint=True, retstep=False, dtype=None)
用法:指定开始值,终值和元素个数生成等差数列的一维数组。
#简单移动平均线
N=20
weights = np.ones(N)/N
sma = np.convolve(weights,c)[N-1:-N+1]
#从第N-1个数,到倒数N-1个数为止#指数移动平均线
N=5
weights = np.exp(np.linspace(-1.,0.,N))
weights = weights/weights.sum()
ema = np.convolve(weights,c)[N-1:-N+1]import matplotlib.pyplot as plt
t=np.arange(N-1, len(c))
plt.plot(t,c[N-1:], lw=1.0)
plt.plot(t,sma,lw=2.0)
plt.show()
【Python】【课程笔记】金融数据分析(一)相关推荐
- Py函数直接传入root是啥意思_阿里云python课程笔记(四):函数amp;类和对象
接阿里云python课程笔记(三):数据结构 我们讨论一下python中的深拷贝和浅拷贝 dic1 = {'user': 'lsgogroup', 'num': [1, 2, 3]}# 引用对象dic ...
- python嵩天课堂笔记_嵩天python课程笔记1
嵩天python课程笔记 -.计算机知识 1.概念:计算机是根据指令操作数据的设备. 2.功能性:对数据的操作,数据输入输出计算处理及结果储存. 3.可编程性:根据一系列指令,自动地.可预测地.准确地 ...
- python课程笔记_Python课程笔记(一)
由于新冠状病毒的爆发,不得不在家里上网课,开课已经两个礼拜了,今天上完Python课后,准备整理一下最近学习Python的笔记. 人生苦短,我用Python 一.Hello World 初学一门新的语 ...
- 计算机课进制笔记,初学Python课程笔记-第一课(计算机基本概念+进制+环境变量)...
这是我第一次写博客,简单地聊聊当下的感受.其实,早在大学期间就有过把自己所学的一些知识点记录在某个平台,可供日后自己复习.只是本人并非计算机专业出身,平时写代码写得不是不多.直到毕业参与工作,从事软件 ...
- 大学python笔记_Introduction to Python课程笔记
首先恭喜自己终于通过了DATACAMP的第一个课程Introduction to Python, 课程讲义也上传到了百度云里,链接7天有效,需要的小伙伴们请提前保存. 提取码:0hr3 该课程主要分为 ...
- 廖雪峰讲python高阶函数求导_廖雪峰python课程笔记
1. 可以通过 print(os.sys.path) 来查看python可导入的包的路径情况,这会打印出一个list.当我们import某一个包时,python会根据这个list,从前向后搜寻相匹配的 ...
- Django · Python课程笔记·嵩天
Django 框架 Hello World MTK开发模式 实例一·云端留言板 进阶 URL路由机制 视图响应类型 视图流式响应机制 模版引擎和模版使用 模版语言 框架 Hello World pyt ...
- python课程笔记
python变量原理:以数值为主,数字存储在内存中,分配给不同的变量.与C刚好相反 Python中,有3种内建的数据结构:列表.元组和字典. 1.列表 list是处理一组有序项目的数据结构, ...
- Python金融数据分析入门到实战-视频课程
大家好!很荣幸能够在CSDN上和各位同学分享这门课程. 本课程的核心为Python金融数据的分析,首先课程提取了数据分析工具NumPy.Pandas及可视化工具Matplotlib的关键点进行详细讲解 ...
最新文章
- html图片缩放6,四款css 图片按比例缩放实例(兼容ie6,7,firefox)
- 计算机网络谢希仁第七版课后答案第三章 数据链路层
- HTTP-GET, HTTP-POST and SOAP的比较
- python划分数据集_Python数据集切分实例
- 2015年10月5日 正式启用该博客
- centos7 mysql安装教程_centos7环境下MySQL安装教程
- 线程间通信 GET POST
- 手把手教你dns服务器未响应导致无法上网怎么办
- mysql_install_db is deprecated_MySQL5.7源码安装问题汇总
- IOS开发基础知识--碎片23
- css3学习总结9--CSS3过渡
- html日期判断程序,javascript – HTML5日期验证
- Mysql进阶索引篇02——InnoDB存储引擎的数据存储结构
- CSF视频文件格式转换
- 南航计算机英语面试经验,南航面试英文自我介绍
- 将本地项目上传到码云仓库
- Ignore the empty nacos configuration and get it based on dataIdnacos配置中心 踩坑
- axios爬坑之provisional headers are shown
- 怎么用计算机作word文档,大学计算机作业word使用(6页)-原创力文档
- 通信算法之九:4FSK调制解调仿真链路