pandas 进行数据分析之前,需要异常、缺失数据进行预处理
缺失值处理
缺失值就是由某些原因导致部分数据为空,对于该类值通常 1. 删除 2. 填充
查看缺失值
info() 查看
python 中通过 .info() 方法可以查看有多少缺失值。
例如我们有一个缺失表那么我们就可以用 info() 方法查看
1 | import pandas as pd |
通过查看 有几个非null值就可以粗略看出,多少缺失值
isnull() 判断
还可以通过 isnull() 来判断哪个值是缺失值,如果是缺失值则返回 True, 如果不是返回 False
删除缺失值
大概分为 2 种情况
- 一行中某个字段缺失
- 整行缺失,即空白行
删除语法
语法 | 描述 |
---|---|
dropna() |
删除所有有缺失的行 |
dropna(how='all') |
只删除空白行 |
缺失值填充
其实大多数情况下,我们并不会删除数据,而是进行填充毕竟数据宝贵!数据缺失不大于30% 的情况下我们都选择填充。
语法 | 描述 |
---|---|
fillna(值) |
将所有空白填充为设定值 |
fillna({'列1': 值1,'列2': 值2}) |
按列给默认填充值 |
推荐使用第二种,就可以给不同字段设定一个填充值!
重复值处理
这类数据我们一般做删除处理
语法 | 描述 |
---|---|
drop_duplicates() |
删除整行相同的行,保留第一个 |
drop_duplicates(subset='列头字段') |
指定判断字段去重 |
drop_duplicates(subset=['字段1','字段2']) |
指定多个字段去重 |
drop_duplicates(keep='last') |
指定保留谁 |
指定保留字段,可以设置最后一个 last
不保留任何重复值 False
异常值检测与处理
异常值是相比正常数据,过高或过低的数据,例如年龄 200 岁这种就是不正常数据
异常值检测
- 根据业务经营划定正常范围, 超过该范围则为异常值。
- 通过绘制箱形图,把大于小于箱形图上下边缘的点称为异常值
- 如果数据服从正态分布,则如果一个数值与平均数只之间偏差超过3倍标准,那么是异常值
异常值处理
- 最常用的处理方式就是删除
- 把异常值当成缺失值进行填充, 后面会单独写一篇来介绍。
- 把异常值当作特殊情况,研究异常值出现的原因
数据类型转换
数据类型介绍
Pandas 主要有 6 种数据类型
类型 | 说明 |
---|---|
int |
整数 |
float |
浮点小数 |
object |
python 对象,用 O 标示 |
string_ |
字符串,通常 S 标示, S10 代表长度为 10 的字符串 |
unicode_ |
固定长度的 unicode 类型, 跟字符串定制一样 |
datetime64[ns] |
时间格式 |
可以通过 info()
方法获取数据类型, 还可以用 dtpye
来获取一列的数据类型
类型转换
1 | df['字段名'].dtpye # 通过 dtpye 先查看字段类型 |
索引设置
索引的存在便是,便于我们查找数据
为无索引表添加索引
- 如果索引,在 python 导入时会默认从 0 开始的自然数做索引。
- 通过
columns
传入横排索引,index
参数出入竖排索引
重设索引
通常现有索引并不是我们需要的索引,比如销售订单表,我们是以序号为索引但是我实际需求订单号为索引,这种情况下我们就需要重设索引。
1 | df.set_index('订单号') # 我们就可以将订单号这个字段设为索引 |
重命名索引
可以通过
rename
方法来重命名
1 | df.rename( |
columns 控制修改竖排字段名, index 修改横排索引
重制索引
在有层次表中,需要用到这个方法。
rest_index()
常用于数据分组、数据透视表中。
rest_index()
方法简介
参数 | 说明 |
---|---|
level |
指定要将层次化索引的的第几级别转换为 columns, 默认全部设为 |
drop |
指定是否将索引删掉, 默认索引全部转化为 columns |
inplace |
指定是否修改原数据表 |
1 | """ |