数据分析模块Numpy Pandas

如何使用Python进行量化投资

自己编写:NumPy+pandas+Matplotlib+……

在线平台:聚宽、优矿、米筐、Quantopian、……

开源框架:RQAlpha、QUANTAXIS、……

IPython:安装:pip install ipython

TAB键自动完成

?命令(内省、命名空间搜索)

执行系统命令(!)

%run命令执行文件代码

%paste %cpaste命令执行剪贴板代码

与编辑器和IDE交互

魔术命令:%timeit

%pdb …

使用命令历史 输入与输出变量(_, __, _2, _i2) 前一个的命令结果,前前一个。。

jupyter Notebook

NumPy是高性能科学计算和数据分析的基础包。它是pandas等其他各种工具的基础。

NumPy的主要功能:

ndarray,一个多维数组结构,高效且节省空间

无需循环对整组数据进行快速运算的数学函数 *

读写磁盘数据的工具以及用于操作内存映射文件的工具 *

线性代数、随机数生成和傅里叶变换功能 *用于集成C、C++等代码的工具

安装方法:pip install numpy 引用方式:import numpy as np

创建ndarray:np.array()

为什么要使用ndarray:

节省内存

运行速度快

ndarray多维数组,但数据类型必须一致

常用属性:

T 数组的转置(对高维数组而言)

dtype 数组元素的数据类型

size 数组元素的个数

ndim 数组的维数

shape 数组的维度大小(以元组形式)

dtype:

bool_, int(8,16,32,64), uint(8,16,32,64), float(16,32,64)

类型转换:astype()

创建ndarray:

array() 将列表转换为数组,可选择显式指定dtype

arange() range的numpy版,支持浮点数

linspace() 类似arange(),第三个参数为数组长度

zeros() 根据指定形状和dtype创建全0数组

ones() 根据指定形状和dtype创建全1数组

empty() 根据指定形状和dtype创建空数组(随机值)

eye() 根据指定边长和dtype创建单位矩阵

索引和切片:

数组和标量之间的运算

a+1  a*3   1//a   a**0.5

同样大小数组之间的运算

a+b  a/b  a**b

数组的索引

a[5]     a2[2][3]    a2[2,3]

数组的切片

a[5:8]    a[:3] = 1     a2[1:2, :4]     a2[:,:1]     a2[:,1]

与列表不同,数组切片时并不会自动复制,在切片数组上的修改会影响原数组。

b = a[:4]     b[-1] = 250

【解决方法:copy()】b = a[:4].copy()     b[-1] = 250

布尔型索引:

问题:给一个数组,选出数组中所有大于5的数。

答案:a[a>5]

原理:

a>5会对a中的每一个元素进行判断,返回一个布尔数组 布尔型索引:将同样大小的布尔数组传进索引,会返回一个由所有True对应位置的元素的数组

问题2:给一个数组,选出数组中所有大于5的偶数。

问题3:给一个数组,选出数组中所有大于5的数和偶数。 答案: a[(a>5) & (a%2==0)] a[(a>5) | (a%2==0)]

花式索引:

问题1:对于一个数组,选出其第1,3,4,6,7个元素,组成新的二维数组。

答案:a[[1,3,4,6,7]]

问题2:对一个二维数组,选出其第一列和第三列,组成新的二维数组。

答案:a[:,[1,3]]

通用函数:能同时对数组中所有元素进行运算的函数

常见通用函数:

一元函数:abs, sqrt, exp, log, ceil, floor, rint/round, trunc, modf, isnan, isinf, cos, sin, tan

二元函数:add, substract, multiply, divide, power, mod, maximum, mininum,

常用函数: sum 求和 cumsum 求累计和 mean 求平均数 std 求标准差 var 求方差 min 求最小值 max 求最大值 argmin 求最小值索引 argmax 求最大值索引

随机数生成:

rand 给定形状产生随机数组(0到1之间的数)

randint 给定形状产生随机整数

choice 给定形状产生随机选择

shuffle 与random.shuffle相同

