Pandas数据分析 (三)

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])

 

数据分组的基本方法

  • 分组大小和分组排序
  • 对分组进行迭代
  • 选择指定组或组内的列
posted @ 2020-01-17 13:33  小喵钓鱼  阅读(184)  评论(0编辑  收藏  举报