zoukankan      html  css  js  c++  java
  • 4-Pandas数据预处理之数据合并与轴向连接(pd.concat()的详解)

      数据合并:由于数据可能是不同的格式,且来自不同的数据源,为了方便之后的处理与加工,需要将不同的数据转换成一个DataFrame。

      Numpy中的concatenate()、vstack()、hstack()可对数组进行拼接,可参考学习。

      Pandas提供了pd.concat()pd.merge()join()combine_first()等函数对Pandas数据对象进行合并。

    在本节中,仅对pd.concat()进行详细讲解。

    pd.concat()常用的参数
    参数 说明
    objs 需连接的对象的列表
    axis 轴向连接所沿的轴,默认为0
    ignore_index 默认False,当为True时表示不适用连接轴上的索引值,生成的轴标记为0...n-1
    keys 序列,默认为None。构建层次化索引,且该索引位于最外层
    join 值为'inner'或'outer'(默认'outer')。指定处理其他轴上的索引(并集或交集)
    join_axes 指定其他轴上的索引,不执行并集或交集运算

    (1)默认连接两个DataFrame对象(默认axis = 0,即上下连接)

    >>> import pandas as pd
    >>> df1 = pd.DataFrame({'姓名':['钱某','段某'],'年龄':[20,24]},index=[2,3])
    >>> df2 = pd.DataFrame({'姓名':['钱某','段某'],'年龄':[20,24]},index=[2,3])
    >>> df1
       姓名  年龄
    2  钱某  20
    3  段某  24
    >>> df2
       姓名  年龄
    2  钱某  20
    3  段某  24
    
    #连接两个对象
    >>> pd.concat([df1,df2])
       姓名  年龄
    2  钱某  20
    3  段某  24
    2  钱某  20
    3  段某  24

    (2)左右连接两个DataFrame对象

    >>> df1 = pd.DataFrame({'年龄':[22,26],'籍贯':['北京','河北']},index=['张某','李某'])
    >>> df2 = pd.DataFrame({'身高':[175,180],'体重':[70,85]},index=['张某','李某'])
    >>> df1
        年龄  籍贯
    张某  22  北京
    李某  26  河北
    >>> df2
         身高  体重
    张某  175  70
    李某  180  85
    
    #左右连接
    >>> pd.concat([df1,df2],axis=1)
        年龄  籍贯   身高  体重
    张某  22  北京  175  70
    李某  26  河北  180  85

    (3)验证ignore_index参数,即将连接后的列名转化为0...n-1

    >>> pd.concat([df1,df2],axis=1,ignore_index=True)
         0   1    2   3
    张某  22  北京  175  70
    李某  26  河北  180  85
    

     (4)验证keys参数,即构建层次化索引

    >>> pd.concat([df1,df2],axis=1,keys=['df1','df2'])
       df1      df2
        年龄  籍贯   身高  体重
    张某  22  北京  175  70
    李某  26  河北  180  85
    

    (5)验证join参数,默认 join = 'outer' ,取并集,不会造成信息的缺失

    >>> df3 = pd.DataFrame({'身高':[175,183],'体重':[70,87]},index=['张某','钱某'])
    >>> df3
         身高  体重
    张某  175  70
    钱某  183  87
    
    #取并集
    >>> pd.concat([df1,df3],axis=1)
          年龄   籍贯     身高    体重
    张某  22.0   北京  175.0  70.0
    李某  26.0   河北    NaN   NaN
    钱某   NaN  NaN  183.0  87.0
    
    #取交集
    >>> pd.concat([df1,df3],axis=1,join='inner')
        年龄  籍贯   身高  体重
    张某  22  北京  175  70

    (6)验证join_axes参数,若只想重用原始DataFrame中的索引,则项 join_axes 传入一个索引对象列表

    >>> pd.concat([df1,df3],axis=1)
          年龄   籍贯     身高    体重
    张某  22.0   北京  175.0  70.0
    李某  26.0   河北    NaN   NaN
    钱某   NaN  NaN  183.0  87.0
    
    >>> pd.concat([df1,df3],axis=1,join_axes=[df1.index])
        年龄  籍贯     身高    体重
    张某  22  北京  175.0  70.0
    李某  26  河北    NaN   NaN
  • 相关阅读:
    Oracle数据库入门——体系结构
    基础知识——CentOS7操作系统的安装图文教程
    Oracle数据库入门——基础知识
    Windows Server 2008 R2 64位操作系统安装Oracle 11g 64位数据库,在客户终端上安装Oracle 11g 32位,才能安装P/L Sql Developer并配置
    2. Mysql数据库的入门知识
    1. Mysql数据库的安装
    Excel制作考勤管理
    常用函数公式及技巧搜集
    调试C++NPv2_Select_Reactor_Log_Server程序
    调试C++NPv2_Reactor_Log_Server程序
  • 原文地址:https://www.cnblogs.com/Cheryol/p/13395518.html
Copyright © 2011-2022 走看看