在统计数据时,我们通常需要去重,这时我们可以使用 tolist 方法将数据放入一个列表里,在使用 set()将列表转换成集合,集合自带去重,所以我们就能将重复的数据去掉,通常在统计人数时使用,如果时 dateframe 的话是 to_list(),series 就是 tolist
而 join 方法是进行数组合并
相当于水平合并,数据缺失的地方补充 nan
当 t2.join(t1)时,因为 t2 只有两行,所以合并之后 t1 的第三行数据就被删除了,需要注意的是,只有 index 相同的行才能合并,如果 index 不相同是无法合并的
join 是通过行索引进行合并的,那么还有另外一种方法是通过列索引进行合并的
因为 on='a',所以就是找到两组数据相匹配的行,再水平合并,以上这组数据有两行 a 都匹配,所以就合并两次
不匹配的行会被删除,如下所示
这是默认 inner 情况,如果想改其他方法可以指定 how='....'来指定
以上是 outer 情况,取得是并集,没有的地方 nan 补充
另外两种方法 left 和 right 的话,就是分别以左边或右边为准,如下所示
如果左边两行数据,右边三行数据,以左边为准的话右边的第三行数据就要删掉,以右边为准的话左边第三行需要补充 nan
这是 columns 相同的合并,但是有些 columns 没有相同的,这时就可以 left_on='....',和 right_on='....'来合并,意思就是左边看哪一列,右边看哪一列,可以指定列,不需要 columns 相同
分组聚合
groupby 之后得到的数据是一个 dateframe
此时得到的数据是一个 series,在对 series 使用 groupby 取条件时,不能直接 by='country',需要写 by='df['country']',原因是 series 中没有 columns,出现两个索引的原因就是 groupby 取了两个条件
如果我们想返回的是 dateframe 而不是 series 时,我们只需要按如下方式写
再取 brand 时多加一个 [],此时打出的结果就是 dateframe,原因是在 [] 中加上 [] 是取多列的意思,但我们只取来 brand 这一列,所以 columns 只有 brand 这一列
索引和复合索引
在使用 reindex 时,没有的 index 给出来了那么里面的值就是 nan
df1 里面没有 f 所以 reindex 后的 f 中的值是 nan,也就类似于切片,只能取到本身有的值
set_index 就是将某一列作为索引
默认情况 drop 是 Ture,意思就是将 a 这一列作为索引,那么 a 这一列就不要了,如果想保留 a 这一列,就需要指定 drop=False
还有一个就是 unique ()这个方法,就是返回这一列中的唯一值,意思就是去重,这是对列进行去重,如果想对索引进行去重,那么调动的就是 index.unique(),也就是说索引是可以重复的
如果设置两个索引得到的结果就是如下
这就是复合索引
在 series 中使用复合索引取数据的方法如下
在复合索引中还有一个方法就是 swaplevel(),就是将两个索引调换位置,如下所示
levels 的内容就是它的索引,在调用复合索引时只能先取外层再取内层,所以有时需要用到 swaplevel 这个方法
但如果在 dateframe 中使用符合索引取值就需要用到 loc 这个方法了
在 dateframe 中使用标签索引需要使用 loc,使用位置所引需要使用 iloc,取 columns 时不用 loc 和 iloc