小伙伴们都知道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

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

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

注:其中部分资料来源于量化金融平台Mindgo社区:

如果您觉得还不错,轻轻地帮宝宝点个赞吧~嘻嘻

数据分析常用的python包_量化投资数据分析之常用的python包(附代码)相关推荐

  1. 量化金融投资及其python应用_量化投资:用Python实现金融数据的获取与整理

    小编说:数据可以说是量化投资的根本,一切投资策略都是建立在数据基础上的.本文以优矿网为例,带领大家用Python实现金融数据的获取与整理. 本文选自<Python与量化投资:从基础到实战> ...

  2. 我用Python做一个量化指数增强策略,爽了 !附代码!

    这是邢不行第 84 期量化小讲堂的分享 作者 | 邢不行.密斯锌硒 A股是一个神奇的地方,它最大的特点就是多年不涨和永远的3000点. 正因如此,调侃A股的段子层出不穷. 甚至连中国男足这么烂的行业都 ...

  3. 同花顺python面试_量化投资面试集锦

    2019年的秋招的尾声快到,来总结一下经历过的私募笔试和面试.一开始采取的是海投的形式,第一份是来自上海持赢投资的笔试题.二选一, NO.1熟悉现有量化回测框架的使用 对pywinauto库的使用 实 ...

  4. python 策略回测期货_量化投资实战教程(1)—基于backtrader的简单买入卖出策略

    都说Python可以用于量化投资,但是很多人都不知道该怎么做,甚至觉得是非常高深的知识,其实并非如此,任何人都可以在只有一点Python的基础上回测一个简单的策略. Backtrader是一个基于Py ...

  5. 2015CDAS中国数据分析师行业峰会:R语言量化投资数据分析应用

    跨界知识聚会系列文章,"知识是用来分享和传承的",各种会议.论坛.沙龙都是分享知识的绝佳场所.我也有幸作为演讲嘉宾参加了一些国内的大型会议,向大家展示我所做的一些成果.从听众到演讲 ...

  6. 我用Python爬取了难下载的电子教材(内附代码)

    我用Python爬取了难下载的电子教材(内附代码) 第一次在CSDN上面分享经历,有点激动.本大二狗最近这段时间去不了学校又想看教材,不巧学习通上面的部分内容老师设置了不可下载啊.好在最近学习了一点P ...

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

    小伙伴们都知道python功能强大,在金融量化分析中运用广泛,python常用的数据分析包很多,下面先给大家简单列举一些(如果您刚开始学python觉得这东西很烦看不懂,那么请不要担心,直接忽视跳到第 ...

  8. python处理金融数据_量化投资:用Python实现金融数据的获取与整理

    小编说:数据可以说是量化投资的根本,一切投资策略都是建立在数据基础上的.本文以优矿网为例,带领大家用Python实现金融数据的获取与整理. 本文选自<Python与量化投资:从基础到实战> ...

  9. python量化自学书籍推荐_量化投资学习推荐的书籍都有哪些?

    给大家简单推荐介绍3本书吧这些都是比较实用的,入门还是高手级别的都有. 1. 打开量化投资的黑箱 这本书的作者里什·纳兰(Rishi K. Narang)是华尔街顶级数量金融专家,资深对冲基金经理.& ...

最新文章

  1. django 1.8 官方文档翻译:2-5-9 条件表达式
  2. Python中range和xrange的区别
  3. Linux awk内部变量
  4. JAVA从下载到浏览器运行完整篇,写给lewis
  5. mysql删除以什么开头的数据_Mysql如何删除以“#sql-”开头的临时表
  6. NoSQL那些事--Redis
  7. 信息学奥赛一本通(1247:河中跳房子)
  8. 【C语言】在线OJ题 BC7-BC52-牛客网编程初学者入门训练
  9. 最简单的零成本创业模式
  10. Recordia for Mac - 音频无损录制工具「M1兼容」
  11. php app用户验证失败,无法验证app需要互联网连接以认证 建议更换登陆的AppleID
  12. c语言二维数组相关程序设计,c语言二维数组定义及其规则详解
  13. 【js】js获取今日和昨日0点和23点59分59秒
  14. Python在气象与海洋中的实践技术应用
  15. 运筹系列63:使用ALNS求解大规模TSP问题
  16. iOS依赖注入框架系列(一):介绍Typhoon
  17. 初识Calcite——使用实例
  18. 基于Stm32f103利用模拟iic驱动LM75A温度传感器
  19. iconfont用在placeholder里
  20. 一些常用的公共 DNS 服务器 IP 地址

热门文章

  1. 【Spring】Spring autowire-candidate解决注入的时候有多个符合的bena
  2. Spark : DNS resolution failed for url in bootstrap.servers xx:9092
  3. kerberos安装配置与使用
  4. Java中使用ProcessBuilder启动、管理应用程序
  5. Spingboot定时任务与多线程
  6. 为什么网上都推荐下载jdk8和jdk11,而没有人推荐最新的15
  7. 云计算学习路线图课件:云计算和虚拟机有什么区别?
  8. spring知识点概述
  9. linux 2.6内核进程调度,Linux2.6内核进程调度系列--scheduler_tick()函数2.更新实时进程的时间片,...
  10. RestfulToolKit:根据接口,快速定位代码