进行数据清洗_Pandas进行数据清洗详解

e0ff974eaf6f3a4b726f151d65a65d99.png
作者:Zarten 知乎专栏:python数据分析与挖掘深入详解 知乎ID: Zarten 简介: 互联网一线工作者,尊重原创并欢迎评论留言指出不足之处,也希望多些关注和点赞是给作者最好的鼓励 !

概述

在做数据分析的工作中,大部分的时间都是在处理数据清洗及准备阶段。下面将介绍一些数据清洗的常用手段,包括处理缺失数据、重复数据、数据转换等。

去除缺失数据

import numpy as np
import pandas as pd

zarten_df = pd.DataFrame([[1,2,np.nan],[4,5,6],[np.nan,8,9]])

fe384bf62c976c984688cca99287ae08.png

可以使用DataFrame对象的isnull()方法查看是否为缺失值

14e49b23b7a434a4950372820c43f1c8.png

删除缺失值使用DataFrame对象的dropna()函数

  • 删除带有NaN的整行

使用dropna(),参数axis=0,也是默认值

9c054816f73569725b8c4ac4d8cea22b.png
  • 删除带有NaN的整列

使用参数axis=1即可

20b2662f54b5368ba0c5c3c22024d349.png
  • 删除整行每个值都是NaN

只需传入参数 how='all'即可

17a1bc7fa6a9bac5d4b147128864a9d1.png

从上图看到,由于没有整行都是NaN的值,所以还是原数据。

填充缺失数据

使用函数fillna()

import numpy as np
import pandas as pd

zarten_df = pd.DataFrame([[1,2,np.nan],[4,5,6],[np.nan,8,9]])
  • 传入一个数值

传入一个数值后NaN被这个数值所填充

ac9531014d71ec90d3dfa93fae53d254.png
  • 传入一个字典

传入一个字典可以指定不同的列填充不同的值

c9369c813b2f47ebf273fe4395387537.png

fillna()函数还有其他参数,如下:

c085f4cc3bdd3a713ac4285710c7abfa.png

b50b9a98a21402bb4effce2c528a2cca.png

a959013ac119dfd927eaf2f10801110d.png

inplace参数:为True时,可以就地改变原数据

method参数:填充方式,例如向上填充等

limit参数:限制填充前几行

更多用法,请查看官方文档,这里不再一一阐述。

缺失数据相关函数

fae29ab85f67567ff2c7186081b3feb0.png

重复行处理

有时很多行的数据是一模一样的,有可能需要进一步处理。

import numpy as np
import pandas as pd

zarten_df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,9],[88,88,88],[88,88,88]])

e16f85488071fff52f425bc2ca103541.png
  • 查看重复行

使用duplicated()函数,若有出现了跟之前一样的行,则将出现的这一行标记为True

eda6c0237c7754f05bfa2d88b857ddaa.png
  • 指定列进行重复项判断

上面例子是全部列,下面将介绍部分列的判断

只需传入列名即可

import numpy as np
import pandas as pd

zarten_df = pd.DataFrame([[1,2,3],[4,5,6],[7,8,6],[88,88,88],[88,88,88]])

71afd5ebd1be4bca321226f99e0fbcf2.png
  • 反向处理重复行

上面例子看到,若出现重复行,是最后一样标记为True。若传入参数keep='last',则将第一个出现重复行标记为True

3240d08ac94286b2624d741c78847fd5.png
  • 删除重复行

删除标记为True 的重复行

使用函数drop_duplicates()函数,此函数的参数跟上面的duplicated()一样,这里将不再描述。

1e59f248f8bd4a220a7a2cbbf2fe5748.png

替换值

可以使用replace()函数

import pandas as pd

zarten_df = pd.DataFrame([[1,2,3],[4,999,6],[7,8,-888]])
  • 替换某个值

8b7c7a19f429feca565870a756853618.png
  • 替换多个值

可以使用列表或字典,下面演示字典

4d7eee246c8860507ffe38d476b955d6.png

更多技术方法将在后面章节介绍。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值