数据分析-pandas数据分析实战之去除重复值
小职 2021-09-18 来源 : 阅读 935 评论 0

摘要:本文主要介绍了数据分析-pandas数据分析实战之去除重复值,通过具体的内容向大家展现,希望对大家数据分析的学习有所帮助。

本文主要介绍了数据分析-pandas数据分析实战之去除重复值,通过具体的内容向大家展现,希望对大家数据分析的学习有所帮助。

数据分析-pandas数据分析实战之去除重复值

加载数据

首先,我们需要加载到所需要的数据,这里我们所需要的数据是同过sample函数采样过来的。


import pandas as pd 

#这里说明一下,clean_beer.csv数据有两千多行数据

#所以从其中采样一部分,来进行演示,当然可以简单实用data.head()也可以做练习

data = pd.read_csv('clean_beer.csv')

data_sam = data.sample(frac=0.1,weights=data['ounces'].values)

data_sam1 = data_sam

data_sam


我们采用data[‘ounces’]列为权重对数据进行采样,并将结果赋值给data_sam1,其中data_sam和data_sam1是后续我们需要用到的两个数据(因为需要将两个数据合并,并去除重复)


此时,data_sam和data_sam1的数据是一样的。


data_sam数据


data_sam

数据分析-pandas数据分析实战之去除重复值


data_sam1数据


data_sam1

数据分析-pandas数据分析实战之去除重复值


sample抽样函数

简要介绍一下sample函数


df.sample()就是抽样函数,参数如下:


df.sample(n=None,frac=None,replace=Flase,weights=None,random_state=None,axis=None)


参数说明:


**n:**就是样本量,如果不写,就是抽一条数据


**frac:**抽样比,就是样本量占全样本的比例,如frac=0.3 ,注意n和frac不能共存


replace:是否放回,默认是不放回,如果有放回(replace=True)可以选择比df长度更多的元素回来


weights:样本权重,自动归一化,可以以某一列为权重


random_state:随机状态。就是为了保证程序每次运行得到的结果都一样


axis:抽样维度,0是行,1是列,默认为0


指定需要更新的值

接下来,我们对data_sam1的值进行更新,主要是将data_sam1的ounces属性列值加上后缀’.0 oz’,具体代码如下:


data_sam1['ounces'] = data_sam1['ounces'].astype('str') + '.0 oz'

data_sam1


对data_sam1的值进行显示,其中我们可以看到,ounces的值已经全部加上了我们所指定的后缀:


数据分析-pandas数据分析实战之去除重复值

现在,我们已经得到的新的值,接下来的目标就是如何将我们已经得到的新值,更新到data_sam


append直接添加

从标题可以看到,我们使用的是append方法进行直接添加。


data_sam = data_sam.append(data_sam1,ignore_index=True)


data_sam


我们将data_sam1使用append方法添加到data_sam最后一行的后面。下面展示其结果,并详细介绍append的用法。


数据分析-pandas数据分析实战之去除重复值

可以看到,行数已经有原来的241改为现在的482rows,显然我们此时已经成功使用append添加数据成功。不过我们想要的不止是简简单单的添加数据在最后一行,而是想要把我们增加后缀的那一列更新到原来的数据中,所以最后一步就是去重。


append函数用法

append()函数的语法为:


DataFrame.append(other,ignore_index=False,verify_integrity=False,sort=None)


参数说明:

other: DataFrame,Series或Dict式对象,其行将添加到调用方DataFrame中。


ignore_index: 如果为True,则将忽略源DataFrame对象中的索引。


verify_integrity:如果为True,则在创建具有重复项的索引时引发ValueError 。


sort: 如果源DataFrame列未对齐,则对列进行排序。 不建议使用此功能。 因此,我们必须传递sort=True来排序和静音警告消息。 如果传递了sort=False ,则不会对列进行排序,并且会忽略警告。


根据某一列key值进行去重(key唯一)

接下来,就是最后一个步骤,也就是根据ounces列对数据进行去重。

通过duplicated()函数可以看到数据还是有很多重复的。


data_sam.duplicated(['id'],keep='first')

数据分析-pandas数据分析实战之去除重复值



DataFrame.drop_duplicated(self,subset = None,keep ='first')


subset : 列标签或标签序列,可选仅考虑某些列来标识重复项,默认情况下使用所有列

keep : {'first','last',False},默认为'first'

first:将重复项标记True为第一次出现的除外。

last:将重复项标记True为最后一次除外。

False:将所有重复项标记为True。


既然知道数据中是有重复项的,通过对数据的观察可以看到,数据的id是唯一的,所以我们以id这一列为契机,来进行我们的去重操作。具体代码如下:


data_sam = data_sam.drop_duplicates(subset = 'id')

data_sam


最后来看一看,我们最后的结果是不是已经成功去重,或者说是不是我们想要的最终结果呢???


数据分析-pandas数据分析实战之去除重复值


根据上面的图片结果,可以看到我们已经执行成功,得到的确实是我们起初想要的一个数据结果。有兴趣的也可以去试一下merge和update联合的操作进行更新数据,看看是不是也能成功。



我是小职,记得找我

✅ 解锁高薪工作

✅ 免费获取基础课程·答疑解惑·职业测评

数据分析-pandas数据分析实战之去除重复值

本文由 @小职 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程