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的主要内容,如果未能解决你的问题,请参考以下文章
Anaconda 中的不同 numpy 版本和 IPython Shell 中的 numpy.__version__
Tensorflow Numpy不能在ipython笔记本上运行Python2.7和3.5