本文是课程《金融数据分析》的学习笔记(一),该系列笔记分为基础篇、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():方法
IteratorIterable:迭代器、可迭代的对象
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.ndimb.shapeb.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】【课程笔记】金融数据分析(一)相关推荐

  1. Py函数直接传入root是啥意思_阿里云python课程笔记(四):函数amp;类和对象

    接阿里云python课程笔记(三):数据结构 我们讨论一下python中的深拷贝和浅拷贝 dic1 = {'user': 'lsgogroup', 'num': [1, 2, 3]}# 引用对象dic ...

  2. python嵩天课堂笔记_嵩天python课程笔记1

    嵩天python课程笔记 -.计算机知识 1.概念:计算机是根据指令操作数据的设备. 2.功能性:对数据的操作,数据输入输出计算处理及结果储存. 3.可编程性:根据一系列指令,自动地.可预测地.准确地 ...

  3. python课程笔记_Python课程笔记(一)

    由于新冠状病毒的爆发,不得不在家里上网课,开课已经两个礼拜了,今天上完Python课后,准备整理一下最近学习Python的笔记. 人生苦短,我用Python 一.Hello World 初学一门新的语 ...

  4. 计算机课进制笔记,初学Python课程笔记-第一课(计算机基本概念+进制+环境变量)...

    这是我第一次写博客,简单地聊聊当下的感受.其实,早在大学期间就有过把自己所学的一些知识点记录在某个平台,可供日后自己复习.只是本人并非计算机专业出身,平时写代码写得不是不多.直到毕业参与工作,从事软件 ...

  5. 大学python笔记_Introduction to Python课程笔记

    首先恭喜自己终于通过了DATACAMP的第一个课程Introduction to Python, 课程讲义也上传到了百度云里,链接7天有效,需要的小伙伴们请提前保存. 提取码:0hr3 该课程主要分为 ...

  6. 廖雪峰讲python高阶函数求导_廖雪峰python课程笔记

    1. 可以通过 print(os.sys.path) 来查看python可导入的包的路径情况,这会打印出一个list.当我们import某一个包时,python会根据这个list,从前向后搜寻相匹配的 ...

  7. Django · Python课程笔记·嵩天

    Django 框架 Hello World MTK开发模式 实例一·云端留言板 进阶 URL路由机制 视图响应类型 视图流式响应机制 模版引擎和模版使用 模版语言 框架 Hello World pyt ...

  8. python课程笔记

    python变量原理:以数值为主,数字存储在内存中,分配给不同的变量.与C刚好相反 Python中,有3种内建的数据结构:列表.元组和字典. 1.列表      list是处理一组有序项目的数据结构, ...

  9. Python金融数据分析入门到实战-视频课程

    大家好!很荣幸能够在CSDN上和各位同学分享这门课程. 本课程的核心为Python金融数据的分析,首先课程提取了数据分析工具NumPy.Pandas及可视化工具Matplotlib的关键点进行详细讲解 ...

最新文章

  1. html图片缩放6,四款css 图片按比例缩放实例(兼容ie6,7,firefox)
  2. 计算机网络谢希仁第七版课后答案第三章 数据链路层
  3. HTTP-GET, HTTP-POST and SOAP的比较
  4. python划分数据集_Python数据集切分实例
  5. 2015年10月5日 正式启用该博客
  6. centos7 mysql安装教程_centos7环境下MySQL安装教程
  7. 线程间通信 GET POST
  8. 手把手教你dns服务器未响应导致无法上网怎么办
  9. mysql_install_db is deprecated_MySQL5.7源码安装问题汇总
  10. IOS开发基础知识--碎片23
  11. css3学习总结9--CSS3过渡
  12. html日期判断程序,javascript – HTML5日期验证
  13. Mysql进阶索引篇02——InnoDB存储引擎的数据存储结构
  14. CSF视频文件格式转换
  15. 南航计算机英语面试经验,南航面试英文自我介绍
  16. 将本地项目上传到码云仓库
  17. Ignore the empty nacos configuration and get it based on dataIdnacos配置中心 踩坑
  18. axios爬坑之provisional headers are shown
  19. 怎么用计算机作word文档,大学计算机作业word使用(6页)-原创力文档
  20. 通信算法之九:4FSK调制解调仿真链路

热门文章

  1. 虚拟环境的创建以及labelme和labelImg的使用教程
  2. JetBrains 所有产品包 2021.2
  3. leaflet常用插件库
  4. 交换机配置观察端口和端口镜像与流镜像之删除
  5. 设计模式(十一)中介者模式(调停者模式)
  6. spring-boot邮件发送功能演示(163邮箱与QQ邮箱互发)
  7. 奥数 python_从小学奥数题到Python
  8. 那些跟马化腾一起创业的亿万富翁们
  9. Python入门 制作节日贺卡
  10. 苹果iPhone11回收什么时候最保值