* 索引的合并
* 重塑层次化索引
* 移除重复数据
pandas对象中的数据可以通过一些内置的方式进行合并:
默认情况下,merge做的是“inner”连接,结果中的键是交集。其他方式还有“left”、“right”以及“outer”。外连接求取的是键的并集,组合了左连接和右连接的效果
多对多连接产生的是行的笛卡尔积
在进行列——列连接时,DataFrame对象中的索引会被丢弃
![在这里插入图片描述](https://www.www.zyiz.net/i/ll/?i=20200325182008434.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RlZXBfX19MZWFybmluZw==,size_16,color_FFFFFF,t_70)
有时候,DataFrame中的连接键位于其索引中。在这种情况下,可以传入left_index=True或right_index=True(或两个都传)以说明索引应该被用作连接键。
对于层次化索引的数据,必须以列表的形式指明用作合并键的多个列
DataFrame还有一个join实例方法,它能更为方便地实现按索引合并。它还可用于合并多个带有相同或相似索引的DataFrame对象,而不管它们之间有没有重叠的列
pandas的concat函数提供了轻松完成轴向连接的可靠方式
默认情况下,concat是在axis=0上进行合并,当然,我们也可以令axis=1
![在这里插入图片描述](https://www.www.zyiz.net/i/ll/?i=20200325184016330.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RlZXBfX19MZWFybmluZw==,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://www.www.zyiz.net/i/ll/?i=2020032518493363.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RlZXBfX19MZWFybmluZw==,size_16,color_FFFFFF,t_70)
combine_first方法可以实现合并重叠数据,并且会进行数据对齐
df1 = pd.DataFrame({'a':[1.,np.nan,5.,np.nan],'b':[np.nan,2.,np.nan,6.],'c':range(2,18,4)}) df2 = pd.DataFrame({'a':[5.,4.,np.nan,3.,7.],'b':[np.nan,3.,4.,6.,8.]})
df1.combine_first(df2)
![在这里插入图片描述](https://www.www.zyiz.net/i/ll/?i=20200325193748342.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RlZXBfX19MZWFybmluZw==,size_16,color_FFFFFF,t_70)
有许多用于重新排列表格型数据的基础运算,这些函数也称作重塑或轴向旋转运算。
默认情况下,unstack操作的是最内层(stack也是如此)。传入分层级别的编号或名称即可对其他级别进行unstack操作
DataFrame的pivot方法可以实现这个转换
![在这里插入图片描述](https://www.www.zyiz.net/i/ll/?i=202003251949186.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RlZXBfX19MZWFybmluZw,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://www.www.zyiz.net/i/ll/?i=20200325195001528.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RlZXBfX19MZWFybmluZw,size_16,color_FFFFFF,t_70)
DataFrame的duplicated方法返回一个布尔型Series,表示各行是否是重复行
drop_duplicates方法用于返回一个移除了重复行的DataFrame
duplicated和drop_duplicates默认保留的是第一个出现的值组合,我们可以通过传入take_last=True来保留最后一个
使用map可以实现元素级转换以及其他数据清理工作的便捷方式
replace提供了一种实现该功能的更简单、更灵活的方式
![在这里插入图片描述](https://www.www.zyiz.net/i/ll/?i=20200325195946416.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RlZXBfX19MZWFybmluZw==,size_16,color_FFFFFF,t_70)
可以通过轴标签的map方法来操作轴标签
![在这里插入图片描述](https://www.www.zyiz.net/i/ll/?i=20200325200252326.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RlZXBfX19MZWFybmluZw==,size_16,color_FFFFFF,t_70)
同样,rename也可以实现上述操作,特别地,rename可以结合字典型对象实现对部分轴标签的更新
rename 帮我们实现了: 复制DataFrame并对其索引和列标签进行赋值。如果希望就地修改某个数据,传入inplace=True即可实现
![在这里插入图片描述](https://www.www.zyiz.net/i/ll/?i=20200325200806287.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RlZXBfX19MZWFybmluZw,size_16,color_FFFFFF,t_70)
![在这里插入图片描述](https://www.www.zyiz.net/i/ll/?i=20200325200954146.png?x-oss-
process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L0RlZXBfX19MZWFybmluZw,size_16,color_FFFFFF,t_70)
qcut 是一个非常类似于cut的函数,它可以根据样本分位数对数据进行面元划分。
根据数据的分布情况,cut可能无法使各个面元中含有相同数量的数据点。而qcut由于使用的是样本分位数,因此可以实现此功能