您的位置:首页 > 其它

pandas学习笔记

2016-04-03 11:49 239 查看
pandas(基于NumPy构建的,让以NumPy为中心的应用变得更加简单)

主要数据结构:Series DataFrame

Series是一种类似于一维数组的对象,由一组数据以及一组与之相关的数据标签组成,也可以理解为固定长度的字典对象(在算术运算中会自动对齐不同索引的数据)

创建函数:Series

Series对象本身及其索引都有一个name属性

in 判断某个索引是否在Series中,返回True或False

isnull、notnull用于检测缺失数据

DataFrame表格型的数据结构,含有一组有序的列,每列可以是不同的类型

既有行索引也有列索引

列可以通过复制的方式被修改,可以用标量亦可以用Series赋值,若用Series赋值将会按索引精确匹配

创建函数:DataFrame

可传入的数据:

嵌套字典(外层字典的键作为列, 各内层字典会成为一列。键会被合并成结果的行索引,

内层键作为行索引 跟“由Series组成的字典”的情况一样

二维ndarray 数据矩阵,还可以传入行标和列标

由数组、列表或元组组成的字典 每个序列会变成DataFrame的一列。所有序列的长度必须相同

NumPy的结构化/记录数组 类似于“由数组组成的字典”

由Series组成的字典 每个Series会成为一列。如果没有显式指定索引,则各Series的索引会被合并成结果的行索引

字典或Series的列表 各项将会成为DataFrame的一行。字典键或Series索引的并集将会成为DataFrame的列标

由列表或元组组成的列表 类似于“二维ndarray”

另一个DataFrame 该DataFrame的索引将会被沿用,除非显式指定了其他索引

NumPy的MarkedArray 类似“二维ndarray”,只是掩码值在结果DataFrame中变NA

T可用于转置DataFrame

pandas的索引对象负责管理轴标签和其他元数据,不可修改

Index的方法和属性 append 连接另一个Index对象,产生一个新的Index

diff 计算差集,并得到一个Index

intersection 计算交集

union 计算并集

isin 计算一个指示各值是否包含在参数集合中的布尔型数值

delete 删除索引i处的元素,并得到新的Index

drop 删除传入的值,并得到新的Index

insert 将元素插入到索引i处,并得到新的Index

is_monotonic 当各元素均大于等于前一个元素时,返回True

is_unique 当Index没有重复值时,返回True

unique 计算Index中唯一值的数组

pandas方法1 reindex:作用是创建一个适应新索引的新对象(参数:index method fill_value limit level copy);对于DataFrame,reindex可以修改(行)索引、列,或两个都修改,如果仅传入一个序列,则重新索引行

reindex的method选项 ffill或pad 前向填充(或搬运)值

bfill或backfill 后向填充(或搬运)值

方法2 drop 丢弃某条轴上的一个或多个项,返回的是在指定轴上删除了指定值的新对象

方法3 索引 用标签的切片对Series进行索引时,左右两端都包含

对DataFrame进行索引是获取一个或多个列,若想对DataFrame在行上进行标签索引,需引入专门的索引字段

DataFrame的索引选项

obj[val] 选取DataFrame的单个列或一组列。在一些特殊情况下会比较便利:布尔型数组(过滤行)、切片(行切片)、布尔型DataFrame(根据条件设置值)

obj.ix[val] 选取DataFrame的单个行或一组行

obj.ix[:,val] 选取单个列或列子集

obj.ix[val1,val2] 同时选取行和列

reindex方法 将一个或多个轴匹配到新索引

xs方法 根据标签选取单行或单列,并返回一个Series

icol、irow方法 根据整数位置选取单行或单列,并返回一个Series

get_value、set_value方法 根据行标签和列标签选取单个值

方法4 对不同索引对象进行算术运算(pandas的最重要功能)

自动数据对齐 Series:相加时,若存在不同的索引对,结果是该索引对的并集

DataFrame:运算时,对齐操作会发生在行和列上

可执行的运算有:add sub mul div(加 减 乘 除)

DataFrame和Series之间的运算:默认情况下会将Series的索引匹配到DataFrame的列,然后沿着行一直向下广播

方法5 NumPy的ufuncs方法也可用于操作pandas对象

许多常见的数组统计功能都被实现成DataFrame方法,对于没有的功能,可自行定义一个lamda函数,并用apply方法将其应用到DataFrame

含有元素级的Python函数,例如applymap和map

方法6 排序 sort_index方法,返回一个已排序的新对象,可传入的参数有axis(轴) ascending(降序)

order按值对Series进行排序,缺失值会排在末尾

方法7 排名 rank根据“为各组分配一个平均排名”的方式破坏平级关系

method选项:average min max first

方法8 汇总和计算描述统计

约减方法(选项axis skipna level)Series

DataFrame(默认返回含有列小计的Series)

count 非NA值得数量

describe 针对Series或各DataFrame列计算汇总小计

min、max 计算最小值和最大值

argmin、argmax 计算能够获取到最小值和最大值的索引位置

idxmin、idxmax 计算能够获取到最小值和最大值的索引值

quantile 计算样本的分位数(0到1)

sum 值的总和

mean 值的平均数

median 值的算术中位数(50%分位数)

mad 根据平均值计算平均绝对离差

var 样本值的方差

std 样本值的标准差

skew 样本值的偏度(三阶矩)

kurt 样本值的峰度(四阶矩)

cumsum 样本值的累计和

cummin、cummax 样本值的累计最大值和累计最小值

cumprod 样本值的累计值

diff 计算一阶差分(对时间序列很有用)

pct_change 计算百分数变化

方法9 相关系数与协方差

corr(计算相关系数)、cov(计算协方差)Series:计算两个Series中重叠的、非NA的、按索引对齐的值的相关系数

DataFrame:corr和cov方法将以DataFrame形式返回完整的相关系数或协方差矩阵

方法10 唯一值、值计算和成员资格

函数分别为unique、value_counts、 isin

方法11 处理缺失数据

NA处理方法(np.nan,None):dropna fillna isnull notnull

dropna Series:返回一个仅含非空数据和索引值的Series

DataFrame:默认丢弃任何含缺失值的行,传入how=”all”将只丢弃全为NA的那些行,再传入axis=1可丢弃全NA的列

fillna 默认返回新对象,但也可以对现有对象进行就地修改

参数:value(可为常数值或字典,若为字典就可以实现对不同的列填充不同的值) method(插值方式。如果函数调用时未指定其他参数的话,默认为“ffill”) axis(待填充的轴,默认axis=0) inplace(修改调用者对象,而不产生副本) limit(对于前向和后向填充,可以连续填充的最大数量)

方法12 层次化索引

Series:由一个列表或数组组成的列表作为索引

DataFrame:每条轴都可以有分层索引,且各层都可以有名字

方法13 重新分级顺序

swaplevel 接受两个级别编号或名称,并返回一个互换了级别的新对象

sortlevel 根据单个级别中的值对数据进行排序

方法14 使用DataFrame的列

set_index将一个或多个列转换成行索引,默认情况下,那些列会从DataFrame中移除,传入drop=False可以保留下来

reset_index与set_index功能相反

方法15 GroupBy

分组键可以是一个或多个,可为Series、数组、列名

方法16 绘图

线形图 plot

Series.plot方法参数 label 用于图例的标签

ax 要在其上进行绘制的matplotlib subplot对象。如果没有设置,则使用当前mtplotlib subplot

style 将要传给matplotlib的风格字符串

alpha 图标的填充不透明度(0到1之间)

kind 可以是”line” “bar” “barh” “kde”

logy 在Y轴上使用对数标尺

use_index 将对象的索引用作刻度标签

rot 旋转刻度标签(0到360)

xticks 用作X轴刻度的值

yticks 用作Y轴刻度的值

xlim X轴的界限

ylim Y轴的界限

grid 显示轴网格线

DataFrame的plot参数 subplots 将各个DataFrame列绘制到单独的subplot

sharex 如果subplots=True,则共用同一个X轴,包括刻度和界限

sharey 如果subplots=True,则共用同一个Y轴

figsize 表示图像大小的元组

title表示图像标题的字符串

legend添加一个subplot图例(默认为True)

sort_columns 以字母表顺序绘制各列,默认使用当前列顺序

柱状图 在生成线形图的代码中加上kind=”bar”(垂直)或kind=“barh”(水平)

直方图和密度图 hist函数生成直方图 plot(kind=”kde”)生成密度图

散布图 从DataFrame创建散布图矩阵scatter_matrix

方法17 合并merge

参数 left 参与合并的左侧DataFrame

right 参与合并的右侧DataFrame

how “inner” “outer” “left” “right”其中之一,默认为”inner”

on 用于连接的列名。必须存在于左右两个DataFrame对象中。如果未指定,且其他连接键也未指定,则以left和right列名的交集作为连接键

left_on 左侧DataFrame中用作连接键的列

right_on 右侧DataFrame中用作连接键的列

left_index 将左侧的行索引用作其连接键

right_index 将右侧的行索引用作其连接键

sort 根据连接键对合并后的数据进行排序,默认为True。

suffixes 字符串值元组,用于追加到重叠列名的末尾,默认为(“_x”,”_y”)

copy 设置为False,可以在某些特殊情况下避免将数据复制到结果数据结构中。

方法18 连接join

方法19 combine_first 进行数据对齐

方法20 stack 将数据的列“旋转”为行

unstack 将数据的行“旋转”为列

方法21 轴向旋转 pivot

方法22 判断重复数据duplicated:返回一个布尔型的Series

移除重复数据drop_duplicates:返回一个移除了重复行的DataFrame(默认保留的是第一个出现的值组和,传入take_last=True则保留最后一个)

方法23 map 可接受一个函数或含有映射关系的字典型对象

实现元素级转换以及其他数据清理工作的便捷方式

方法24 replace 替换

方法25 改变轴标签 index.map

rename:复制DataFrame并对其索引和列标签进行赋值,传入inplace=True可就地修改某个数据集

方法26 面元划分 cut:返回一个特殊的Categorica对象,它含有一个表示不同分类名称的levels数组以及一个为原始数据进行标号的labels属性

qcut:根据样本分位数对数据进行面元划分,得到大小基本相同的面元

方法27 np.random.permutation可实现对Series或DataFrame的列的排序工作

np.random.randint 可得到一组随机整数

方法28 get_dummies:若DataFrame的某一列中含有k个不同的值,则可派生出一个k列矩阵或DataFrame

方法29 concat

参数 objs 参与链接的pandas对象的列表或字典。唯一必需的参数

axis 指明连接的轴向。默认为0

join “inner”、”outer”其中之一,默认为”outer”。指明其他轴向上的索引是按交集(inner)还是并集(outer)进行合并

join_axes 指明用于其他n-1条轴的索引,不执行并集/交集运算

keys 与连接对象有关的值,用于形成连接轴向上的层次化索引。可以是任意值的列表或数组、元组数组、数组列表(如果将levels设置成多级数组的话)

levels 指定用于层次化索引各级别上的索引,如果设置了keys的话

names 用于创建分层级别的名称,如果设置了keys和(或)levels的话

verify_integrity 检查结果对象新轴上的重复情况,如果发现则引发异常。默认(False)允许重复

ignore_index 不保留连接轴上的索引,产生一组新索引range(total_length)

方法30 pandas中矢量化的字符串方法

cat 实现元素级的字符串连接操作,可指定分隔符

contain 返回表示各字符串是否含有指定模式的布尔型数组

count 模式的出现次数

endswith、startswith 相当于对各个元素执行x.endswith(pattern)或x.startswith(pattern)

findall 计算各字符串的模式列表

get 获取各元素的第i个字符

join 根据指定的分隔符将Series中各元素的字符串连接起来

lower、upper 转换大小写。相当于对各个元素执行x.lower()或x.upper()

match 根据指定的正则表达式对各个元素执行re.match

pad 在字符串的左边、右边或左右两边添加空白符

center 相当于pad(side=”both”)

repeat 重复值

replace 用指定字符串替换找到的模式

slice 对Series中的各个字符串进行子串截取

split 根据分隔符或正则表达式对字符串进行拆分

strip、rstrip、lstrip 去除空白符,包括换行符。相当于对各个元素执行x.strip() x.rstrip() x.lstrip()

方法31 pandas中的绘图函数

Series.plot方法的参数 label 用于图例的标签

ax 要在其上进行图形绘制的matplotlib subplot对象。如果没有设置,则使用当前matplotlib subplot

style 将要传给matplotlib的风格字符串(如“ko--”)

alpha 图表的填充不透明度

kind 可以是”line” “bar” “barth” “kde”

logy 在Y轴上使用对数标尺

use_index 将对象的索引用作刻度标签

rot 旋转刻度标签(0到360)

xticks 用作X轴刻度的值

yticks 用作Y轴刻度的值

xlim X轴的界限(例如[0,10])

ylim Y轴的界限

grid 显示轴网格线(默认打开)

DataFrame.plot参数 subplots 将各个DataFrame列绘制到单独的subplot中

sharex 如果,则共用一个X轴,包括刻度和界限

sharey 如果,则共用一个Y轴

figsize 表示图像大小的元组

title 表示图像标题的字符串

legend 添加一个subplot图例(默认为True)

sort_columns 以字母表顺序绘制各列,默认使用当前列顺序
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: