利用python进行数据分析 笔记_利用python进行数据分析笔记(5)

第8章 数据规整:聚合、合并和重塑

8.1 层次化索引

层次化索引就是在一个轴上有多个索引级别

层次化索引的索引对象是multiIndex

层次化对象可以很方便的进行部分索引

而对于DataFrame,1轴和0轴都可以用层次化索引

用df.index.names和df.columns.names可以给层次化索引进行命名,只需将名字的列表传入即可

重排与分级排序

swaplevel接受两个名称,可以让这调整这两个名称的顺序,注意调整保持原数据不变,且返回一个新对象

sort_index函数对单个级别中的值进行排序,传入level= x即可根据指定的x列中的值进行排序

根据级别汇总统计

df和ser都有level选项用于选定级别,以sum函数为例,可以传入level参数来根据级别进行求和

使用DataFrame的列进行索引

DataFrame的set_index函数可以将一个或多个列变成行索引,返回的是一个新对象

drop参数可以保存那些转变成行索引的列,

而reset_index可以将行的层次化索引转成列,是set_index函数的逆运算

注意,如果有列和行索引重叠,则此函数回报错(set_index选了drop = False后再使用reset_index会报错)

8.2 合并数据集

数据库风格的DataFrame合并

pandas的merge函数可以使得两个df进行合并

默认是将重叠的列作为连接键,不过最好还是指定一下,添加on = 'key'即可

如果没有重叠的列,也可以分别进行指定,且默认是内连接,相当于交集

如果指定how = 'outer'就相当于并集

注意多对多连接产生的是笛卡尔积,如左表中有3个'b',右表中有两个'b',则新表有6个'b'

如果要根据多个键进行合并,只需要将重叠的多个列名组成一个列表进行传递即可,此时原来的索引会被抛弃

如果合并的列中有的列的列名重复了,可以使用suffixes选项进行改名,即在原名后面加上后缀(只针对重复的列),默认是加上_x和_y

merge函数的参数:

索引上的合并

传入left_index = True和right_index = True即可对索引(行索引)进行合并

而对于层次化索引,层次化索引默认是多键合并,所以我们需要将多键的列名组成列表传入

当传入left_index = True和right_index = True时即可合并双方索引,DataFrame的join函数也可以实现相同的效果,但要求合并的对象双方没有重叠的列

join方法默认的是左连接,即保留左边的行索引

轴向连接

pandas的concat函数可以将不同对象进行轴向连接,默认情况下是在0轴上连接

默认情况下连接时并集连接,传入join = 'inner'即可实现交集连接

而join_axes指定在其他轴上使用的索引

如果想在轴上创建一个层次化索引,使用keys参数即可

如果指定轴为1,再传入keys参数则这些keys参数会变成DataFrame的列名

对于DataFrame也是如此,只不过将列索引变成层次化索引,而keys参数变成高层索引;如果传入的是一个字典,这时不需要keys选项,字典的键会变成高层索引

在进行0轴连接时,传入ignore_index = True即可忽略行索引信息

concat函数的参数:

合并重叠数据

DataFrame和Series的combine_first函数相当于打补丁,会根据索引自动对齐且自动补齐df或ser的索引对应处的缺失值

对于DataFrame:

8.3 重塑和轴向旋转

重塑层次化索引

对于一个DataFrame,stack函数是将数据的列转成行,而unstack函数是将行转成列,从而使列索引变成层次化索引

默认情况下,stack和unstack函数都是对最内层操作,输入分层级的编号可以指定对该层进行操作

如果不是所有级别的值都能在索引中找到的话,则unstack会自动生成缺失值

而stack操作会自动过滤缺失值,所以unstack和stack仍然是可逆的

若使用stack函数进行转换的同时想保留缺失值的话可以传入dropna = False参数

将长格式旋转为宽格式

pivot函数可以将长格式转为宽格式

pivot(index=None, columns=None, values=None)

其中index和value是可选参数,默认为原索引/数据columns是必选参数

注意如果设置index和columns,要注意有没有重叠的值,若有则会报错

pivot函数其实就是set_index函数和unstack()函数的组合

将宽格式转换成长格式

pivot函数的逆运算是melt函数,melt是pandas的函数,melt函数是将多个列合在一起产生一个长的DataFrame

上述的'key'是分组指标,分组指标也可以没有

也可以只选取子集来组成长的DataFrame

其中id_vars是分组指标,value_vars是选取的子集

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值