Python pandas处理缺失值方法详解
在pandas中,处理缺失值是十分重要的操作,可以利用Pandas提供的dropna()、fillna()、drop()等函数进行处理。这篇文章,将详细介绍这些函数的用法和示例。
一、dropna()函数
dropna函数可以删除存在缺失值的行或列,其常用的参数有两个(axis,how)。
1. axis参数
axis表示操作的方向,axis=0时,表示删除含有缺失值的行,axis=1时,表示删除含有缺失值的列。
2. how参数
- how='any' : 只要有缺失值出现就删除该行或列。
- how='all' : 所有的值都缺失才删除该行或列。
下面是一个简单的示例:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 2, np.nan, 4], 'B': [5, np.nan, 7, 8], 'C': [9, 10, 11, 12]})
print(df)
# 删除含有缺失值的行
df_deleted_row = df.dropna(axis=0, how='any')
print(df_deleted_row)
# 删除含有缺失值的列
df_deleted_col = df.dropna(axis=1, how='any')
print(df_deleted_col)
输出结果为:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
2 NaN 7.0 11
3 4.0 8.0 12
A B C
0 1.0 5.0 9
3 4.0 8.0 12
C
0 9
1 10
2 11
3 12
二、fillna()函数
fillna函数可以填充缺失值。其常用的参数有两个(value,method)。
1. value参数
value表示指定填充的值,可以是标量,如0、1等,也可以是与原有值同索引的Series型数据。
下面是一个示例:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 2, np.nan, 4], 'B': [5, np.nan, 7, 8], 'C': [9, 10, 11, 12]})
print(df)
# 填充所有缺失值为0
df_fill_0 = df.fillna(value=0)
print(df_fill_0)
# 填充指定列缺失值为指定值
df_fill_col = df.fillna(value={'B':0, 'C':1})
print(df_fill_col)
输出结果为:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
2 NaN 7.0 11
3 4.0 8.0 12
A B C
0 1.0 5.0 9
1 2.0 0.0 10
2 0.0 7.0 11
3 4.0 8.0 12
A B C
0 1.0 5.0 9
1 2.0 0.0 10
2 NaN 7.0 11
3 4.0 8.0 12
2. method参数
method表示插值方式,这里主要介绍两种方法:ffill和bfill,前者表示用前一个非缺失值来填充,后者则是用后一个非缺失值填充。
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 2, np.nan, 4], 'B': [5, np.nan, 7, 8], 'C': [9, 10, 11, 12]})
print(df)
# ffill插值(往前填充)
df_fill_ffill = df.fillna(method='ffill')
print(df_fill_ffill)
# bfill插值(往后填充)
df_fill_bfill = df.fillna(method='bfill')
print(df_fill_bfill)
输出结果为:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
2 NaN 7.0 11
3 4.0 8.0 12
A B C
0 1.0 5.0 9
1 2.0 5.0 10
2 2.0 7.0 11
3 4.0 8.0 12
A B C
0 1.0 5.0 9
1 2.0 7.0 10
2 4.0 7.0 11
3 4.0 8.0 12
三、drop()函数
drop函数也可以删除含有缺失值的行或列。与dropna不同的是,drop函数强调对原数据集进行修改。
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, 2, np.nan, 4], 'B': [5, np.nan, 7, 8], 'C': [9, 10, 11, 12]})
print(df)
# 原数据集删除含有缺失值的行
df.dropna(axis=0, how='any', inplace=True)
print(df)
# 原数据集删除含有缺失值的列
df.dropna(axis=1, how='any', inplace=True)
print(df)
输出结果为:
A B C
0 1.0 5.0 9
1 2.0 NaN 10
2 NaN 7.0 11
3 4.0 8.0 12
A B C
0 1.0 5.0 9
3 4.0 8.0 12
C
0 9
1 10
2 11
3 12
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python pandas处理缺失值方法详解(dropna、drop、fillna) - Python技术站