《利用Python进行数据分析》第八章数据规整相关知识点总结

1、分层索引

在pandas包中,我们利用set_index方法可以设置多层索引。

import pandas as pd
frame = pd.DataFrame({'a':range(7),'b':range(7,0,-1),
                    'c':['one','one','one','two','two',
                        'two','two'],
                     'd':[0,1,2,0,1,2,3]})
frame2 = frame.set_index(['c','d'])
frame2

输出
在这里插入图片描述
又可以将分层索引的索引层移动到对应的列中,即set_index反操作。

frame2.reset_index()

输出
在这里插入图片描述

2、数据连接与合并

pandas中,数据按行连接可以使用merge

df1 = pd.DataFrame({'key':['b','b','a','c','a','a','b'],
                   'data1':range(7)})
df2 = pd.DataFrame({'key':['a','b','d'],
                   'data2':range(3)})
pd.merge(df1,df2)#默认按索引为链接的键 需要加on=‘key’

输出
在这里插入图片描述
再输入

pd.merge(df1,df2,on='key')

输出结果与上图相同
由上图可以看出缺少c,d类型的分类,因为merge默认为inner连接(即交集),需要改为outer连接(即并集)。

pd.merge(df1,df2,how='outer')

输出
在这里插入图片描述
如果一个DataFrame中的值想与另一个DF中的索引互相匹配,可以使用merge中参数left_on或者right_on(看前者需要匹配的键在left还是right),同时我对于后一个DataFrame中的索引想要合并,可以添加参数right_index 或 left_index。

#表示索引需要作为用来合并的键
pd.merge(left1, right1, left_on='key', right_index=True)#如果需要两边索引都合并 则都为true
#也可以使用join进行连接

输出
在这里插入图片描述
pandas中concat是纵轴连接DataFrame。其中参数ignore_index如果为True,则是不沿着连接轴保留索引,是产生一段新的(长度为total_length)的索引。

import numpy as np
df3 = pd.DataFrame(np.random.randn(3,4), columns=['a','b','c','d'])
df4 = pd.DataFrame(np.random.randn(2,3), columns=['b','d','a'])

pd.concat([df3,df4], ignore_index=True, sort=True)#ignore_index不沿着连接轴保留索引,而产生一段新的(长度为total_length)的索引
#sort需为TRUE 否则会报错

输出
在这里插入图片描述
combine_first方法可以认为它是根据你传入的对象来“修补”调用对象的缺失值。

df5 = pd.DataFrame({'a':[1,np.nan,5,np.nan],
                   'b':[np.nan,2,np.nan,6],
                   'c':range(2,18,4)})
df6 = pd.DataFrame({'a':[5,4,np.nan,3,7],
                   'b':[np.nan,3,4,6,8]})
df5.combine_first(df6)#df6修补df5

输出
在这里插入图片描述

3、重塑与透视

pandas中运用melt方法可以变换为新的DataFrame 将多列合并成一列 产生新的DataFrame。

melted = pd.melt(df,['key'])#必须指明哪些列是分组指标
melted #相当于把ABC整合到一列中

输出
在这里插入图片描述

以上就是该书第八章我认为重要知识点总结,如果有错误之处还请指出。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值