【利用Python进行数据分析】第七章个人知识点总结

目录

数据清洗与准备

7.1处理缺失值

7.1.1过滤缺失值——dropna()

7.1.2补全缺失值

7.2数据转换

7.2.1删除重复值

7.2.2使用函数或映射进行数据转换

7.2.3替代值

7.2.4重命名轴索引

7.2.5离散化和分箱

7.2.6检测和过滤异常值

7.2.7置换和随机抽样


数据清洗与准备

7.1处理缺失值

 

7.1.1过滤缺失值——dropna()

在series上使用dropna,它会返回series中所有的非空数据及其索引值

data.dropna()等价于data[data.notnull]

dropna默认情况下会删除包含缺失值的行

data.dropna(how='all')——将删除所有值为NA的行

data.dropna(how='all',axis=1)——同样的方式去删除列

df.dropna ( thresh=n )——这一行除去NA值,剩余数值的数量大于等于n,便显示这一行


7.1.2补全缺失值

fillna默认(ffill)补充的是同一列中的前一个数

7.2数据转换

7.2.1删除重复值

DataFrame的duplicated 方法返回的是一个布尔值Series——这个Series反映的是每一个是否存在重复(与之前出现过的行相同)情况

DataFrame的drop_duplicates方法是返回的是DataFrame,内容为duplicated返回数组中为False的部分

(这些方法默认都是对列进行操作)

基于'某一列'去除重复值:data.drop_duplicates(['k1'])将显示处理后全DataFrame

duplicated 与drop_duplicates都是默认保留第一个观测到的值,传入参数keep='last'将返回最后一个:

data.drop_duplicates(['k1','k2'],keep='last')

7.2.2使用函数或映射进行数据转换

map方法接收了一个函数或一个包含映射关系的字典型对象

7.2.3替代值

(使用fillna填充缺失值是通用值替换的特殊案例)

replace方法生成新的Series(除非传入一个inplace=True)

data.replace(-999,np.nan)

一次代替多个值,传入一个列表和替代值

data.replace([-999,-1000],np.nan)

不同的值替换不同的值,传入替代值列表:

data.replace([-999,-1000],[np.nan,0])

数据也可以通过字典传递:

data.replace({-999:np.nan,-1000:0})

7.2.4重命名轴索引

通过函数或某种形式的映射对轴标签进行类似的转换,生成新的且带有不同标签的对象。

可以在不生成新的数据结构的情况下修改轴

 


rename方法不修改原有数据集,创建数据集转换后的版本:

 

rename方法可以结合字典型数据使用,为轴标签的子集提供最新的值:

 

(如果要修改原有的数据集,传入inplace=True)


7.2.5离散化和分箱

离散化,把无限空间中有限的个体映射到有限的空间中去,比如 薪水收入 映射到高收入、中等收入、低收入。分箱是数据分组

 

cut()方法切割

注意:cats中已经将每个数据分好箱,比如数据18,此时显示的则是(18,25],像是箱子的名称一样,而cats.codes则是根据区间顺序,返回cats中每个箱子的索引:

 

cats.categories则返回cats的区间值,相当于是返回了分箱的标准,是按照哪些区间来分的

 

pd.value_counts(cats)返回值 是 pandas.cut的结果中的箱子数量

并重新定义索引值,dfbin.index=['少年','青年','中年','老年']对结果完善

 

cut 的labels选项:传入一个列表或者数组来传入自定义的箱名

 

cut其他参数:

right=False改变封闭的方向;precision=2将十进制精度限制在两位


qcut()方法切割——基于样本分位数进行分箱

cut: 按连续数据的大小分到各个桶里,每个桶里样本量可能不同,但是,每个桶相当于一个等长的区间,即:以数据的最大和最小为边界,等分成p个桶。

qcut: 与cut主要的区别就是每个桶里的样本数量是一定的。

 


7.2.6检测和过滤异常值

假设找出绝对值大于3的列

 

选出所有的行或列,使用any()函数

 

 

 

 np.sign(data)根据数据中的值的正负值分别生成1和-1的数值

 

7.2.7置换和随机抽样

使用np.random.permutation对DataFrame中的Series或行进行置换。

调用permutation时根据你想要的轴长度可以产生一个表示新顺序的整数数组

df.sample(n=3,replace=True)#生成随机子集,且允许有重复选择

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值