量化投资&数据分析之常用的python包(附代码)

小伙伴们都知道python功能强大,在金融量化分析中运用广泛,python常用的数据分析包很多,下面先给大家简单列举一些(如果您刚开始学python觉得这东西很烦看不懂,那么请不要担心,直接忽视跳到第二节吧因为您不会错过任何精彩内容如果您是老司机,那么欢迎私戳讨论【微笑】):

一. 数据分析常用包

(1)NumPy:

NumPy是基于Python的科学计算的基础包,可用来存储和处理大型矩阵,提供了矩阵、线性代数、傅里叶变换和随机生成函数等解决方案。

(2)SciPy:

SciPy是基于NumPy的库,它提供了方便、快捷的N维数组操作。它包括统计、优化、整合、线性代数模块、傅里叶变换、信号和图像处理、常微分方程求解器等等。

(3)Statsmodels:

Statismodels是一个Python包,提供一些互补scipy统计计算的功能,包括描述性统计和统计模型估计和推断,主要用户统计建模和计量经济学。

(4)Pandas

Pandas 是基于NumPy 的一种工具,Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。

(5)TAlib:

TAlib是一个处理金融数据和技术分析的开放代码库。

(6)其他

networkx、Pillow 、Py 、Pytz、Requests 、Scipy、sympy 、Tables 、xlrd、xlwt等

二. NumPy

(1)ndarray数组基础

Pyhton 中用列表保存一组值,可将列表当成是数组使用。此外,Python 有 array 模快,但他不支持多维数组,无论是列表还是 array 模块都没有科学运算函数,不适合做矩阵等科学计算。因此,NumPy没有使用 Python 本身的数组机制,而是提供了ndarray 数组对象,该对象不断能方便的存取数组,而且拥有丰富的数组计算函数,比如向量的加法、减法、乘法等。使用 ndarray 数组,首先需要导入 Numpy 函数库,也可以直接导入该函数库。

创建数组是进行数组计算的先决条件,可以通过array()函数定义数组实例对象,其参数为Python 的序列对象。

文字描述太枯燥,我们来举个例子:

from numpy import *

import numpy as np

a=np.array([[1,2,4],[3,6,9]])

print(a)

结果是这样的:

[[1 2 4]
 [3 6 9]]

(2)数组支持索引和切片

NumPy数组可按照列表的方式进行索引和切片,也可按如下方式访问数组中行、列与特定元素:

我们还是用上一个例子:

from numpy import *

import numpy as np

a=np.array([[1,2,4],[3,6,9]])

print(a)

print(a[:,1])

print(a[1,1])

结果如下:

[[1 2 4]
 [3 6 9]]
[2 6]
6

三. Pandas

pandas包含高级的数据结构和精巧的工具,使得在Python中处理数据非常快速和简单。pandas建造在NumPy之上,它使得以NumPy为中心的应用很容易使用。我们首先导入库:

import pandas as pd

pandas主要包含三种数据结构:Series、DataFrame和Panel。

(1)Series

Series是一个一维的类似的数组对象,包含一个数组的数据(任何NumPy的数据类型)和一个与数组关联的数据标签,被叫做索引 。

Series创建

我们首先创建一个Series:

import pandas as pd

s=pd.Series([3,10000,10.8,‘stock’])

print(s)

输出:

0        3
1    10000
2     10.8
3    stock
dtype: object

上例中左右两列即分别为索引index 和 values。因为传给构造器的是一个列表,所以 index 的值是从 0 起递增的整数,如果传入的是一个类字典的键值对结构,就会生成 index-value 对应的 Series;或者在初始化的时候以关键字参数显式指定一个 index 对象:

如:

s=pd.Series(data=[10.5,15.7,np.nan],index=[‘stockA’,‘stockB’,‘stockC’])

print(s)

print(s.data)

print(s.index)

print(s.values)

print(s[2]) # series也支持索引和切片

输出:

stockA    10.5
stockB    15.7
stockC     NaN
dtype: float64
<memory at 0x7fcc3ac087c8>
Index(['stockA', 'stockB', 'stockC'], dtype='object')
[ 10.5  15.7   nan]
nan

(2)DataFrame

一个DataFrame表示一个表格,类似电子表格的数据结构,包含一个经过排序的列表集,它们没一个都可以有不同的类型值(数字,字符串,布尔等等)。DataFrame有行和列的索引,它可以被看作是一个Series的字典(每个Series共享一个索引)。

