数据预处理之数据合并(基于pandas)

数据预处理

数据预处理主要包括:
数据合并:通过堆叠合并和主键合并等多种合并的方式可以将关联的数据信息合并在同一张表格中
数据清洗:对数据进行检测,查询是否有重复值,缺失值和异常值,并对这些数据进行处理
标准化数据:为了消除特征之间量纲和取值范围造成的影响,需要对数据进行标准化处理,也可以称作规范化处理
转换数据:对经过前面处理的数据进行合理的转换,使其符合分析的要求

数据合并:通过堆叠合并和主键合并等多种合并的方式可以将关联的数据信息合并在同一张表格中
这节博客主要介绍pandas中数据合并常见的方法,主要包括concat,apeend,merge,join四种合并数据的方法
内连接,外连接具体的区别我也忘记了,可参照博客:https://blog.csdn.net/weixin_39241397/article/details/79772379
在merge我会使用该博客中的表格,进行简单的演示

pandas.concat

pandas.concat(objs,axis=0,joins=‘outer’,)
主要常用的使用这三个参数
objs接受多个series ,dateframe,panel的组合
axis表示连接的轴向,默认为0,默认纵向连接
join 接受inner或者outer inner表示索引按照交集进行合并,outer表示索引按照并集进行合并

import pandas as pd
table_a=pd.read_excel('a.xlsx')
table_b=pd.read_excel('b.xlsx')
print('a表为:\n',table_a)
print('b表为:\n',table_b)
a表为:
     A   B   C   D   E
0  A1  B1  C1  D1  E1
1  A2  B2  C2  D2  E2
2  A3  B3  C3  D3  E3
3  A4  B4  C4  D4  E4
4  A5  B5  C5  D5  E5
b表为:
     B   D   F
0  B2  D2  F2
1  B3  D3  F3
2  B3  D3  F4
3  B4  D4  F5
table_1=pd.concat([table_a,table_b],axis=1,join='outer')
print('a,b表按照并集横向合并的新表为:\n')
print(table_1)
a,b表按照并集横向合并的新表为:

    A   B   C   D   E    B    D    F
0  A1  B1  C1  D1  E1   B2   D2   F2
1  A2  B2  C2  D2  E2   B3   D3   F3
2  A3  B3  C3  D3  E3   B3   D3   F4
3  A4  B4  C4  D4  E4   B4   D4   F5
4  A5  B5  C5  D5  E5  NaN  NaN  NaN
table_2=pd.concat([table_a,table_b],axis=1,join='inner')
print('a,b表按照交集横向合并的新表为:\n')
print(table_2)
a,b表按照交集横向合并的新表为:

    A   B   C   D   E   B   D   F
0  A1  B1  C1  D1  E1  B2  D2  F2
1  A2  B2  C2  D2  E2  B3  D3  F3
2  A3  B3  C3  D3  E3  B3  D3  F4
3  A4  B4  C4  D4  E4  B4  D4  F5
table_3=pd.concat([table_a,table_b],axis=0,join='outer',sort=False)
print('a,b表按照并集纵向合并的新表为:\n')
print(table_3)
a,b表按照并集纵向合并的新表为:

     A   B    C   D    E    F
0   A1  B1   C1  D1   E1  NaN
1   A2  B2   C2  D2   E2  NaN
2   A3  B3   C3  D3   E3  NaN
3   A4  B4   C4  D4   E4  NaN
4   A5  B5   C5  D5   E5  NaN
0  NaN  B2  NaN  D2  NaN   F2
1  NaN  B3  NaN  D3  NaN   F3
2  NaN  B3  NaN  D3  NaN   F4
3  NaN  B4  NaN  D4  NaN   F5
table_4=pd.concat([table_a,table_b],axis=0,join='inner')
print('a,b表按照交集纵向合并的新表为:\n')
print(table_4)
a,b表按照交集纵向合并的新表为:

    B   D
0  B1  D1
1  B2  D2
2  B3  D3
3  B4  D4
4  B5  D5
0  B2  D2
1  B3  D3
2  B3  D3
3  B4  D4
pandas.DateFrame.append

pandas.DateFrame.append 只能用于纵向连接,而且两张表格的列名需要完全一致

table_c=pd.read_excel('c.xlsx')
print('apennd纵向连接bc表')
print(table_b.append(table_c))
apennd纵向连接bc表
    B   D   F
0  B2  D2  F2
1  B3  D3  F3
2  B3  D3  F4
3  B4  D4  F5
0  B5  D5  F5
1  B6  D6  F6
2  B7  D7  F7
pandas.merge

