dataframe两个表合并_Pandas常用数据结构DataFrame详细教程

pandas 是python的数据分析库,提供快速、灵活和富有表现力的数据结构,用于数据挖掘和数据分析,同时也提供数据清洗功能,与numpy、matplotlib并称,成为数据分析必学的三个库。Pandas的主要功能如下。

c15b9edf0b488526912bcd6d34001711.png

   此外,其更广泛的目标是成为任何语言中可用的最强大,最灵活的开源数据分析工具。其中最常用的数据结构是DataFrame,本文将详细介绍DataFrame的用法。 

Dataframe简介

   Dataframe是pandas中的数据结构,也是带标签的、大小可变的,二维异构表格。

6e02ca913757e993a0ef740b43adcdd2.png

  它类似于电子表格,可以在列中存储不同类型的数据(包括字符,整数,浮点值,分类数据等),Dataframe中的数据以一个或多个二维块存放,不是列表、字典或一维数组结构。

bfec02c9b96986af466c57a7a313279f.png

一、创建

1、通过字典创建

由数组/list组成的字典创建Dataframe,columns为字典key,index为默认数字标签,字典的值的长度必须保持一致

42a4d850d0635cc2a2ebdb9b305caf57.png

2、通过二维数组直接创建

通过二维数组直接创建Dataframe,得到一样形状的结果数据,如果不指定index和columns,两者均返回默认数字格式

index和colunms指定长度与原数组保持一致

6f96f52df3193fa72ab922ffe95f59d3.png

3、通过字典组成的列表创建

由字典组成的列表创建Dataframe,可以允许长度不一致,columns为字典的key,index不做指定则为默认数组标签

colunms和index参数分别重新指定相应列及行标签

bf1087827c5da6c44c57112c160fd9bf.png

二、DataFrame索引

1、df[] - 选择列

df[]默认选择列,[]中写列名,选择单列为Series,print结果为Series格式,多选列为Dataframe,print结果为Dataframe格式

b65b2d18f2a7b80ca7f8e3bbe7ede541.png

一般用于选择列,也可以选择行

注意:反向截取是-1结束,不是0,末端不包含

af6baf73406442b08053f707c8f75cf1.png

2、df.loc[] - 按index选择行

3、 df.iloc[] - 按照整数位置(从轴的0到length-1)选择行

类似list的索引,其顺序就是dataframe的整数位置,从0开始计

4、切片索引

a4b73ef60d40fbe16ef8a1299e9876c6.png

5、布尔索引

  多行做判断 , 索引结果保留所有数据:True返回原数据,False返回值为NaN

ae90900db24d3e21842515b32f4abe1d.png

6、多重索引

b8c8b5e219d14119107d825c14f2c1bc.png

三、DataFrame基本技巧

1、数据查看、转置

811374f8be0519540b5c54bcae4d3445.png

2、添加与修改

  要在dataframe最后新增列,直接在后面加一个[],在具体位置新增列用df.insert(index, obj)方法;新增行直接用loc。

0a8350c8b2178b4362b1a7cc47599bb6.png

3、删除
  • del语句 - 删除列

  • drop()删除行,inplace=False → 删除后生成新的数据,不改变原数据

  • drop()删除列,需要加上axis = 1,inplace=False → 删除后生成新的数据,不改变原数据

4、DataFrame对象之间的数据自动按照列和索引(行标签)对齐

c0f1d2dd3c3e90187e3d05c48897f404.png

5、排序

 排序包括按值排序和按索引排序,按值排序 .sort_values,ascending参数:设置升序降序,默认升序

46032195fec978d2d0acbc9cc7431367.png 

按索引排序 .sort_index

870bf9f3818b44bc85ab76d61704082a.png

四、数据处理

1、数值计算

Dataframe可以用来进行常用的数学的计算,例如:

583ae6c498c52141d195be6a0f7e2d33.png 

1、数据清洗

Dataframe的数据清洗包含重复值、缺失值、异常值等等的清洗

  • 值计数:df.value_counts()

  • 成员资格:df.isin()

  • 替换:df.replace()

  • 判断重复值: df.duplicated()

  • 删除重复值:df.drop_duplicates()

a102205b1e6bb0af212cfebb4da4cb6e.png

subset对应的值是列名,表示只考虑这两列,将这两列对应值相同的行进行去重。默认值为subset=None表示考虑所有列。keep='first'表示保留第一次出现的重复行,是默认值。keep另外两个取值为"last"和False,分别表示保留最后一次出现的重复行和去除所有重复行。

缺失值清洗最简单的方法就是删除或不管,插补的方法有单一值填充、拉格朗日插值法、多重插补法以及各种机器学习插补法等等,缺失值和异常值清洗方法具体可见python数据预处理之异常值、缺失值处理方法

3、数据合并

数据合并包括四种方法,merge、join、concat和append

l pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,

         left_index=False, right_index=False, sort=True,

         suffixes=('_x', '_y'), copy=True, indicator=False)

类似于sql中的join,仅支持横向拼接,其中on关键字为拼接参考键,how为拼接方式,有inner,left,right,outer4种链接方式。 

l df1.join(df2)   直接通过索引链接

l pd.concat(objs, axis=0, join='outer', join_axes=None, ignore_index=False,

          keys=None, levels=None, names=None, verify_integrity=False,

          copy=True)

可以进行横向和纵向连接,默认axis=0,行+行,但要求非拼接轴标签唯一,例如axis=0时,要求每个dataframe内部的列名是唯一的,只有相同列名才有拼接的意义。

l append,类似于列表的append方法,一般用来增加行

4、数据转换

数据转换一般用map和apply,map主要用于Series的转换,apply是series和dataframe都可以。

Dataframe运用apply可以将各行和各列的函数运用到一维数组上,默认情况下会以列为单位,分别对列应用函数。如果想要将函数应用到每一个元素,需要用到applymap

063353dbb1acc43bc6730cf52021818d.png

6aee49ece9f30645d9c1b23b1e6adb98.png

五、数据分析

1、统计基础

Dataframe也拥有基本的统计功能,具体如下:

e1272041dd46379b209652db6b7401b5.png

61529dcaaf560076003a70985b9b0991.png

2、数据分组

    Dataframe在行(axis=0)或列(axis=1)上进行分组,将一个函数应用到各个分组并产生一个新值,然后函数执行结果被合并到最终的结果对象中。

l groupby  类似sql的group by功能,直接分组得到一个groupby对象,是一个中间数据,没有进行计算,所以一定要加上集合函数,复杂的聚合函数可借用agg,功能更强大。

df.groupby(by=None, axis=0, level=None, as_index=True, sort=True, group_keys=True, squeeze=False, **kwargs)

560739ac267818eebd7bb833c8036478.png

常用的聚合函数如下:

b956176e0ddb63c3567eb2b0e0ae8b84.png

l 数据透视表pivot_table

   类似于excel中的数据透视功能,可以通过一个或多个键分组聚合DataFrame中的数据,通过aggfunc参数决定聚合类型,是groupby的高级功能。

l 交叉表crosstab

默认情况下,crosstab是用来计算因子的频率表,透视表是一种进行分组统计的函数,而交叉表是特殊的透视表,当只统计分组频率时更方便。

数据透视表和交叉表的具体用法,可见pd.pivot_table数据透视表与pd.crosstab交叉表

Dataframe的常见用法就是这些,当然还可以通过plot来调用matplotlib进行数据可视化,不过主要还是要依赖matplotlib。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值