datacombo重复值的处理_数据分析—数据清洗之处理缺失值和重复值

做数据分析相关工作,无论是做周报,月报还是专题分析,我们都要遵循数据分析流程,如下六个步骤:

2a1b676e93cdba8ef9f0c21a16bff58c.png

一、观察数据

下载demo数据集
链接:https://pan.baidu.com/s/1-E-JBMslMqsDm6r2LZVT6w
提取码:r9bf

1、引入 pandas 和 numpy 包,从给出的路径读数据集
import pandas as pd
import numpy as np
data = pd.read_csv('C:/Users/cherich/Desktop/datas/foods.csv',encoding='gbk')
2、查看数据,主要有以下方法,大家可以自己试下效果
① 随机打印出数据集的十行
data.sample(10)

6a6f509fc18ff7d99f2d8f2716c53430.png

② 查看几行几列
data.shape
③ 查看数据情况,比如均值,标准差,最大值等
data.describe()
④打印出数据集的前五行
data.head()
⑤打印数据集的后五行
data.tail()
⑥查看数据缺失值(也就是空值)情况
data.info()

aa5e6c24a1fe29f3d206c1ef4fdb8656.png

我们看到per_money字段是存在缺失值的,那我们如何处理呢。

二、处理缺失值

现在我们知道了数据集中存在缺失值,处理缺失值有两种方法

1、删除
2、填充

首先过滤下有多少缺失值

# 方法一
data[data['per_money'].isnull()==False]
# 方法二
data[data['per_money'].notnull()==True]
# 方法三
total_missing = data.isnull().sum()
total_cells = len(data)
# 缺失值的百分比
print((total_missing/total_cells) * 100)

4c23dc31f8a19fee4b75a5fe7dc8562f.png

可以进一步看看数据集中缺失值的数目占总数的百分比,结果约为 29%,四分之一的数据都缺失了!

接下来,我们要分析出现缺失值的原因,如果一个数据值缺失是因为它根本不存在,那么我们就没有必要去猜它可能的值,我们需要做的就是让它继续为 NaN;如果一个数据值缺失是因为没有被记录,我们就应该基于与它同行同列的其他值,来猜想它的可能值。像我们本数据集中的情况,明显是因为没有被记录,需要对它删除。

1、删除
①drop():单纯的删除数据

语法格式:df.drop(labels=None,axis=0, index=None, columns=None, inplace=False)

① labels :是要删除的⾏列的名字,⽤列表给定。
② axis :axis=1表示列,axis=0表示⾏
③ index:直接指定要删除的⾏。
⑥ columns:直接指定要删除的列。
⑦ inplace=False:默认该删除操作不改变原数据,⽽是返回⼀个执⾏删除操作 后的新 dataframe。
⑧ inplace=True:则会直接在原数据上进⾏删除操作,删除后⽆法返回。

删除⾏列有两种⽅式
data.head()

1fb5bace14e60c57dbeb41a12ed15812.png

我们想要删除ID列

方法一 :labels='列名',axis=1的组合

data.drop(labels='ID',axis=1,inplace=True)

34115a08e7c145de5fea24984db3b566.png

方法二:index或columns直接指定要删除的⾏或列
data.drop(columns='ID',inplace=True)
②dropna():默认将只要含有NaN的整⾏数据删掉

语法格式:df.dropna(axis=0, how='any', thresh=None, inplace=False)
对列做删除操作,需要添加axis参数,axis=1表示列,axis=0表示⾏
删除整⾏都是空值的数据需要添加how='all'参数 ,举栗子如下:

df = pd.DataFrame([[1,2,np.nan],[np.nan,np.nan,np.nan],[np.nan,np.nan,4]],columns=['a','b','c'])
df

ef99940cb89779724d88ebc9a7fd2369.png

df.dropna(how='all')

fd7e4498a2e15d3dd71f3b79e0445496.png

thresh参数筛选想要删除的数据,thresh=n保留⾄少有n个⾮NaN数据的⾏,举个栗子:

df = pd.DataFrame([[1,2,np.nan],[np.nan,np.nan,np.nan],[np.nan,np.nan,4]],columns=['a','b','c'])
df.dropna(thresh=2)

bde8cec9aba840efecbcc748db4612cb.png

像我们本文的数据集,我们只需要把空值删掉就好,我们看到含有Nan的行就删除了

data.dropna(inplace=True)
data

bcc1d4d7495f312571b376223c066e6f.png

2、填充
fillna()

语法格式:df.fillna(value=None, method=None, axis=None, inplace=False, limit=None)

method=‘ffill’表示用前面行/列的值,填充当前行/列的空值;bfill,则相反,举个栗子:

data.head()

81d25ba1082f59f892d8e34e939840b9.png

data.fillna(method='ffill')

826d9935c12480f3a850678cc1ebc1ad.png

limit=n 表示最多填补n个,举个栗子:

data.fillna(method='ffill',limit=1)

151209060f417c649e854acdad8fb1e2.png

注意:method参数不能与value参数同时出现

三、删除重复值
1、duplicated() 函数可以判断是否重复
# 查看重复值
print(len(da[da.duplicated()==True]))
2、drop_duplicates()将重复的数据⾏进⾏删除
# 删除重复值
da.drop_duplicates(inplace=True)

希望本文的内容对大家的学习或者工作能带来一定的帮助,每天进步一点点,加油

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值