精华内容
下载资源
问答
  • 数据合并
    千次阅读
    2020-12-29 07:20:51

    在数据处理当中,我们经常碰到数据集合并的需要。在一些语言如SAS,SQL中,数据集合并是一个非常简单的问题,但是在Matlab中,数据集合并则显得稍微复杂了一点。

    在Matlab中,要想合并数据,有两个办法,第一个办法就是使用dataset这种数据类型,这个statistic toolbox中的数据类型,专门为统计分析开发的。mat,cell,等数据类型转换成dataset数据类型可以查看 mat2dataset,cell2dataset函数。当然,也可以直接定义dataset数据集。有了dataset数据类型,那么就可以使用join函数进行数据合并。还有另外一种办法就是对于金融序列数据,可以使用Financial toolbox中的merge函数,前提是数据类型为金融时间序列对象。本文主要讨论join函数如何合并数据。

    [C,IA,IB]= join(A,B,param1,val1,param2,val2,...)

    参数一Keys &&LeftKeys,RightKeys

    在join这个函数中,首先要输入的参数是Keys。这个一般为一个变量名,作为数据合并的标准。当Keys为变量名时,A,B中必须要都有这个变量。否则应该使用LeftKeys和RightKeys这两个参数,LeftKeys指定A中某个变量作为合并依据,RightKeys指定B中某个变量作为合并依据 。请看下面的例子。a、b是一个dataset类型数据,a包含了变量Key1,Var1;b包含了变量Key2,Var2;

    a = dataset({'a' 'b' 'c' 'e' 'h'}',[1 2 3 11 17]','VarNames',{'Key1'

    'Var1'})

    b = dataset({'a' 'b' 'd' 'e'}',[4 5 6 7]','VarNames',{'Key1'

    'Var2'})

    a =

    Key1       Var1

    'a'         1

    'b'         2

    'c'         3

    'e'        11

    'h'        17

    b =

    Key1       Var2

    'a'        4

    'b'        5

    'd'        6

    'e'        7

    现在我们想合并两个数据集,以Key1作为合并依据,那么

    c=

    join(a,b,'key','Key1','Type','inner','MergeKeys',true)

    c =

    Key1       Var1    Var2

    'a'         1      4

    'b'         2      5

    'e'        11

    7

    但是当a,b中的变量不同时,例如b中的Key1不叫Key1,而是叫Key2,那么怎么合并呢,应该使用使用LeftKeys和RightKeys代替Keys.举个例子:

    a = dataset({'a' 'b' 'c' 'e' 'h'}',[1 2 3 11 17]','VarNames',{'Key1'

    'Var1'})

    b = dataset({'a' 'b' 'd' 'e'}',[4 5 6 7]', 'VarNames',{'Key2' 'Var2'})

    %注意Key1变成了Key2

    c=

    join(a,b,'LeftKeys','Key1','RightKeys','Key2','Type','inner','MergeKeys',true)

    结果是

    c =

    Key1_Key2    Var1

    Var2

    'a'           1      4

    'b'           2      5

    'e'          11      7

    参数二Type

    Type参数描述的是我们合并的方式,是返回两个数据中共有的部分,还是返回两个数据集中所有的观测值,或者返回某个数据集中的所有观测值。Type共有四个参数值,inner,outer,leftouter,rightouter.

    首先我们看一下Type参数值为inner时候的结果

    cinner = join(a,b,'key','Key1','Type','inner','MergeKeys',true)

    cinner =

    Key1       Var1    Var2

    'a'         1      4

    'b'         2      5

    'e'        11      7

    结果返回a,b中Key1都有的‘a’,’b’,’c’的观测值。所以inner表示返回两个数据集的共有部分。

    再看一下Type为outer时候的结果

    couter =

    Key1       Var1    Var2

    'a'          1       4

    'b'          2       5

    'c'          3     NaN

    'd'        NaN       6

    'e'         11       7

    'h'         17     NaN

    很显然,a中Key1变量没有d这个值,b中Key1没有c,h这个值,但是结果中还是包含了这些观测值。所以outer表示返回数据集的所有观测值。

    leftouter,与outer的区别在于leftouter表示,当A中有一个关键变量值而A中却没有的时候,依然返回该观测值。例如

    cleftouter =

    join(a,b,'key','Key1','Type','leftouter', 'MergeKeys',true)

    cleftouter =

    Key1       Var1    Var2

    'a'         1        4

    'b'         2        5

    'c'         3      NaN

    'e'        11        7

    'h'        17

    NaN

    所以leftouter返回A中所有的观测值。

    rightouter这个参数值则和leftouter这个相反。

    crightouter

    = join(a,b,'key','Key1','Type','rightouter', 'MergeKeys',true)

    crightouter

    =

    Key1

    Var1    Var2

    'a'

    1     4

    'b'

    2     5

    'd'

    NaN     6

    'e'

    11     7

    参数三MergeKeys

    最后我们看一下MergeKeys这个参数,故名思议,这个参数表示是否合并关键变量。当MergeKeys为true时,结果只返回一个关键变量。当MergeKeys为false时,结果返回两个关键变量,一个来自与A,一个来自与B.让我们看一下这个例子

    couter =

    join(a,b,'key','Key1','Type','inner', 'MergeKeys',false)

    couter =

    Key1_left

    Var1    Key1_right    Var2

    'a'           1      'a'           4

    'b'           2      'b'           5

    'e'

    11      'e'           7

    couter =

    join(a,b,'key','Key1','Type','inner', 'MergeKeys',true)

    couter =

    Key1

    Var1    Var2

    'a'

    1      4

    'b'

    2      5

    'e'

    11      7

    输出项[C IA IB]

    C为返回的数据集,IA,IB分别为索引,A(IA,varName)对应着C中含有A数据集的元素。例如

    [c,IA,IB]=join(a,b,'LeftKeys','Key1','RightKeys','Key2','Type','inner','MergeKeys',true)

    c =

    Key1_Key2

    Var1    Var2

    'a'           1      4

    'b'           2      5

    'e'

    11      7

    IA =

    1

    2

    4

    IB =

    1

    2

    4

    >>

    a(IA,:)

    ans =

    Key1

    Var1

    'a'

    1

    'b'

    2

    'e'

    11

    本文最后总结jion函数的参数用法如下表 。

    Keys

    一般为A,B中的变量名

    关键变量,以该变量作为合并的标准。

    LeftKeys

    RightKeys

    LeftKeys:A中的变量名

    RightKeys:B中的变量名

    指定A中的某变量和B中的某变量作为合并的关键变量。

    Type

    inner

    以关键变量为依据,返回共有的部分

    outer(fullouter)

    以关键变量为依据,返回所有的观测值。

    rightouter

    返回B中所有的观测值

    Leftouter

    返回A中所有的观测值

    MergeKeys

    true

    合并关键变量

    false

    不合并关键变量(默认)

    更多相关内容
  • 图解pandas的数据合并merge

    千次阅读 2021-07-24 16:01:23
    公众号:尤而小屋作者:Peter编辑:Peter 大家好,我是Peter~ 在实际的业务需求中,我们的数据可能...本文中重点介绍的是merge函数,也是pandas中最为重要的一个实现数据合并的函数。 看完了你会放弃SQL吗? Panda.

    公众号:尤而小屋
    作者:Peter
    编辑:Peter

    大家好,我是Peter~

    在实际的业务需求中,我们的数据可能存在于不同的库表中。很多情况下,我们需要进行多表的连接查询来实现数据的提取,通过SQL的join,比如left join、left join、inner join等来实现。

    在pandas中也有实现合并功能的函数,比如:concat、append、join、merge。本文中重点介绍的是merge函数,也是pandas中最为重要的一个实现数据合并的函数。

    看完了你会放弃SQL吗?

    Pandas连载文章

    目前Pandas系列文章已经更新了13篇,文章都是以案例+图解的风格,欢迎访问阅读。有很多个人推荐的文章:

    参数

    官网学习地址:https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html#

    pd.merge(left,   # 待合并的2个数据框
             right, 
             how='inner',  # ‘left’, ‘right’, ‘outer’, ‘inner’, ‘cross’
             on=None, # 连接的键,默认是相同的键
             left_on=None,  # 指定不同的连接字段:键不同,但是键的取值有相同的内容
             right_on=None, 
             left_index=False,   # 根据索引来连接
             right_index=False, 
             sort=False, # 是否排序
             suffixes=('_x', '_y'),   # 改变后缀
             copy=True, 
             indicator=False,   # 显示字段来源
             validate=None)
    
    

    参数的具体解释为:

    • left、right:待合并的数据帧

    • how:合并的方式,有5种:{‘left’, ‘right’, ‘outer’, ‘inner’, ‘cross’}, 默认是 ‘inner’

      1、 left:左连接,保留left的全部数据;right类似;类比于SQL的left join 或者right join

      2、outer:全连接功能,类似SQL的full outer join

      3、inner:交叉连接,类比于SQL的inner join

      4、cross:创建两个数据帧DataFrame的笛卡尔积,默认保留左边的顺序

    • on:连接的列属性;默认是两个DataFrame的相同字段

    • left_on/right_on:指定两个不同的键进行联结

    • left_index、right_index:通过索引进行合并

    • suffixes:指定我们自己想要的后缀

    • indictor:显示字段的来源

    模拟数据

    我们创建了4个DataFrame数据框;其中df1和df2、df3是具有相同的键userid;df4有类似的键userid1,取值也是ac,和df1或df2的userid取值有相同的部分。

    import pandas as pd
    import numpy as np
    

    参数left、right

    left、how就是需要连接的两个数据帧,一般有两种写法:

    • pd.merge(left,right),个人习惯
    • left.merge(right)

    图解过程如下:

    • 两个数据框df1(left)、df2(right)有相同的字段userid
    • 默认是通过相同的字段(键)进行关联,取出键中相同的值(ac),而且每个键的记录要全部显示,比如a有多条记录

    参数how

    inner

    inner称之为内连接。它会直接根据相同的列属性userid进行关联,取出属性下面相同的数据信息a、c

    ⚠️上面的图解过程就是默认的使用how=“inner”

    outer

    outer称之为外连接,在拼接的过程中会取两个数据框中键的并集进行拼接

    • 外连接,取出全部交集键的并集。例子中是user的并集
    • 如果某个键在某个数据框中不存在数据,则为NaN

    图解过程如下:

    • 也是根据相同的字段来进行联结:userid
    • 保留两边的全部数据,所以abcde全部存在
    • 如果某边不存在键下面的某个值,则结果中用NaN补充。比如df1的userid中存在b,但是df3中不存在,则结果b对应的score为NaN,cd类似;e在df3中存在e的取值,但是df1中不存在,则age的值为NaN

    left

    以左边数据框中的键为基准;如果左边存在但是右边不存在,则右边用NaN表示

    图解过程如下:

    • 和上面图解过程的结果差别在于,没有出现e;
    • 当how=“left”,只会保留df1(left)中userid下面的全部取值,不包含e

    right

    以右边数据框中的键的取值为基准;如果右边存在但是左边不存在,则左边用NaN表示

    image-20210724095138183

    图解过程如下:

    • 当how=“right”,只会保留df3(right)中userid的全部取值
    • 结果只保留了df3的userid下面的全部取值:a、e

    cross

    笛卡尔积:两个数据框中的数据交叉匹配,出现n1*n2的数据量

    笛卡尔积的图解过程如下:

    • 出现的数据量是4*2,userid下面的数据交叉匹配
    • 在最终结果中相同的字段userid为了避免混淆,会带上默认的后缀_x、_y

    参数on

    如果待连接的两个数据框有相同的键,则默认使用该相同的键进行联结。

    上面的所有图解例子的参数on默认都是使用相同的键进行联结,所以有时候可省略。

    再看个例子:

    还可以将left和right的位置进行互换:

    上面的两个例子都是针对数据框只有具有相同的一个键,如果不止通过一个键进行联结,该如何处理?通过一个来自官网的例子来解释,我们先创建两个DataFrame:df5、df6

    现在进行两个数据框的合并:

    合并的图解过程如下:

    • 通过on参数指定两个连接的字段key1、key2
    • 只有当两个数据框中的key1和key2的取值完全相同的时候(交集),才会保留下来;比如都出现了key1=K0,key2=K0和key1=K1,key2=K0。

    在看一个通过how="outer"进行连接的案例:

    看看图解的过程:

    • 指定连接的两个键key1、key2
    • 使用how=“outer”,会保留两个数据框中的全部数据。某个数据框中不存在键的值,则取NaN

    参数left_on、right_on

    上面在连接合并的时候,两个数据框之前都是有相同的字段,比如userid或者key1和key2。但是如何两个数据框中没有相同的键,但是这些键中的取值有相同的部分,比如我们的df1、df3:

    在这个时候我们就使用left_on和right_on参数,分别指定两边的连接的键:

    如果我们不指定,系统就会报错,因为这两个数据框是没有相同的键,本身是无法连接的:

    参数suffixes

    如果连接之后结果有相同的字段出现,默认后缀是_x_、_y。这个参数就是改变我们默认的后缀。我们回顾下笛卡尔积的形成;

    现在我们可以指定想要的后缀:

    indicator

    这个参数的作用是表明生成的一条记录是来自哪个DataFrame:both、left_only、right_only

    如果带上参数会显示一个新字段_merge

    不带上参数的话,默认是不会显示来源的,看默认的情况:

    总结

    merge函数真的是非常强大,在工作中也使用地很频繁,完全可以实现SQL中的join效果。希望本文的图解能够帮助读者理解这个合并函数的使用。同时pandas还有另外几个与合并相关的函数,比如:join、concat、append,会在下一篇文中统一讲解。

    展开全文
  • 数据清洗 空值和缺失值的处理 ​ 空值一般表示数据未知、不适用或将在以后添加数据。缺失值是指数据集中某个或某些属性的值是不完整的。 ​ 一般空值使用None表示,缺失值使用NaN表示 使用isnull()和notnull()函数...

    1. 数据清洗

    1.1 空值和缺失值的处理

    ​ 空值一般表示数据未知、不适用或将在以后添加数据。缺失值是指数据集中某个或某些属性的值是不完整的。

    ​ 一般空值使用None表示,缺失值使用NaN表示

    1.1.1 使用isnull()和notnull()函数

    ​ 可以判断数据集中是否存在空值和缺失值

    1.1.1.1 isnull()语法格式:

    pandas . isnull(obj)

    1.1.1.2 notnull()语法格式:

    pandas . notnull(obj)

    ​ notnull()与 isnull()函数的功能是一样的,都可以判断数据中是否存在空值或缺失值,不同处在于,前者发现数据中有空值或缺失值时返回False,后者返回的是True.

    image-20200408095426434

    1.1.2 使用 dropna()和fillna()方法

    ​ 对缺失值进行删除和填充。

    1.1.2.1 dropna()删除含有空值或缺失值的行或列

    image-20200408095121058

    ​ axis:确定过滤行或列

    ​ how:确定过滤的标准,默认是‘any’

    ​ inplase::False=不修改对象本身

    1.1.2.2 fillna()方法可以实现填充空值或者缺失值

    image-20200408095611415

    ​ value:用于填充的数值,
    ​ method:表示填充方式,默认值为None,‘ffill’前填充,‘bfill’后填充
    ​ limit:可以连续填充的最大数量,默认None.

    1.2 重复值的处理

    ​ 当数据中出现了重复值,在大多数情况下需要进行删除。

    1.2.1 使用duplicated()和drop_duplicates()方法

    ​ duplicated()方法用于标记是否有重复值。
    ​ drop_duplicates()方法用于删除重复值。
    ​ 它们的判断标准是一样的,即只要两条数中所有条目的值完全相等,就判断为重复值。

    1.2.2 duplicated()方法的语法格式

    image-20200408103815173

    ​ subset:用于识别重复的列标签或列标签序列,默认识别所有的列标签。
    ​ keep:删除重复项并保留第一次出现的项取值可以为 first、last或 False

    ​ duplicated()方法用于标记 Pandas对象的数据是否重复,重复则标记为True,不重复则标记为False,所以该方法返回一个由布尔值组成的Series对象,它的行索引保持不变,数据则变为标记的布尔值

    强调注意:

    ​ (1)只有数据表中两个条目间所有列的内容都相等时,duplicated()方法才会判断为重复值。
    ​ (2)duplicated()方法支持从前向后( first)和从后向前(last)两种重复值查找模式,默认是从前向后查找判断重复值的。换句话说,就是将后出现的相同条目判断为重复值。

    1.2.2.1 drop_duplicates()方法的语法格式

    image-20200408104346719

    2 上述方法中, inplace参数接收一个布尔类型的值,表示是否替换原来的数据,默认为False.

    1.3 异常值的处理

    ​ 异常值是指样本中的个别值,其数值明显偏离它所属样本的其余观测值,这些数值是不合理的或错误的。

    1.3.1 常用的检测方法有3σ原则(拉依达准则)和箱形图

    ​ 3σ原则是基于正态分布的数据检洳而箱形图没有什么严格的要求,可以检测任意一组数据,

    1.3.1.1 3σ原则

    ​ 是指假设一组检测数据只含有随机误差,对其进行计算处理得到标准偏差,按一定概率确定一个区间,凡是超过这个区间的误差都是粗大误差,在此误差的范围内的数据应予以剔除。

    image-20200410075300130

    数值几乎全部集中在(μ-3σ,μ+3σ)]区间内,超出这个范围的可能性仅占不到0.3%.所以,凡是误差超过这个区间的就属于异常值,应予以剔除

    def three_sidma(ser):# ser 为数据的列
        mean_value=ser.mean()# 平均值
        std_value=ser.std()# 标准值
        rule=(ser<mean_value-3*std_value)|(ser>mean_value+3*std_value)
        index=np.arange(ser.shape[0])[rule]
        outrange=ser.iloc[index]
        return outrange
    

    1.3.1.2 箱形图

    ​ 箱开图是一种用作显示一组数据分散情况的统计图。在箱形图中,异常值通常被定义为小于QL-15QR或大于QU+1.5IQR的值。
    ​ (1)QL称为下四分位数,表示全部观察中四分之一的数据取值比它小
    ​ (2)QU称为上四分位数,表示全部观察值中有四分之一的数据取值比它大
    ​ (3)IQR称为四分位数间距,是上四分位数0与下四分位数则之差,其间包含了全部观察值的一半。

    离散点表示的是异常值,上界表示除异常值以外数据中最大值;下界表示除异常值以外数据中最小值。
    image-20200410082849892

    boxplot()方法,专门用来绘制箱形图。


    ​ 检测出异常值后,通常会采用如下四种方式处理这些异常值
    ​ a)直接将含有异常值的记录删除。
    ​ b)用具体的值来进行替换,可用前后两个观测值的平均值修正该异常值
    ​ c)不处理,直接在具有异常值的数据集上进行统计分析
    ​ d)视为缺失值,利用缺失值的处理方法修正该异常值。

    如果希望对异常值进行修改,则可以使用replace()方法进行替换,该方法不仅可以对单个数据进行替换,也可以多个数据执行批量替换操作。

    image-20200410083245420

    ​ to_replace:表示查找被替换值的方式
    ​ value:用来替换任何匹配 to_replace的值,默认值None.

    1.4 更改数据类型

    ​ 在处理数据时,可能会遇到数据类型不一致的问题。例如,通过爬虫采集到的数据都是整型的数据,在使用数据时希望保留两位小数点,这时就需要将数据的类型转换成浮点型。

    ​ 创建 Pandas数据对象时,如果没有明确地指出数据的类型,则可以根据传入的数据推断出来并且通过 dtypes属性进行查看。

    1.4.1 在使用构造方法中的 dtype参数指定数据类型

    image-20200410085253097

    1.4.2 通过 astype()方法可以强制转换数据的类型。

    image-20200410085401072

    ​ dtype:表示数据的类型。
    ​ errors:错误采取的处理方式,可以取值为 raise或 ignore.其中, raise表示允许引发异常ignore表示抑制异常,默认为 raise.

    astype()方法存在着一些局限性,只要待转换的数据中存在非数字以外的字符,在使用 astype()方法进行类型转换时就会出现错误,而to_numeric()函数的出现正好解决了这个问题。

    1.4.3 to_numeric()函数可以将传入的参数转换为数值类型。

    image-20200410085757093

    arg:表示要转换的数据,可以是list、tuple、 Series.
    errors:表示错误采取的处理方式。

    2. 数据合并

    2.1轴向堆叠数据

    2.1.1 concat()函数

    ​ concat()函数可以沿着一条轴将多个对象进行堆叠,其使用方式类似数据库中的数据表合并。

    image-20200415093604508

    axis:表示连接的轴向,可以为0或1,默认为0
    join:表示连接的方式,inner表示内连接, outer表示外连接默认使用外连接。
    i gnore_index:如果设置为True,清除现有索引并重置索引值。
    names:结果分层索引中的层级的名称。

    ​ 根据轴方向的不同,可以将堆叠分成横向堆叠与纵向堆叠,默认采用的是纵向堆叠方式

    ​ 在堆叠数据时,默认采用的是外连接(join参数设为 outer)的方式进行合并,当然也可以通过join=inner设置为内连接的方式。

    2.2 主键合并数据

    ​ 主键合并类似于关系型数据库的连接方式,它是指根据个或多个键将不同的 DataFrame对象连接起来,大多数是将两个 DataFrame对象中重叠的列作为合并的键。

    2.2.1 merge()函数

    image-20200415103636862

    left:参与合并的左侧 DataFrame对象。
    right:参与合并的右侧 DataFrame对象。
    how:表示连接方式,默认为 inner。

    2.2.1.1 how参数可以取下列值

    left:使用左侧的 DataFrame的键,类似SQL的左外连接
    right:使用右侧的 DataFrame的键,类似SQL的右外连接
    outer:使用两个 DataFrame所有的键,类似SQL的全连接。
    inner:使用两个 DataFrame键的交集,类似SQL的内连接

    ​ 在使用 merge()函数进行合并时,默认会使用重叠的列索引做为合并键,并采用内连接方式合并数据,即取行索引重叠的部分。

    ​ merge()函数还支持对含有多个重叠列的 Data frame对象进行合并。

    ​ 使用外连接的方式将 left与right进行合并时,列中相同的数据会重叠,没有数据的位置使用NaN进行填充。

    2.3 根据行索引合并数据

    ​ join()方法能够通过索引或指定列来连接多个DataFrame对象

    2.3.1 join()方法

    on:名称,用于连接列名。
    how:可以从{‘left‘,’right’,’ outer‘,‘inner’}中任选一个,默认使用左连接的方式。
    sort:根据连接键对合并的数据进行排序,默认为 False.

    2.4 合并重叠数据

    ​ 当DataFrame对象中出现了缺失数据,而我们希望使用其他 DataFrame对象中的数据填充缺失数据,则可以通过 combine_first()方法为缺失数据填充。

    2.4.1 combine_first()方法

    上述方法中只有一个参数 other,该参数用于接收填充缺失值的 DataFrame对象。

    注意:使用combine_first()方法合并两个DataFrame对象时,必须确保它们的行索引和列索引有重叠的部分

    3. 数据重塑

    3.1 重塑层次化索引

    ​ Pandas中重塑层次化索引的操作主要是 stack()方法和 unstack()方法,前者是将数据的列“旋转”为行,后者是将数据的行“旋转”为列。

    3.1.1 stack()方法

    stack()方法可以将数据的列索引转换为行索引。

    level:默认为-1,表示操作内层索引。若设为0,表示操作外层索引。

    dropna:表示是否将旋转后的缺失值删除,若设为True,则表示自动过滤缺失值,设置为 False则相反。

    3.1.2 unstack()方法

    unstack()方法可以将数据的行索引转换为列索引

    level:默认为-1,表示操作内层索引,0表示操作外层索引。

    fill_value:若产生了缺失值,则可以设置这个参数用来替换NaN。

    3.2 轴向旋转

    ​ 在 Pandas中pivot()方法提供了这样的功能,它会根据给定的行或列索引重新组织一个 DataFrame对象。

    3.2.1 pivot()方法

    index:用于创建新 DataFrame对象的行索引。
    columns:用于创建新 DataFrame对象的列索引
    values:用于填充新 DataFrame对象中的值。

    4. 数据转换

    4.1 重命名轴索引

    Pandas中提供了一个rename()方法来重命名个别列索引或行索引的标签或名称。

    4.1.1 rename()方法

    index,columns:表示对行索引名或列索引名的转换。

    inplace:默认为False,表示是否返回新的Pandas对象。

    4.2 离散化连续数据

    Pandas 的 cut ()函数能够实现离散化操作。

    4.2.1 cut ()函数

    x:表示要分箱的数组,必须是一维的。

    bins:接收int和序列类型的数据。(序列划分区间)

    right:是否包含右端点,决定区间的开闭,默认为True。

    cut()函数会返回一个Categorical对象,我们可以将其看作一组表示 面元名称 的字符串,它包含了分组的数量以及不同分类的名称。

    ​ Categories对象中的区间范围跟数学符号中的“区间”一样,都是用圆括号表示开区间,用方括号则表示闭区间。

    ages=[18,22,25,27,21,23,37,31,60,45,82]
    bins=[0,18,25,50,60,100] # bins是一个序列,划分区间
    cuts=pd.cut(ages,bins)
    cuts
    

    设置左闭右开区间,则可以在调用cut()函数时传入right=False进行修改。

    # 如果希望设置左右开区间,则可以在调用cut函数时传入right= False进行修改。
    pd.cut(ages,bins=bins,right=False)
    
    # 可以在调用cut函数时指定labels=  用干生成区间的标签
    pd.cut(ages,bins=bins,labels=['少年','青年','中年','中老年','老年'])
    

    4.3 哑变量处理类别型数据

    在Pandas中,可以使用get_dummies()函数对类别特征进行哑变量处理.

    4.3.1 get_dummies()函数

    data:表示哑变量处理的数据。

    prefix:表示列名的前缀,默认为None。(‘col’)

    prefix_sep:用于附加前缀作为分隔符使用,默认为“_”。


    哑变量又称应拟变量,名义变量,从名称上看就知道,它是人为虚设的变量,用来反映某个交量的不间类别
    ​ 使用哑变最处理类别转换,事实上就是将分类变量转换为哑变最矩阵或指标矩阵,矩阵的值通常用“0”或“1”表示</u>

    df1=pd.DataFrame({'职业':['工人','学生','司机','教师','导游']})
    # get_dummies()对类别特进行哑变量处理
    pd.get_dummies(df1)
    
    pd.get_dummies(df1,prefix=['col'])
    

    4.3.2 cut()函数与get_dummies()函数的混合使用

    ret=pd.cut(ages,bins=bins,right=False,
    	labels=['少年','青年','中年','中老年','老年'])
    pd.get_dummies(ret,prefix='年龄类别',prefix_sep=':')
    
    展开全文
  • Excel怎么将两列数据合并成一列

    千次阅读 2021-12-17 15:06:25
    Excel将两列数据合并成一列的方法 工具/原料 Excel 方法/步骤 首先打开一个Excel表格,在表格输入两列数据 然后选择一列空白列,点击选择空白列 在该列输入公式,点击输入“=A1&B1” ...

    Excel将两列数据合并成一列的方法

    工具/原料

    • Excel

    方法/步骤

    1. 首先打开一个Excel表格,在表格输入两列数据

      Excel怎么将两列数据合并成一列

    2. 然后选择一列空白列,点击选择空白列

      Excel怎么将两列数据合并成一列

    3. 在该列输入公式,点击输入“=A1&B1”

      Excel怎么将两列数据合并成一列

    4. 输入完成,确认公式无误,点击回车

      Excel怎么将两列数据合并成一列

    5. 现在就成功的将第一行的两列成功的合并成了一列,拖动往下滑动

      Excel怎么将两列数据合并成一列

    6. 6

      现在就成功的将所有的列合并成了一列

      Excel怎么将两列数据合并成一列

    7. 7

      本经验只供参考,如有不足,还请见谅,如果有什么疑问请在下边留言,及时给你解答。。。

    展开全文
  • 一文搞定Pandas中的数据合并

    千次阅读 2021-10-19 09:22:03
    一文搞定pandas的数据合并 在实际处理数据业务需求中,我们经常会遇到这样的需求:将多个表连接起来再进行数据的处理和分析,类似SQL中的连接查询功能。 pandas中也提供了几种方法来实现这个功能,表现最突出、使用...
  • pandas之数据合并

    万次阅读 2018-06-23 13:38:07
    今天要说的数据合并其实和数据表之间的连接有很多相似之处。由于 pandas 库在数据分析中比较方便而且用者较多,我们就说pandas中的数据合并方式。 pandas 中数据合并常用的方法有三种:pandas.merge(), pandas....
  • pandas 两列数据合并

    千次阅读 2020-11-18 18:32:12
    有两个字段,想要将其合并成为一个新的字段。比如当标签分散在不同字段时候,想要将各个标签融合一起。 实现 def test(): import pdb import pandas as pd df = pd.DataFrame({'year': ['2019', '2020'], '...
  • 一文搞定pandas的数据合并

    万次阅读 多人点赞 2020-09-17 09:30:00
    作者:来源于读者投稿出品:Python数据之道一文搞定pandas的数据合并在实际处理数据业务需求中,我们经常会遇到这样的需求:将多个表连接起来再进行数据的处理和分析,类似SQL中的连接...
  • SAS:数据合并简介

    千次阅读 2020-08-01 22:50:51
    数据合并,即两个或者多个数据集的数据合并到一个数据集中,常见的方式有3种,分别是 one-to-one reading、concatenating 和 Match-merging,其中只有最后一种Match-merging是要求匹配字段是已经排好序的。...
  • python DataFrame数据合并 merge()、concat()方法

    万次阅读 多人点赞 2022-03-09 21:04:32
    常规合并①方法1②方法2重要参数合并方式 left right outer inner准备数据‘inner(默认)outerleftright2.多对一合并3.多对多合并concat()1.相同字段的表首位相连2.横向表合并3.交叉合并4.指定表对其(行对齐) merge...
  • mysql中将多行数据合并成一行数据

    千次阅读 2021-11-07 10:49:07
    一个字段可能对应多条数据,用mysql实现将多行数据合并成一行数据 例如:一个活动id(activeId)对应多个模块名(modelName),按照一般的sql语句: SELECT am.activeId,m.modelName FROM activemodel am JOIN ...
  • arcgis中怎么把两个栅格图像合并在一起栅格数据合并: 打开 数据管理工具 打开 栅格 打开 栅格数据集 双击 镶嵌至新栅格 栅格剪切可以用裁剪: 1.数据管理工具 2.栅格 3.栅格处理 4.裁剪arcgis栅格图像拼接步骤首先...
  • MySQL实现把两行数据合并为一行

    千次阅读 2021-01-19 21:10:16
    在项目中遇到了这样一个问题:某人上月投资N元钱,本月投资M元钱,现要求把本月和上月的投资金额放在一行显示。如下图: 解决方案:用left join on详细SQL脚本如下:INSERT INTO DW_ADS.TR04_OPER_003 (BUSINESS_...
  • STATA学习笔记:数据合并

    万次阅读 2021-02-07 18:30:56
    STATA学习笔记:数据合并 一 横向合并数据:merge 1. One-to-one merge on specified key variables merge 1:1 varlist using filename [, options] // 1:1 后面接合并时依据的“key” //filename可以是数据地址,也...
  • 准备数据如下2. 创建数据透视表3. 配置数据透视表4. 复制粘贴数据 1. 准备数据如下 2. 创建数据透视表 3. 配置数据透视表 点击数据透视表,从字段列表选择字段到行 点击数据透视表,选择设计,再选择报表布局,...
  • Excel数据合并(追加写入)

    千次阅读 2019-12-26 17:51:06
    利用pandas对Excel数据合并,数据去重,数据清洗数据合并两表合并只用pandas包实现用xlrd包实现普通的文件读写总结多表数据合并数据去重数据清洗 数据合并 两表合并 已知a c两个都含有数据的xlsx文件 要求:...
  • 怎么把相同表格的数据合并

    千次阅读 2021-07-07 03:34:05
    1. 在EXCEL表格里面怎么把相同名称的不同数据合并到一起1、Excel打开文档。2、Excel打开文档后,点击插入数据透视表。3、点击插入数据透视表后,选中区域中就框选数据,然后选择一个要放置透视表的位置。4、点击确定...
  • 5个必知必会的 Python 数据合并技巧

    千次阅读 2022-03-27 08:58:58
    大家好,前不久在我们技术交流群有群友提到最近他面试阿里70万总包的数据岗位,对方问Pandas的5种数据合并的函数,结果他只答出了2个。 那么,究竟是哪五个呢?今天,我们就来带大家了解一下!想加技术交流群的,文...
  • 今天跟大家分享一下Excel如何将合并单元格后面的数据合并 1.打开Excel文件 2.选中合并单元格区域 3.点击下图选项(Excel工具箱,百度即可了解详细下载安装信息,本文这里就不做详细解说。) ...
  • C++ vector数据合并&&去除重复项

    万次阅读 2022-07-06 09:57:49
    C++ vector数据合并&&去除重复项 C++ vector用法详细介绍
  • Tableau数据合并

    千次阅读 2019-08-09 09:44:24
    当需要将有多个结构一致的数据表整合汇总在一起时,则可以使用数据合并。数据联接是横向扩展,数据合并是纵向增加。 进行数据合并的要求是,每个数据表的字段名、个数、顺序和数据类型必须完全一致。 为了简单直观的...
  • SQLServer 一对多关联数据合并

    千次阅读 2020-10-24 01:00:59
    一对多,关联表数据合并
  • 多个栅格数据波段合成
  • oracle多行数据合并成一行

    千次阅读 2021-07-01 14:50:50
    一、将查询到的多条部门数据名称合并成一条(逗号隔开)。sql如下: select (wm_concat(t.name)) as AllName from test t
  • 如何不删除数据合并分区?本文提供了有关如何使用免费分区管理器在Windows 11/10/8/7中合并NTFS 分区而不丢失数据的详细步骤。
  • Arcmap数据合并

    千次阅读 2020-05-16 00:59:48
    Append和Merge,都是不同要素类的合并,切记最好在文件直接合并而不要在arcmap中选取图层,也就是说不要使用Input Datasets下拉菜单选取图层 Append,将要素合并到一个要素当中 Merge,将要素合并,并生成一个新...
  • [Pandas] 数据合并 pd.merge

    千次阅读 2022-02-18 19:40:29
    [Pandas] 数据合并 pd.merge
  • 【Python数据分析与处理 实训05】— 处理分析虚拟姓名数据(数据合并) 探索虚拟姓名数据 1.声明数据 raw_data_1 = { 'subject_id': ['1', '2', '3', '4', '5'], 'first_name': ['Alex', 'Amy', 'Allen', 'Alice'...
  • Mysql将多列数据合并成一行 函数Group_concat的用法 例: 原始数据:一个 channel_id 对应多个 category_id 处理后数据:每个 channe_id 对应的 category_id 对应处理数据的sql: SELECT channel_id,GROUP_CONCAT...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 1,126,007
精华内容 450,402
关键字:

数据合并