目录:
- 数据分析和建模方面的大量编程工作都是用在数据准备上的:加载、清理、转换以及重塑。pandas和python标准库提供了一组高级的、灵活的、高效的核心函数和算法。
一 合并数据集
- pandas.merge可根据一个或多个键将不同DataFrame中的行连接起来。SQL或其他关系型数据库对此思维应用比较常见。
- pandas.concat可以沿着一条轴将多个对象堆叠在一起。
- 实例方法combine_first可以将重复数据编接在一起,用一个对象中的值填充另一个对象中的缺失值。
1 数据库风格的DataFrame合并
- 数据集的合并(merge)或连接(join)运算是通过一个或多个键将行链接起来的。这些运算是关系型数据的核心。pandas的merge函数是对数据应用这些算法的主要切入点。
pd.merge(df1,df2,on = 'key')
pd.merge(df1,df2) #如果没有指定,merge会将重叠列的列名当做键,最好显示指定一下。
pd.merge(df1,df2,left_on = 'key1',right_on = 'key2' # 如果两个对象的列名不同,可以分别进行指定
- 默认情况下,merge做的是“inner”连接,结果中的键是交集。其他方式还有“left”、“right”、“outer”。外连接求取的是键的并集,组合了左连接和右连接的效果。
- 多对多的合并操作非常简单,无需额外的操作。多对多的连接产生 的是行的笛卡尔积,左边b行,右边a行,结果中就有a*b行。连接方式只影响出现在结果中的键。
- 要根据多个键进行合并,传入一个由列名组成的列表即可。结果中会出现哪些键的组合取决于所选的合并方式,也可以这样理解:多个键形成一系列元组,并将其当作单个连接键(实际上并不是这么回事)
- 合并运算需要考虑的最后一个问题是对重复列名的处理。虽然可以手动更改,但是merge有一个更实用的suffixes选项,用于指定附加到左右两个DataFrame对象的重叠列名上的字符串。
pd.merge(left,right,on = 'key'
pd.merge(left,right,on = 'key1',suffixes = ('_left','_right'))
- merge函数的参数:
- ① left # 用于合并的左侧DataFrame
- ② right # 用于合并的右侧DataFrame
- ③ how # “inner”、“outer”、“left”、‘“right”其中之一,默认为“inner”
- ④ on # 用于连接的列名
- ⑤ left_on、tight_on # 左右侧DataFrame分别指定键
- ⑥ left_index、right_index # 左右侧将索引用作连接键
- ⑦ sort# 合并后进行排序,默认为True