Python学习 | 数据清洗和准备

1 处理缺失数据

在pandas中,采用了R语言中的惯用法,即将缺失值表示为NA,它表示不可用not available;使用浮点值NaN(Not a Number) 表示缺失数据。
1.1滤除缺失数据

1)dropna方法

drona方法会丢弃任何含有缺失值的行,如果想丢弃全NA的行或列,传入how='all'参数。

传入thresh参数,来滤出含有n个NaN的行或者列

2)pandas.notnull、布尔索引

1.2填充缺失数据
fillna方法

注:method有两种方式,ffill是后面的缺失值填充前面出现的数值,bfill是前面的缺失值,填充后面出现的数值

2 数据转换

2.1移除重复数据

 duplicated方法返回一个布尔型Series,判断是否有重复项

drop_duplicates方法删除重复行
以上两个方法默认会判断全部列,可以指定部分列进行重复项判断,默认保留的是第一个出现的值组合,传入keep='last'则
保留最后一个。

2.2利用函数或映射进行数据转换
Series的map方法可以接受一个函数或含有映射关系的字典型对象,str.lower方法,将各个值转换为小写

也可以传入一个能够完成全部这些工作的函数:

2.3替换值

replace方法

也可以一次性替换多个值:

传入的参数也可以是字典:

2.4重命名轴索引
先定义一个函数,可以将其赋值给index,这样就可以对DataFrame进行就地修改

如果是创建data的副本,而不是修改原始数据,则使用rename

ename可以结合字典型对象实现对部分轴标签的更新:

2.5离散化和面元划分
连续数据常常被离散化或拆分为“面元”(bin)

2.6检测和过滤异常值
找出某列中绝对值大小超过3的值:

根据这些条件,就可以对值进行设置。下面的代码可以将值限制在区间-3到3以内:

注:np.sign(data)可以生成1和-1

2.7排列和随机采样
 

利用numpy.random.permutation函数可以轻松实现对Series或DataFrame的列的排列工作(permuting,随机重排序)

随机选择子集并不替换原来数据,可在Series和DataFrame上使用sample方法

2.8计算指标/哑变量

另一种常用于统计建模或机器学习的转换方式是:将分类变量(categorical variable) 转换为“哑变量”或“指标矩阵.
如果DataFrame的某一列中含有k个不同的值,则可以派生出一个k列矩阵或DataFrame(其值全为1和0),pandas有一个get_dummies函数可以实现该功能

3 字符串操作

以逗号分隔的字符串可以用split拆分成数段:

split常常与strip一起使用,以去除空白符(包括换行符):

向字符串"::"的join方法传入一个列表或元组,可以将子字符串以双冒号分隔符的形式连接起来

3.1正则表达式

正则表达式常称作regex, 提供了一种灵活的在文本中搜索或匹配(通常比前者复杂) 字符串模式的方式,Python内置的re模块负责对字符串应用正则表达式
拆分一个字符串,分隔符为数量不定的一组空白符\制表符、空格、换行符等:

如果对许多字符串使用同一条正则表达式,可以用re.compile创建regex对象。这样将可以节省大量的CPU时间。

3.2 pandas的矢量化字符串函数

猜你喜欢

转载自blog.csdn.net/LivLu24/article/details/94431912