数据分析三剑客之Pandas。
数据清理
检测过滤缺失值
两种丢失数据:
- None
- np.nan(NaN)
None
None是Python自带的,其类型为python object。因此,None不能参与到任何计算中。
1 | import numpy as np |
np.nan(NaN)
np.nan是浮点类型,能参与到计算中。但计算的结果总是NaN。
1 | # 查看np.nan的数据类型 |
pandas中的None与NaN
pandas中None与np.nan都视作np.nan
创建DataFrame
1 | df = DataFrame(data=np.random.randint(0,100,size=(10,8))) |
1 | #将某些数组元素赋值为nan |
pandas处理空值操作
判断函数
isnull()
notnull()
1 | df.isnull() |
df.dropna() 可以选择过滤的是行还是列(默认为行):axis中0表示行,1表示的列
1 | df.dropna(axis=0) |
填充函数 Series/DataFrame
fillna()
:value和method参数
1 | df_test = df.fillna(method='bfill',axis=1).fillna(method='ffill',axis=1) |
1 | #测试df_test中的哪些列中还有空值 |
检测过滤重复值
使用duplicated()
函数检测重复的行,返回元素为布尔类型的Series对象,每个元素对应一行,如果该行不是第一次出现,则元素为True
- keep参数:指定保留哪一重复的行数据
- 创建具有重复元素行的DataFrame
1 | import numpy as np |
- 使用drop_duplicates()函数删除重复的行
- drop_duplicates(keep=’first/last’/False)
1 | df.drop_duplicates() # 默认first |
检测过滤异常值
- 得到鉴定异常值的条件
- 使用聚合操作对数据异常检测并过滤
总结
- 检测过滤缺失值
- dropna
- fillna
- 检测过滤重复值
- drop_duplicated(keep)
- 检测过滤异常值
- 得到鉴定异常值的条件
- 将异常值对应的行删除