python数据分析-数据预处理(3)

声明:此文只是对《对比excel,轻松学习python数据分析》这本书的读书笔记,文章中的代码均来源于书中,仅以知识分享为用途,后续我会继续支持作者,也会继续读完这本书,如有侵权,请留言我删除
另外,从此文开始,我把编辑器换为了jupyter notebook,不得不说,当我接触到这个工具的时候我真的是爱上了它,有了一种享受记录的感觉,当然工具也要用在专业的方向,至少在目前的数据分析来说,我觉得它相当完美

数据预处理

常见的不规整数据主要有缺失数据,重复数据,异常数据几种,在正式开始的数据分析之前,我们要把不规整的数据处理掉

缺失值处理

缺失值就是由某些原因导致部分数据为空,对于为空的这部分数据我们一般有两种处理方式

  • (1)删除:即把含有缺失值的数据删除
  • (2)填充:即把缺失的那部分数据用某个值代替

缺失值的查看

在Excel中我们先选中一列没有缺失值得数据,看一下这一列数据共有多少个,然后把其他列的计数与这一列进行对比,小于这一列数据的代表有缺失值,差值就是缺失个数

在python中直接调用info()方法就会返回每一列的缺失情况。关于info()在前面就用过,但是没有详细说明判断缺失值情况

import pandas as pd
# 在CSV文件中我已经把7月销量删除了一个值
df = pd.read_csv('train-pivot.csv', encoding='GBK')
df.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 7 entries, 0 to 6
Data columns (total 7 columns):
用户ID    6 non-null float64
客户分类    6 non-null object
区域      6 non-null object
是否省会    6 non-null object
7月销量    5 non-null float64
8月销量    6 non-null float64
9月销量    6 non-null float64
dtypes: float64(4), object(3)
memory usage: 520.0+ bytes

在Python中缺失值一般用NaN表示,从用info()方法的结果来看,7月销量这一列是5 non-null float64,表示这一列有5个非null值,而其他列有6个非null值,说明7月销量这一列有1个null值。

这里也可以用isnull()方法来判断哪个是缺失值,如果是缺失值返回Ture,如果不是缺失值则返回False

df = pd.read_csv('train-pivot.csv', encoding='GBK')
df.isnull()
用户ID 客户分类 区域 是否省会 7月销量 8月销量 9月销量
0 False False False False False False False
1 True True True True True True True
2 False False False False False False False
3 False False False False False False False
4 False False False False True False False
5 False False False False False False False
6 False False False False False False False

缺失值删除

缺失值分为两种:

  • 一行中某个字段是缺失值
  • 字段全部为缺失值,即为一个空白行

在Python中,利用dropna()方法,dropna()方法默认删除含有缺失值行,也就是只要某一行有缺失值就把这一行删除

df = pd.read_csv('train-pivot.csv', encoding='GBK')
df
用户ID 客户分类 区域 是否省会 7月销量 8月销量 9月销量
0 59224.0 A类 一线城市 6.0 20.0 0.0
1 NaN NaN NaN NaN NaN NaN NaN
2 55295.0 B类 三线城市 37.0 27.0 35.0
3 46035.0 A类 二线城市 8.0 1.0 8.0
4 2459.0 C类 一线城市 NaN 8.0 14.0
5 22179.0 B类 三线城市 9.0 12.0 4.0
6 22557.0 A类 二线城市 42.0 20.0 55.0
df.dropna()
用户ID 客户分类 区域 是否省会 7月销量 8月销量 9月销量
0 59224.0 A类 一线城市 6.0 20.0 0.0
2 55295.0 B类 三线城市 37.0 27.0 35.0
3 46035.0 A类 二线城市 8.0 1.0 8.0
5 22179.0 B类 三线城市 9.0 12.0 4.0
6 22557.0 A类 二线城市 42.0 20.0 55.0

运行dropna()方法以后,删除含有NaN值得行,返回删除后的数据

如果想删除空白行,只要给dropna()方法传入一个参数 how='all’即可,这样就会删除那些全为空值得行,不全为空值得行就不会被删除

df
用户ID 客户分类 区域 是否省会 7月销量 8月销量 9月销量
0 59224.0 A类 一线城市 6.0 20.0 0.0
1 NaN NaN NaN NaN NaN NaN N
  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值