uniform 给定形状产生随机数组

pandas是一个强大的Python数据分析的工具包。

pandas是基于NumPy构建的。

pandas的主要功能

具备对其功能的数据结构DataFrame、Series

集成时间序列功能

提供丰富的数学运算和操作

灵活处理缺失数据

安装方法:pip install pandas 引用方法:import pandas as pd

Series是一种类似于一位数组的对象,由一组数据和一组与之相关的数据标签(索引)组成。

Series比较像列表(数组)和字典的结合体

创建方式:pd.Series([4,7,-5,3])

pd.Series([4,7,-5,3],index=[‘a‘,‘b‘,‘c‘,‘d‘])

pd.Series({‘a‘:1, ‘b‘:2})

pd.Series(0, index=[‘a‘,‘b‘,‘c‘,‘d‘])

获取值数组和索引数组:values属性和index属性

Series支持NumPy模块的特性(下标):

从ndarray创建Series:

Series(arr) 与标量运算:sr*2

两个Series运算:sr1+sr2

索引:sr[0], sr[[1,2,4]]

切片:sr[0:2]

通用函数:np.abs(sr)

布尔值过滤:sr[sr>0] Series

支持字典的特性(标签):

从字典创建Series:Series(dic), in

运算:’a’ in sr

键索引:sr[‘a‘], sr[[‘a‘, ‘b‘, ‘d‘]]

整数索引的pandas对象往往会使新手抓狂。

例: sr = np.Series(np.arange(4.))

sr[-1]

如果索引是整数类型,则根据整数进行数据操作时总是面向标签的。

loc 以标签解释

iloc 以下标解释

数据对齐

pandas在运算时,会按索引进行对齐然后计算。如果存在不同的索引,则结果的索引是两个操作数索引的并集。

例:  
sr1 = pd.Series([12,23,34], index=[‘c‘,‘a‘,‘d‘])

sr2 = pd.Series([11,20,10], index=[‘d‘,‘c‘,‘a‘,])

sr1+sr2

sr3 = pd.Series([11,20,10,14], index=[‘d‘,‘c‘,‘a‘,‘b‘])

sr1+sr3

如何在两个Series对象相加时将缺失值设为0?

sr1.add(sr2, fill_value=0)

灵活的算术方法:add, sub, div, mul

数据缺失:

缺失数据:使用NaN(Not a Number)来表示缺失数据。其值等于np.nan。内置的None值也会被当做NaN处理。

处理缺失数据的相关方法:

dropna() 过滤掉值为NaN的行

fillna() 填充缺失数据

isnull() 返回布尔数组,缺失值对应为True

notnull() 返回布尔数组,缺失值对应为False

过滤缺失数据:sr.dropna() 或 sr[sr.notnull()]

填充缺失数据:sr.fillna(0)

groupby(‘‘).sum()

merge(left,right,on=‘key‘)

DataFrame是一个表格型的数据结构,含有一组有序的列。

DataFrame可以被看做是由Series组成的字典,并且共用一个索引。

创建方式:

pd.DataFrame({‘one‘:[1,2,3,4],‘two‘:[4,3,2,1]})

pd.DataFrame({‘one‘:pd.Series([1,2,3],index=[‘a‘,‘b‘,‘c‘]), ‘two‘:pd.Series([1,2,3,4],index=[‘b‘,‘a‘,‘c‘,‘d‘])})
……


csv文件读取与写入

df.read_csv(‘filename.csv‘)

df.to_csv()

读取文件:从文件名、URL、文件对象中加载数据

read_csv 默认分隔符为逗号

read_table 默认分隔符为\t

读取文件函数主要参数:

sep 指定分隔符,可用正则表达式如‘\s+‘
header=None 指定文件无列名

names 指定列名

index_col 指定某列作为索引

na_values 指定某些字符串表示缺失值

parse_dates 指定某些列是否被解析为日期,布尔值或列表

写入到文件:

写入文件函数的主要参数:

sep

na_rep 指定缺失值转换的字符串,默认为空字符串

