【注】:此篇内容为作者整理补充,书籍中可能顺序有些差别。
(声明:本教程仅供本人学习使用,如有人使用该技术触犯法律与本人无关)
(如果有错误,还希望指出。共同进步)
Series:(二层索引)
DataFrame:
(三层索引):
1、使用数组:pd.MultiIndex.from_arrays()
2、使用tuple:pd.MultiIndex.from_tuples()
3、使用product:pd.MultiIndex.from_product()
除了行索引Index,列索引columns也能用同样的方法创建多层索引
【注】:numpy.random.randint(0,100,size=8)表示8行一列;size=(1,8)表示一行8列
【重要】对于Series来说,直接中括号[]与使用.loc()完全一样,因此,推荐使用中括号索引和切片。
(1) 可以直接使用列名称来进行列索引
(2) 使用行索引需要用ix(),loc()等函数
【极其重要】推荐使用loc()函数
注意在对行索引的时候,若一级行索引还有多个,对二级行索引会遇到问题!也就是说,无法直接对二级索引进行索引,必须让二级索引变成一级索引后才能对其进行索引!只能行切片
stack():列索引放到行索引上面
unstack():行索引放到列索引上面
【小技巧】
使用stack()的时候,level等于哪一个,哪一个就消失,出现在行里。
使用unstack()的时候,level等于哪一个,哪一个就消失,出现在列里。
where(条件):对数据的过滤,other用来指定不满足条件的参数
使用**duplicated()函数检测重复的行,返回元素为布尔类型的Series对象,每个元素对应一行,如果该行不是第一次出现,则元素为True
使用drop_duplicates()**函数删除重复的行
映射的含义:创建一个映射关系列表,把values元素和一个特定的标签或者字符串绑定
需要使用字典:
map = { 'label1':'value1', 'label2':'value2', ... }
【*】:(常用)新建一列(由已有的列生成一个新列,或者修改当前列)
map函数的参数:
# 新建一列
df["c"] = df["GO"].map(lambda x : x-5)
# 修改当前“GO”列
df["GO"] = df["GO"].map(lambda x : x-5)
中位数:奇数个是最中间的数,偶数个是中间两个数的平均值
std():可以求得DataFrame对象每一列的标准差
df.drop(labels,inplace = True):删除特定索引
【排序】
1、使用**.take()函数排序
2、可以借助np.random.permutation()**函数随机排序
# nums 指dataframe数据的行数
df.take(np.random.permutation(nums))
【随机抽样】
当DataFrame规模足够大时,直接使用**np.random.randint()函数,就配合take()**函数实现随机抽样
# left 指随机数据行数开始行
# right 指随机数据行数结束行
# nums 指随机抽样数据的个数
df.take(np.random.randint(left, right, size=nums))
数据聚合是数据处理的最后一步,通常是要使每一个数组生成一个单一的数值。
数据分类处理:
核心: groupby()函数
分组:先把数据分为几组——groupby()之后的数据是一个对象;一般后面跟上聚合操作
用函数处理:为不同组的数据应用不同的函数以转换数据
合并:把不同组得到的结果合并起来
pandas的拼接分为两种:
级联:pd.concat, pd.append
合并:pd.merge, pd.join
和np.concatenate一样,优先增加行数(默认axis=0),可以通过设置axis来改变级联方向;【注意】index在级联时可以重复
也可以选择忽略ignore_index,重新索引
或者使用多层索引 keys
concat([x,y],keys=[‘x’,‘y’])
不匹配指的是级联的维度的索引不一致。例如纵向级联时列索引不一致,横向级联时行索引不一致;有3种连接方式:
–外连接:补NaN(默认模式),join=“outer”;默认
–内连接:只连接匹配的项,匹配不到的不要
–连接指定轴 join_axes
由于在后面级联的使用非常普遍,因此有一个函数append专门用于在后面添加
merge与concat的区别在于,merge需要依据某一共同的行或列来进行合并
使用pd.merge()合并时,会自动根据两者相同column名称的那一列,作为key来进行合并。
注意每一列元素的顺序不要求一致
1)一对一合并(重复的保留一次)
2)多对一合并(数据总数为:多乘一+不重复的)
3)多对多合并(数据总数:多乘多+不重复的)
4) key的规范化:
内合并:只保留两者都有的数据(默认模式)
外合并:数据没有的补上Nan
左合并:左边表的数据一个都不能少,即使不上Nan也不能把数据丢掉
右合并:右边表的数据一个都不能少,即使不上Nan也不能把数据丢掉
当列冲突时,即有多个列名称相同时,需要使用on=来指定哪一个列作为key,配合suffixes指定冲突列名
可以使用suffixes=自己指定后缀