Learning Pandas - fillna()填充缺失数据

使用fillna()函数填充缺失值
import pandas as pd
import numpy as np
df = pd.DataFrame(np.random.randn(7,4))
df.loc[:4,1] = np.nan
df.loc[:2,2] = np.nan
df.loc[0,:] = np.nan
df
'''
0	1	2	3
0	NaN	NaN	NaN	NaN
1	-1.198558	NaN	NaN	0.227038
2	0.569026	NaN	NaN	-0.685095
3	-1.349993	NaN	-1.715748	-0.345816
4	-1.324344	NaN	0.755861	-0.003945
5	-1.089520	0.999640	-1.011059	1.030057
6	0.578654	-0.003776	0.820553	-2.133620
'''
# 用一个数字填充缺失值
df.fillna(0)
# 用前一个数据代替缺失值:method='pad';用后一个数据代替缺失值:method='bfill'
df.fillna(method = 'bfill')
# 用一个字符串代替缺失值
df.fillna('unknown')
# 使用描述性统计的值代替缺失值,例如使用平均值代替缺失数据
df.fillna(df.mean())

根据不同的列进行缺失值处理
# 使用字典调用fillna,可以实现对不同的列填充不同的值
df.fillna({1:0.5,3:-1})
'''
0	1	2	3
0	NaN	0.500000	NaN	-1.000000
1	-1.198558	0.500000	NaN	0.227038
2	0.569026	0.500000	NaN	-0.685095
3	-1.349993	0.500000	-1.715748	-0.345816
4	-1.324344	0.500000	0.755861	-0.003945
5	-1.089520	0.999640	-1.011059	1.030057
6	0.578654	-0.003776	0.820553	-2.133620
'''
# 选择对哪些列进行缺失值的处理
df.fillna(df.mean()[:2])
# 用limit限制每列可以替代缺失值的最大数目
df.fillna('unknown',limit = 1)

fillna默认返回新对象,可以使用inplace参数实现对现有对象进行直接修改
# inplace参数:修改调用者对象而不产生副本
_ = df.fillna(0,inplace=True)
df
'''
0	1	2	3
0	0.000000	0.000000	0.000000	0.000000
1	-1.198558	0.000000	0.000000	0.227038
2	0.569026	0.000000	0.000000	-0.685095
3	-1.349993	0.000000	-1.715748	-0.345816
4	-1.324344	0.000000	0.755861	-0.003945
5	-1.089520	0.999640	-1.011059	1.030057
6	0.578654	-0.003776	0.820553	-2.133620
'''

你可能感兴趣的:(Python语言)