pandas的汇总操作

pandas的汇总操作

pandas的拼接分为两种:

  • 级联:pd.concat,pd.append
  • 合并:pd.merge,pd.join

级联的业务应用场景:业务表结构相同或相似

numpy的级联

  1. numpy级联必须保证在级联的方向上,数据个数一致
  2. 如果数据个数不一致,无法级联

pd.concat((df1,df2))
默认是纵向方向级联,两张表的标签顺序可以不一致
以标签为基准
axis=1 行方向级联
axis=0 列方向级联 也是默认值
pandas使用pd.concat函数,与np.concatenate函数类似,只是多了一些参数:

objs:那两张表去级联
axis=0 默认列方向
join=‘outer’ 控制级联方向上标签的取值范围
inner 取多张表的在级联方向上的标签的交集
outer 取多张表在级联方向上的标签的并集

join_axes=None
Index对象列表。用于其他n-1轴的特定索引,而不是执行内部/外部设置逻辑。

ignore_index=False
如果行方向索引重复,可以直接忽略处理
使用整数对行索引进行重新设置

keys
横向级联时,如果产生相同的列标签,应该使用Keys来保存原始的标签值

使用append()函数添加
由于在后面级联的使用非常普遍,因此有一个函数append专门用于在后面添加
注意:append函数只是沿着axis=0的方向进行级联

2. 使用pd.merge()合并

在具有【相同字段】的两张不同的业务表之间进行汇总
合并依赖于列字典进行
合并参考的列必须存在一对一,一对多,多对多的关系
合并参考的列标签可以是不同的,但是默认是查找相同列标签的列来进行合并的
合并参考的列一般是离散型数据,而不应该选择连续性数据

原则:不要在汇总数据的时候做过滤操作
how=‘inner’ 类似于级联中的 join
inner 保留两张表共有的数据
left 只保留左表存在的数据

merge与concat的区别在于,merge需要依据某一共同列来进行合并
使用pd.merge()合并的时候,会自动根据两者相同column名称的那一列,作为key来进行合并
注意每一列元素的顺序不要求一致

如果两张表存在多列标签相同并且符合合并的条件,则默认参考所有相同标签的列进行合并

on 用于拥有多个相同字段的两张表的合并,on来指定一个或多个合并依赖的字段

使用on=显式指定哪一列为key,当有多个key相同时使用
使用left_on和right_on指定左右两边的列作为key,当左右两边的key都不想等时使用

内合并与外合并
内合并:只保留两者都有的key(默认模式)
外合并 how=‘outer’:补NaN
左合并、右合并:how=‘left’,how=‘right’,

发布了58 篇原创文章 · 获赞 0 · 访问量 494

猜你喜欢

转载自blog.csdn.net/qq_41170489/article/details/103896984