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
data = {"name": ["Alice", "Bob", "Cindy", "Emilie"], "city": ["beijing", "beijing", "jinan", "shanghai"]}
df2 = pd.DataFrame(data)
df2
使用name
作为连接键:
merge_pd = pd.merge(df1, df2, on="name")
merge_pd
结果输出如下:
设置为左连接:
merge_pd = pd.merge(df1, df2, on="name", how="left")
merge_pd
结果输出如下:
在进行数据分析时,数据的质量可能并不理想,有可能包含一些重复数据,那我们就要进行数据的“去重”操作,删除重复的数据,保留唯一的数据项,从而提高数据集整体的精确度,同时也可以节省空间、提升读写性能等,接下来就来介绍一下 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 对象进行去重操作:
可以看到该DataFrame 对象中索引为1、3的行是重复的,下面进行去除:
保留第一次出现的重复项:
df.drop_duplicates(inplace=True)
df
结果输出如下:
删除所有重复项:
df.drop_duplicates(keep=False, inplace=True)
df
结果输出如下:
ignore_index参数使用:
df.drop_duplicates(inplace=True, ignore_index=True)
df
ignore_index设置为True后,通过结果可以看到,行索引进行了重排。
当然drop_duplicates()
方法也可以根据指定列名去重,给subset传递参数即可,例如根据name列进行去重:
df.drop_duplicates(subset=["name"], inplace=True)
来源:https://juejin.cn/post/7088268650041311269


猜你喜欢
- scipy.interpolate插值方法1 一维插值from scipy.interpolate import interp1d1维插值算
- 内容摘要:当讨论Request对象内容时,要研究的集合之一就是ServerVariables集合。这个集合包含了两种值的结合体,一种是随同页
- 最近火热全文的ChatGPT,被很多人玩出了花,我们在Github上可以看到几个常见的逆向SDK包,这一篇我将以学习的方式来写这一篇文章。这
- myisam_max_[extra]_sort_file_size足够大 delay_key_write减少io,提高写入性能 bulk_i
- 之前沉迷于使用index删除,然而发现pandas貌似有bug?import pandas as pdimport numpy as npd
- 列表的结构在 cpython 实现的 python 虚拟机当中,下面就是 cpython 内部列表实现的源代码:typedef struct
- 最近由于业务的原因,需要在Web端页面接入调试各类的网络摄像头,遇到了很多匪夷所思的问题(说的就是读得出摄像头的品牌,读不出摄像头的分辨率)
- 本文实例讲述了Python多线程通信queue队列用法。分享给大家供大家参考,具体如下:queue:什么是队列:是一种特殊的结构,类似于列表
- 本文实例讲述了PHP实现数组根据某个字段进行水平合并,横向合并。分享给大家供大家参考,具体如下:PHP数组水平合并,横向合并,两条数据合并成
- 这篇文章主要介绍了Django app配置多个数据库代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需
- 本文介绍了Python WEB应用部署的实现方法,分享给大家,具体如下: 使用Apache模块mod_wsgi运行Python WSGI应用
- Matlab函数对应关系(Numpy)首先给出官网链接,其中详细说明了在Python下如何用Numpy实现Matlab下相同的函数功能。博主
- 本文实例讲述了正则表达式匹配ip地址实例。代码结构非常简单易懂。分享给大家供大家参考。主要实现代码如下:import rereip = re
- 最近在工作中遇到了一个小问题,如果要将字符串型的数据转换成dict类型,我第一时间就想到了使用json函数。但是里面出现了一些问题1、通过j
- 开发工具:Microsoft Visual Studio 2005 数据库:Microsoft SQL Server 2005 说明:这里建
- 概述今天我们要来做一个进阶的花分类问题. 不同于之前做过的鸢尾花, 这次我们会分析 102 中不同的花. 是不是很上头呀.预处理导包常规操作
- 构建一个二阶多项式:x^2 - 4x + 3多项式求解>>> p = np.poly1d([1,-4,3])
- 本文实例讲述了javascript获取select值的方法。分享给大家供大家参考,具体如下:<!DOCTYPE html><
- 1 圆点选择选项设置效果展示代码参考#!/usr/bin/python# -*- coding:utf-8 -*-import sysfro
- 1.命令介绍最近学习并使用了一个python的内置函数dir,首先help一下:>>> help(dir)Help on