header=False 不输出列名一行

index=False 不输出行索引一列

cols 指定输出的列,

传入列表

其他文件类型:json, XML, HTML, 数据库

查看数据常用属性及方法

index 获取行索引

T 转置

columns 获取列索引

values 获取值数组

describe() 获取快速统计

DataFrame各列name属性:列名

rename(columns={…})

DataFrame有行索引和列索引。

不指定按什么查询时默认标签为按列查,下标为按行查

df[‘A‘]

df[[‘A‘, ‘B‘]]

df[‘A‘][0]

df[0:10][[‘A‘, ‘C‘]]

按标签查询(左边为行,右边为列)

df.loc[:,[‘A‘,‘B‘]]

df.loc[:,‘A‘:‘C‘]

df.loc[0,‘A‘]

df.loc[0:10,[‘A‘,‘C‘]]

通过下标获取:

(左边为行,右边为列)

df.iloc[3]

df.iloc[3,3]

df.iloc[0:3,4:6]

df.iloc[1:5,:]

df.iloc[[1,2,4],[0,3]]

通过布尔值过滤:

df[df[‘A‘]>0]

df[df<0]

df[df[‘A‘].isin([1,3,5])]

 

数据对齐与数据缺失

DataFrame对象在运算时,同样会进行数据对其,结果的行索引与列索引分别为两个操作数的行索引与列索引的并集。

DataFrame处理缺失数据的方法:

dropna(axis=0,where=‘any‘,…)

fillna()

isnull()

notnull()

pandas常用方法(适用Series和DataFrame):

mean(axis=0,skipna=False)

sum(axis=1)

sort_index(axis, …, ascending) 按行或列索引排序

sort_values(by, axis, ascending) 按值排序

NumPy的通用函数同样适用于pandas

apply(func, axis=0) 将自定义函数应用在各行或者各列上 ,func可返回标量或者Series

applymap(func) 将函数应用在DataFrame各个元素上

map(func) 将函数应用在Series各个元素上

时间序列类型:

时间戳:特定时刻

固定时期:如2017年7月

时间间隔:起始时间-结束时间

Python标准库:
 date  time datetime timedelta

strftime()

strptime()

第三方包:dateutil
dateutil.parser.parse()

成组处理日期:

pd.to_datetime([‘2001-01-01‘, ‘2002-02-02‘])

产生时间对象数组:

date_range(‘2017-01-01‘,‘2017-01-31‘,freq=‘w‘)

tart 开始时间

end 结束时间

periods 时间长度

freq 时间频率,默认为‘D‘,可选H(our),W(eek),B(usiness),S(emi-)M(onth),(min)T(es), S(econd), A(year),…

时间序列就是以时间对象为索引的Series或DataFrame。

datetime对象作为索引时是存储在DatetimeIndex对象中的。

时间序列特殊功能:

传入“年”或“年月”作为切片方式

df[‘2017‘]
df[‘2017-02‘]

传入日期范围作为切片方式

df[‘2017-03-03‘:‘2017-03-04‘]

时间: 2024-07-29 15:40:47

数据分析模块Numpy Pandas的相关文章

Python——数据分析,Numpy,Pandas,matplotlib

由于图片内容太多,请拖动至新标签页再查看 Python--数据分析,Numpy,Pandas,matplotlib 原文地址:https://www.cnblogs.com/Jery-9527/p/10804069.html

python数据分析之numpy+pandas+scipy+matplotlib+scikit-learn安装

摘要 利用python来进行数据分析的时候,需要安装一些常见的工具包,如numpy,pandas,scipy等等,在安装的过程中,经常遇到一些安装细节的问题,如版本不匹配,需要依赖包没有正确安装等等,本文汇总梳理了下几个必要安装包的安装步骤,希望对读者有帮助,环境是windows 64 bit+python2.7.11. 一.安装python2.7.11 进入官网:https://www.python.org/downloads/release/python-2711/ 下载如下的连接: 下载之

