Python数据分析之 Pandas Dataframe合并和去重操作

作者:??tigeriaf???? 时间:2022-12-31 07:11:59 

一、之 Pandas Dataframe合并

在数据分析中,避免不了要从多个数据集中取数据,那就避免不了要进行数据的合并,这篇文章就来介绍一下 Dataframe 对象的合并操作。

Pandas 提供了merge()方法来进行合并操作,使用语法如下:

pd.merge(left, right, how="inner", on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=False)

常用的参数说明:

  • left、right:指定左右两个要进行合并的 DataFrame 对象

  • how:指定合并类型,可以选择left、right、outer、inner,此参数可以确定以哪边(左边、右边或者左右共有)的键为基准,如果出现匹配失败的用NaN填充,默认为inner,具体如下:

    • left:代表左连接,以左DataFrame为基准,右侧匹配失败的用NaN填充

    • right:代表右连接,以右DataFrame为基准,左侧匹配失败的用NaN填充

    • inner:代表内连接,取交集

    • outer:代表外连接,取并集,匹配失败的用NaN填充

  • on:指定用于连接的键,也就是列名,传递改参数的话,必须保证传递的“键”在左右两边的DataFrame中都存在

  • left_on:指定左侧DataFrame中用于连接的键

  • right_on:指定右侧DataFrame中用于连接的键

  • left_index & right_index:表示以行索引作为合并基准,默认为False

  • sort:指定是否按照字典顺序通过连接键对结果DataFrame进行排序,默认为False

例如,对下面两个 DataFrame 对象执行合并操作:

import pandas as pd
data = {"name": ["Alice", "Bob", "Cindy", "David"], "age": [25, 23, 28, 24], "gender": ["woman", "man", "woman", "man"]}
df1 = pd.DataFrame(data)
df1

Python数据分析之 Pandas Dataframe合并和去重操作

data = {"name": ["Alice", "Bob", "Cindy", "Emilie"], "city": ["beijing", "beijing", "jinan", "shanghai"]}
df2 = pd.DataFrame(data)
df2

Python数据分析之 Pandas Dataframe合并和去重操作

使用name作为连接键:

merge_pd = pd.merge(df1, df2, on="name")
merge_pd

结果输出如下:

Python数据分析之 Pandas Dataframe合并和去重操作

设置为左连接:

merge_pd = pd.merge(df1, df2, on="name", how="left")
merge_pd

结果输出如下:

Python数据分析之 Pandas Dataframe合并和去重操作

在进行数据分析时,数据的质量可能并不理想,有可能包含一些重复数据,那我们就要进行数据的“去重”操作,删除重复的数据,保留唯一的数据项,从而提高数据集整体的精确度,同时也可以节省空间、提升读写性能等,接下来就来介绍一下 Pandas Dataframe 的去重操作。

二、去重操作

Pandas 提供了drop_duplicates()方法进行数据的去重操作,具体使用格式如下:

df.drop_duplicates(subset=None, keep="first", inplace=False, ignore_index=False)

参数说明如下:

  • subset:指定要进行去重的列名,默认为None,可以使用列表指定一个或多个列名

  • keep:有三个参数可选:first、last、False,默认为first,表示只保留第一次出现的重复项,删除其余重复项;last表示只保留最后一次出现的重复项;False表示删除所有重复项

  • inplace:是否在原Dataframe对象上进行操作

  • ignore_index:默认为False,设置为True可以重新生成行索引。

例如,对下面 DataFrame 对象进行去重操作:

Python数据分析之 Pandas Dataframe合并和去重操作

可以看到该DataFrame 对象中索引为1、3的行是重复的,下面进行去除:

保留第一次出现的重复项

df.drop_duplicates(inplace=True)
df

结果输出如下:

Python数据分析之 Pandas Dataframe合并和去重操作

删除所有重复项

df.drop_duplicates(keep=False, inplace=True)
df

结果输出如下:

Python数据分析之 Pandas Dataframe合并和去重操作

ignore_index参数使用

df.drop_duplicates(inplace=True, ignore_index=True)
df

Python数据分析之 Pandas Dataframe合并和去重操作

ignore_index设置为True后,通过结果可以看到,行索引进行了重排。

当然drop_duplicates()方法也可以根据指定列名去重,给subset传递参数即可,例如根据name列进行去重:

df.drop_duplicates(subset=["name"], inplace=True)

来源:https://juejin.cn/post/7088268650041311269

标签:Python,Pandas,Dataframe,合并,去重
0
投稿

猜你喜欢

  • 关于超级链接的一些问题

    2007-12-07 14:00:00
  • 脚本安全的本质_PHP+MYSQL第1/3页

    2023-11-23 23:54:45
  • 详解git commit --amend 用法

    2023-03-21 00:29:52
  • Python+Selenium实现短视频自动上传与发布的实践

    2021-06-12 15:58:46
  • 利用XMLBean轻轻松松读写XML

    2008-09-04 11:25:00
  • 将表数据生成Insert脚本 比较好用的生成插入语句的SQL脚本

    2024-01-21 13:11:19
  • python 提取tuple类型值中json格式的key值方法

    2022-10-04 20:05:32
  • Django权限系统auth模块用法解读

    2021-03-22 13:27:00
  • Prometheus的安装和配置教程详解

    2023-03-16 21:38:43
  • MYSQL表优化方法小结 讲的挺全面

    2024-01-25 14:20:00
  • golang图片处理库image基本操作

    2024-04-26 17:32:04
  • MySQL的一级防范检查列表

    2011-12-14 18:39:22
  • Python控制台输出俄罗斯方块的方法实例

    2023-08-09 16:32:19
  • 如何让Firefox2和Firefox3在Windows下共存并同时运行?

    2008-06-01 15:50:00
  • pandas时间序列之pd.to_datetime()的实现

    2022-09-21 23:47:29
  • MySQL使用select语句查询指定表中指定列(字段)的数据

    2024-01-26 07:51:49
  • Python+Pygame实现怀旧游戏飞机大战

    2023-09-27 03:36:52
  • MySQL中易被我们忽略的细节

    2024-01-21 09:54:48
  • 每个分类取最新的几条的SQL实现代码

    2012-08-21 10:57:18
  • 基于Python 装饰器装饰类中的方法实例

    2023-10-11 04:10:22
  • asp之家 网络编程 m.aspxhome.com