第5章 数据清洗与整理
- pandas数据清洗:学会常见的数据清洗方法。
- 数据合并:学会多源数据的合并和连接。
- 数据重塑:针对层次化索引,学会
stack
和unstack
的使用。 - 字符串处理:学会
DataFrame
中字符串函数的使用。
5.1 数据清洗:处理缺失值、重复数据及如何替代值
5.1.1 处理缺失值
1. 侦查缺失值
- 通过
isnull
和notnull
方法,可以返回布尔值的对象。 - 这时通过求和可以获取每列的缺失值数量,再通过求和就可以获取整个
DataFrame
的缺失值数量。
2. 删除缺失值
- 通过
dropna
方法可以删除具有缺失值的行。传入how='all'
,则只会删除全为NaN
的那些行。 - 如果需要删除列,则指定轴方向即可。
3. 填充缺失值
替换法
- 通过
fillna
方法可以将缺失值替换为常数值。 - 在
fillna
中传入字典结构数据,可以针对不同列填充不同的值,fillna
返回的是新对象,不会对原数据进行修改,可通过inplace
就地进行修改。 - 对重新索引中填充缺失值的方法同样适用于
fillna
中。 - 对于
fillna
的参数,可以通过“?”进行帮助查询。
from pandas import Series,DataFrame
import pandas as pd
import numpy as np
df1 = DataFrame([[3,5,3],[1,6,np.nan],['lili',np.nan,'pop'],[np.nan,'a','b']])
df1
df1.isnull()
df1.notnull()
df1.isnull().sum()
0 1
1 1
2 1
dtype: int64
df1.isnull().sum().sum()
3
df1.info()
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 4 entries, 0 to 3
Data columns (total 3 columns):
0 3 non-null object
1 3 non-null object
2 3 non-null object
dtypes: object(3)
memory usage: 176.0+ bytes
df1.dropna()
df2 = DataFrame(np.arange(12).reshape(3,4))
df2