高端实战 Python数据分析与机器学习实战 Numpy/Pandas/Matplotlib等常用库

课程简介:? ? 课程风格通俗易懂,真实案例实战.精心挑选真实的数据集为案例,通过Python数据科学库numpy,pandas,matplot结合机器学习库scikit-learn完成一些列的机器学习案例.课程以实战为基础,所有课时都结合代码演示如何使用这些python库来完成一个真实的数据案例.算法与项目相结合,选择经典kaggle项目,从数据预处理开始一步步代码实战带大家快速入门机器学习.旨在帮助同学们快速上手如何使用python库来完整机器学习案例. ------------------

11-2 numpy/pandas/matplotlib模块

目录 numpy模块 一维数组 二维数组 列表list和numpy的区别 获取多维数组的行和列 多维数组的索引 高级功能 多维数组的合并 通过函数方法创建多维数组 矩阵的运算 求最大值最小值 numpy生成随机数 pandas模块 pandas模块有什么用 Series(了解) DataFrame(掌握) 处理缺失值 合并数据 matplotlib模块 matplotlib模块有什么用? numpy模块 numpy模块导入时,注意需要设置别名为 np 一维数组 只有一行,相当于一条线 # 生成一

模块之numpy,pandas,matplotlib

numpy模块 numpy数组(矩阵)的运算, 科学运算, tensorflow pandas模块 文件(excel)的处理 read_excel()/to_excel() matplotlib模块 画图, plt.plot()/plt.bar()/plt.scatter()/plt.hist()/plt.pie() re模块 正则表达式,字符串内找特定的字符串 typing模块 获取一些数据类型,generator collections模块 增加一些特殊的数据类型 shutil模块 文件的解

数据分析之Numpy库入门

1.列表与数组 在python的基础语言部分,我们并没有介绍数组类型,但是像C.Java等语言都是有数组类型的,那python中的列表和数组有何区别呢? 一维数据:都表示一组数据的有序结构 区别: 列表:数据类型可以不同,如:[3.1413,'pi',3.1404,[3.1402,2.34],'3.2376'] 数组:数据类型相同 .如[3.14,34.34,3433.3,343.23] 二维数据:二维数据由多个一维数据构成,是一维数据的集合形式!表格是典型的二维数据! 注意:表格的表头,可以是

Python数据分析之numpy学习

Python模块中的numpy,这是一个处理数组的强大模块,而该模块也是其他数据分析模块(如pandas和scipy)的核心. 接下面将从这5个方面来介绍numpy模块的内容: 1)数组的创建 2)有关数组的属性和函数 3)数组元素的获取--普通索引.切片.布尔索引和花式索引 4)统计函数与线性代数运算 5)随机数的生成 数组的创建 numpy中使用array()函数创建数组,array的首个参数一定是一个序列,可以是元组也可以是列表. 一维数组的创建 可以使用numpy中的arange()函数

(转)Python数据分析之numpy学习

原文:https://www.cnblogs.com/nxld/p/6058572.html Python模块中的numpy,这是一个处理数组的强大模块,而该模块也是其他数据分析模块(如pandas和scipy)的核心. 接下面将从这5个方面来介绍numpy模块的内容: 1)数组的创建 2)有关数组的属性和函数 3)数组元素的获取--普通索引.切片.布尔索引和花式索引 4)统计函数与线性代数运算 5)随机数的生成 数组的创建 numpy中使用array()函数创建数组,array的首个参数一定是

Ipython Numpy pandas

Ipython:交互式的Python命令行 TAB:自动完成 ?:内省,命令空间搜索 !:执行系统命令 %run:命令执行文件代码 Ipython常用魔术命令: %quickref:显示Ipython的快速参考 %magic:显示所有魔术命令的详细文档 %debug:从最新的异常追踪的底部进入交互式命令调试器 %hist:打印命令的输入(可选输出)历史 %pdb:在异常发生后自动进入调试器 %paste:执行剪贴板中的Python代码 %cpaste:打开一个特殊提示符以便手工粘贴待执行的Pyt