【学习笔记】 第08章 数据规整:聚合、合并和重塑
前言
从这一篇开始我就尽量精简来保障自己的学习效率和写博客的积极性
这一章将关注可以聚合、合并、重塑数据的方法
层次化索引
本章介绍了利用不同的方法来排序我们的数据,重建索引,对不同的索引序列求和运算等等操作
其中介绍了
unstack方法
可以将数据重新安排到一个DataFrame中,且unstack的逆运算是stack
swaplevel
swaplevel接受两个级别编号或名称,并返回一个互换了级别的新对象
解释:就是可以输入索引让数据按照输入的索引的值的顺序排列
ort_index
根据单个级别中的值对数据进行排序
level选项
用于指定在某条轴上求和的级别,以根据行或列上的级别来进行求和
set_index
set_index函数会将其一个或多个列转换为行索引,并创建一个新的DataFrame(这里会创建新的dataframe)
合并数据集
merge
多对一的合并如果没有指定,merge就会将重叠列的列名当做键,如果两个对象的列名不同,也可以分别进行指定
默认情况下,merge做的是“内连接”;结果中的键是交集。(就是如果连接的两个数据索引只会取都有的那部分连接,哪一部分缺少了都会舍弃)
表8-1 不同的连接类型
而多对多连接产生的是行的笛卡尔积,就是只要出现,都会给出一列或一行
要根据多个键进行合并,传入一个由列名组成的列表即可
suffixes
对于合并运算需要考虑的最后一个问题是对重复列名的处理。虽然你可以手工处理列名重叠的问题(查看前面介绍的重命名轴标签),merge有一个更实用的suffixes选项,用于指定附加到左右两个DataFrame对象的重叠列名上的字符串


left_index=True或right_index=True
有时候,DataFrame中的连接键位于其索引中。在这种情况下,你可以传入left_index=True或right_index=True(或两个都传)以说明索引应该被用作连接键
而层次化索引的数据,事情就有点复杂了,因为索引的合并默认是多键合并,这种情况下,必须以列表的形式指明用作合并键的多个列(注意用how='outer'对重复索引值的处理)
join
DataFrame还有一个便捷的join实例方法,它能更为方便地实现按索引合并。它还可用于合并多个带有相同或相似索引的DataFrame对象,但要求没有重叠的列。
concat
调用concat可以将值和索引粘合在一起
默认情况下,concat是在axis=0上工作的,最终产生一个新的Series。如果传入axis=1,则结果就会变成一个DataFrame
传入join='inner'即可得到它们的交集
可以通过join_axes指定要在其它轴上使用的索引

combine_first
Series有一个combine_first方法,,可以合并重叠数据
对于DataFrame,combine_first自然也会在列上做同样的事情,因此可以将其看做:用传递对象中的数据为调用对象的缺失数据“打补丁”
重塑和轴向旋转
- stack:将数据的列“旋转”为行。
- unstack:将数据的行“旋转”为列。
对于一个层次化索引的Series,你可以用unstack将其重排为一个DataFrame
如果不是所有的级别值都能在各分组中找到的话,则unstack操作可能会引入缺失数据
stack默认会滤除缺失数据,因此该运算是可逆的
当调用stack,我们可以指明轴的名字
In [138]: df.unstack('state').stack('side')
Out[138]:
state Colorado Ohio
number side
one left 3 0
right 8 5
two left 4 1
right 9 6
three left 5 2
right 10 7
小结
最后的长格式和宽格式没有学的很明白,其他都还不错,就是知识点太细太杂
准备准备开始学绘图!
本文来自博客园,作者:Lugendary,转载请注明原文链接:https://www.cnblogs.com/lugendary/p/16014443.html

浙公网安备 33010602011771号