Ipython Numpy pandas

Posted suncunxu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Ipython Numpy pandas相关的知识,希望对你有一定的参考价值。

Ipython:交互式的Python命令行

TAB:自动完成

?:内省,命令空间搜索

!:执行系统命令

%run:命令执行文件代码

Ipython常用魔术命令:

%quickref:显示Ipython的快速参考

%magic:显示所有魔术命令的详细文档

%debug:从最新的异常追踪的底部进入交互式命令调试器

%hist:打印命令的输入(可选输出)历史

%pdb:在异常发生后自动进入调试器

%paste:执行剪贴板中的Python代码

%cpaste:打开一个特殊提示符以便手工粘贴待执行的Python代码

%reset:删除interactive命名空间中的全部变量/名称

%page OBJECT:通过分页器打印输出OBJECT

%run script.py:在Ipython中执行一个Python脚本文件

%prun statement:通过cProfile执行statement,并打印分析器的输出结果

%time statement:报告statement的执行时间

%timeit statement:多次执行statement以计算系统平均执行时间,对那些执行时间非常小的代码有用

%who %who_is %whos:显示interactive命名空间中定义的变量,信息级别/冗余度可变

%xdel variable:删除variable,并尝试清除其在Ipython中的对象上的一切引用

Ipython快捷键:

Ctrl+P或上方向键:后向搜索命令历史中以当前输入的文本开头的命令

Crel+N或下方向键:前向搜索命令历史中以当前输入的文本开头的命令

Ctrl+R:按行读取的反向历史搜索(部分匹配)

Ctrl+shift+V:从剪贴板粘贴文本

Ctrl+C:中止当前正在执行的代码

Ctrl+A:将光标移动到行首

Ctrl+E:将光标移动到行尾

Ctrl+K:删除从光标开始至行尾的文本

Ctrl+U:清除当前行执行的所有文本

Ctrl+F:将光标向前移动一个字符

Ctrl+B:将光标向后移动一个字符

Ctrl+L:清屏

NumPy:数组运算:

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

Numpy:的主要功能:

ndarray,一个多维数组结构,高效且节省空间,无需循环对整组数组数据进行运算,读写磁盘数据的工具以及用于操作内存映射文件的工具,线性代数,随机数生成和傅里叶变换功能,用于集成C,C++等代码的工具

安装方法:pip install numpy

饮用方式:import numpy as np

ndarray:多维数组对象

创建ndarray:np.array()

ndarray:还可以是多维数组,但元素类型必须相同

常用属性:

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

dtype:数组元素的数据类型

size:数组元素的个数

ndim:数组的维数

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

dtype:bool_,int,float类型转换:astype()

创建ndarray:

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

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

?:可帮助查看方法参数

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

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

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

reshape()

Numpy:索引和切片

数组和标量之间的运算

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],a2[1:2,:4],a2[:,:1] ,a2[:,1]

布尔型索引:

给定一个数组选出数组中所有大于5的数:a[a>5]

原理:a>5会对a中的每一个元素进行判断,返回一个布尔型数组,

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

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

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

答案:a[(a>5)&(a%2==0)],a[(a>5)|(a%2==0)]

花式索引:

对于一个数组,选出第1,3,4,6,7个元素组成新的数组

a[[1,3,4,6,7]

对于一个二维数组,选出其第一列和第三列答案:

a[:,[1,3]]

NumPy:通用函数

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

常见通用函数:

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

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

数学和统计方法

sum:求和,mean:求平均数,std:求标准差,var:求方差,min:求最小值,max:求最大值

argmin:求最小值索引,argmax:求最大值索引

np.random:常用函数

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

randint:给定形状产生随机整数

choice:给定形状产生随机选择(符合正态分布?)

shuffle:与random.shuffle相同打乱排序,改变原数组

uniform:给定形状产生随机数组

pandas:数据分析

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特性:

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:Series数据对齐

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

pandas:Series缺失数据

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

处理确实数据的相关方法:

dropna():过滤掉值为NaN的行

fillna():填充缺失数据

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

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

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

填充缺失数据:fillna(0)

pandas:DataFrame

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()

查看数据常用属性及方法:

index获取索引,T转置,columns获取列索引,values:获取值数组,describe():获取快速统计

DataFrame索引和切片

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,3],[0,3]]

通过布尔值过滤:

df[df[‘a‘]>0],df[df[‘a‘].isin([1,3,5])],df[df<0]=0

数据对齐与缺失数据

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

DataFrame处理缺失数据的方法:

drop(axis=0,where=‘any‘,...)

fillna(),isnull(),notnull()

pandas:其他常用方法

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

mean(axis=0,skipna=False),sun(aixs=1),

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

NumPy的通用函数同样适用pandas

pandas从文件读取:

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

read_csv 默认分割符为csv

read_table 默认分割符为\t

读取文件函数主要参数:

sep:指定分割符,可用正则表达式如‘\s+‘

headerNone 指定文件无列名

name 指定列名

index_col  指定某列作为索引

skip_row 指定跳过某些行

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

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

写入到文件:to_csv

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

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

header=False 不保存列名  index=False 不保存行索引  cols 指定输出的列,传入列表

以上是关于Ipython Numpy pandas的主要内容,如果未能解决你的问题,请参考以下文章

Python——IPython和NumPy

Anaconda 中的不同 numpy 版本和 IPython Shell 中的 numpy.__version__

Numpy

Tensorflow Numpy不能在ipython笔记本上运行Python2.7和3.5

在IPython Notebook中愉快地使用python编程

在 IPython Notebook 中管理需求?