Pandas 数据转换、分组、融合
Pandas 数据融合
- concat() 方法
- merge() 方法
concat
1 frames = [df, ds] 2 # axis=1 横向 axis=0 纵向 3 pd.concat(frames, axis=0) 4 5 # 取并集 6 pd.concat(frames, axis=0, join="outer") 7 # 取交集 8 pd.concat(frames, axis=0, join="inner") 9 10 d1 = pd.DataFrame([22, 33], index=["身高", "体重"], columns=["张三"]) 11 d2 = pd.DataFrame([33, 44], index=["身高", "体重"], columns=["李四"]) 12 frames = [d1, d2] 13 14 pd.concat(frames, axis=1, join="inner") 15 16 df1 = pd.DataFrame({'年龄': [22, 26], 17 '籍贯': ['北京','河北']}, 18 index=['张某', '李某']) 19 df2 = pd.DataFrame({'身高': [175, 180], 20 '体重': [70, 85]}, 21 index=['张某', '李某']) 22 df3 = pd.DataFrame({'身高': [175, 183], 23 '体重': [70, 87]}, 24 index=['张某', '钱某']) 25 26 pd.concat([df1, df3], axis=1, join="inner")
merge
1 left = pd.DataFrame({'姓名': ['张某', '李某','段某'], 2 '年龄': [20, 26,24]}) 3 right = pd.DataFrame({'姓名': ['张某', '李某','钱某'], 4 '籍贯': ['北京','河北','江苏']}) 5 6 pd.merge(left, right, left_index=True, right_on="姓名", how="outer") 7 8 # 按照索引方式 9 pd.merge(left, right, left_index=True, right_index=True, how="outer") 10 # 相对之,按照 join 实例的方法实现融合更简单, join 默认为左连接 11 left.join(right, how="outer")
数据融合 combine_first实例方法实现了用参数对象中的数据为调用对象的缺失数据打补丁
1 df2.combine_first(df1) # 根据 df1中的值去填补df2中的缺失值
排序
- sort_index 根据索引进行排序
- sort_values 根据某列的值进行排序
- 随机重排
1 df.sort_values('score', ascending=False) # 调整 ascending 来判断是升序还是降序,默认是True,升序 2 # 产生一个随机重排序列的索引 3 sampler = np.random.permutation(3) 4 sampler 5 df.take(sampler)
GroupBy 技术
- 使用 groupby() 方法可以沿着任意轴进行分组,并且将分组依据的键作为每组的组名,有三种方法
- df.groupby(key)
- df.groupby(key, axis=1)
- df.groupby([key1, key2])
数据分组的基本方法
- 分组大小和分组排序
- 对分组进行迭代
- 选择指定组或组内的列