DataFrame创建

创建DataFrame方法如下:

df=DataFrame(data=数据,index=索引,columns=列名)

例如,为创建一个索引是时间序列的DataFrame,首先创建一个时间序列:

dates=pd.date_range(‘2017-01-01’,periods=3)

print(dates)

输出:

DatetimeIndex(['2017-01-01', '2017-01-02', '2017-01-03'], dtype='datetime64[ns]', freq='D')
然后创建DataFrame:

df=pd.DataFrame(np.array([[10.5,15.7,11.2],[10.8,11.0,11.2],[9.4,10.2,9.8]]),index=dates,columns=['stockA','stockB','stockC'])

print(df)

输出:

        stockA  stockB  stockC
2017-01-01    10.5    15.7    11.2
2017-01-02    10.8    11.0    11.2
2017-01-03     9.4    10.2     9.8

DataFrame也支持索引和切片:

print(df.ix[:2,:2])

print(df[['stockA','stockC']])

print(df[:2])

输出:

           stockA  stockB
2017-01-01    10.5    15.7
2017-01-02    10.8    11.0
            stockA  stockC
2017-01-01    10.5    11.2
2017-01-02    10.8    11.2
2017-01-03     9.4     9.8
            stockA  stockB  stockC
2017-01-01    10.5    15.7    11.2
2017-01-02    10.8    11.0    11.2

支持排序和排名

s=pd.Series({'stockA':10.5,'stockB':15.7,'stockC':np.nan})

print(s.sort_values(ascending=False))

输出:

stockB    15.7
stockA    10.5
stockC     NaN
dtype: float64

支持统计方法(Very important!):

如:

dates=pd.date_range(‘2017-01-01’,periods=3)

print(dates)

df=pd.DataFrame(np.array([[11,12,13],[13,14,15],[12,13,15]]),index=dates,columns=[‘stockA’,‘stockB’,‘stockC’])

new_dates=pd.date_range(‘2017-01-01’,periods=4)

print(df.sort_values(‘stockB’))

print(df.diff())

print(df.cumsum())

print(df.mean())

print(df.var())

print(df.std())

输出:

DatetimeIndex(['2017-01-01', '2017-01-02', '2017-01-03'], dtype='datetime64[ns]', freq='D')
            stockA  stockB  stockC
2017-01-01      11      12      13
2017-01-03      12      13      15
2017-01-02      13      14      15
            stockA  stockB  stockC
2017-01-01     NaN     NaN     NaN
2017-01-02       2       2       2
2017-01-03      -1      -1       0
            stockA  stockB  stockC
2017-01-01      11      12      13
2017-01-02      24      26      28
2017-01-03      36      39      43
stockA    12.000000
stockB    13.000000
stockC    14.333333
dtype: float64
stockA    1.000000
stockB    1.000000
stockC    1.333333
dtype: float64
stockA    1.000000
stockB    1.000000
stockC    1.154701
dtype: float64

码字码得手酸…剩下的下次分享(微笑)

关于Python技术储备

学好 Python 不论是就业还是做副业赚钱都不错,但要学会 Python 还是要有一个学习规划。最后大家分享一份全套的 Python 学习资料,给那些想学习 Python 的小伙伴们一点帮助!

一、Python所有方向的学习路线

Python所有方向的技术点做的整理,形成各个领域的知识点汇总,它的用处就在于,你可以按照上面的知识点去找对应的学习资源,保证自己学得较为全面。
在这里插入图片描述

二、Python必备开发工具

在这里插入图片描述

四、Python视频合集

观看零基础学习视频,看视频学习是最快捷也是最有效果的方式,跟着视频中老师的思路,从基础到深入,还是很容易入门的。
在这里插入图片描述

五、实战案例

光学理论是没用的,要学会跟着一起敲,要动手实操,才能将自己的所学运用到实际当中去,这时候可以搞点实战案例来学习。在这里插入图片描述

六、Python练习题

检查学习结果。
在这里插入图片描述

七、面试资料

我们学习Python必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有阿里大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
在这里插入图片描述
在这里插入图片描述
这份完整版的Python全套学习资料已经上传CSDN,朋友们如果需要可以微信扫描下方CSDN官方认证二维码免费领取【保证100%免费】

👉[[CSDN大礼包:《python安装包&全套学习资料》免费分享]]安全链接,放心点击

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值