pandas.merge(left,right,how=‘inner’,on,letf_on=None,right_None)
left,right好理解,就是导入左边右边数据,接受dateframe与dateright
how 接受inner,outer,left,right四个,分别表示内连接,外连接,左连接,右连接,下面四个例子很好诠释了四个连接的区别
on 表示两个数据合并的主键
left_on 左边数据参数接受用于合并的主键
right_on 同理

table_d=pd.read_excel('d.xlsx')
table_f=pd.read_excel('f.xlsx')
print('d表为:\n',table_d)
print('f表为:\n',table_f)
d表为:
    id student_name  class_id
0   1          gjp    201901
1   2           gs    201902
2   3          dyx    201903
3   4           ll    201904
4   5           kk    201905
5   6           jj    201906
f表为:
    class_id class_name
0    201901         一班
1    201902         二班
2    201903         三班
3    201904         四班
4    201907         七班
#内连接
table_5=pd.merge(table_d,table_f,how='inner')
print('表d和表f经过内连接为:')
print(table_5)
表d和表f经过内连接为:
   id student_name  class_id class_name
0   1          gjp    201901         一班
1   2           gs    201902         二班
2   3          dyx    201903         三班
3   4           ll    201904         四班
#外连接
table_6=pd.merge(table_d,table_f,how='outer')
print('表d和表f经过外连接为:')
print(table_6)
表d和表f经过外连接为:
    id student_name  class_id class_name
0  1.0          gjp    201901         一班
1  2.0           gs    201902         二班
2  3.0          dyx    201903         三班
3  4.0           ll    201904         四班
4  5.0           kk    201905        NaN
5  6.0           jj    201906        NaN
6  NaN          NaN    201907         七班
#左连接
table_7=pd.merge(table_d,table_f,how='left')
print('表d和表f经过左连接为:')
print(table_7)
表d和表f经过左连接为:
   id student_name  class_id class_name
0   1          gjp    201901         一班
1   2           gs    201902         二班
2   3          dyx    201903         三班
3   4           ll    201904         四班
4   5           kk    201905        NaN
5   6           jj    201906        NaN
#右连接
table_8=pd.merge(table_d,table_f,how='right')
print('表d和表f经过右连接为:')
print(table_8)
表d和表f经过右连接为:
    id student_name  class_id class_name
0  1.0          gjp    201901         一班
1  2.0           gs    201902         二班
2  3.0          dyx    201903         三班
3  4.0           ll    201904         四班
4  NaN          NaN    201907         七班
pandas.DateFrame.join

join连接可以实现部分主键合并的功能,但是使用join连接两个主键的名字必须相同
四种连接方式,就不一一举例,可参考merge的用法,调用形式和merge不同,举一个例子
join用法博主暂时没搞清楚,没明白lsuffix

print('join的用法')
print(table_d.join(table_f,on='class_id',lsuffix='d'))
join的用法
   id student_name  class_idd  class_id class_name
0   1          gjp     201901       NaN        NaN
1   2           gs     201902       NaN        NaN
2   3          dyx     201903       NaN        NaN
3   4           ll     201904       NaN        NaN
4   5           kk     201905       NaN        NaN
5   6           jj     201906       NaN        NaN
  • 5
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
JupyterLab是一个基于Web的交互式开发环境,它提供了一个灵活的平台,可以进行数据预处理和分析。在JupyterLab,你可以使用各种编程语言(如Python、R等)来处理和分析数据数据预处理数据分析的重要步骤之一,它包括数据清洗、数据转换、数据集成和数据规约等过程。下面是一些常见的JupyterLab数据预处理的方法和工具: 1. 数据清洗:数据清洗是指对原始数据进行处理,以去除重复值、缺失值和异常值等。在JupyterLab,你可以使用Pandas库来进行数据清洗操作,例如使用drop_duplicates()函数去除重复值,使用dropna()函数去除缺失值,使用fillna()函数填充缺失值。 2. 数据转换:数据转换是指将原始数据转换为适合分析的形式。在JupyterLab,你可以使用Pandas库进行数据转换操作,例如使用apply()函数对数据进行自定义转换,使用merge()函数进行数据合并,使用pivot_table()函数进行数据透视等。 3. 数据集成:数据集成是指将来自不同来源的数据进行整合。在JupyterLab,你可以使用Pandas库进行数据集成操作,例如使用concat()函数进行数据合并,使用merge()函数进行数据合并等。 4. 数据规约:数据规约是指通过聚合、抽样等方法减少数据量,以提高分析效率。在JupyterLab,你可以使用Pandas库进行数据规约操作,例如使用groupby()函数进行数据聚合,使用sample()函数进行数据抽样等。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值