Pandas填补空栏(缺失值)是数据分析中必不可少的一环,本文将详细介绍Pandas填补空栏的完整攻略。
什么是缺失值?
在数据统计分析过程中,有些数据未被记录或未能够采集到,这就形成了某些数据所在的单元格中没有实际值,这被称为缺失值(missing data),在Pandas中,缺失值通常用 NaN(Not a Number)或None表示。
Pandas缺失值填补的方法
Pandas提供了几种用于填补缺失值的方法,包括以下方法:
- 删除缺失值
- 填充缺失值
删除缺失值
这是处理缺失值最简单的方法,而且在一些情况下也是最合适的选择。你可以使用dropna()删除缺失值所在行或列,示例如下:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, np.nan, np.nan], 'B': [4, np.nan, 6], 'C': [7, 8, 9]})
df.dropna() # 删除有缺失值的行
df.dropna(axis=1) # 删除有缺失值的列
在上面的代码中,dropna()默认是删除行(axis=0),如果需要删除列可以指定axis=1。
填充缺失值
除了删除缺失值的方法,我们还可以使用fillna()来填充缺失值,填充缺失值包括以下几种方法:
- 使用常数来填充缺失值
- 使用一个字典来填充缺失值
- 使用缺失值前面的值来填充缺失值
- 使用插值法来填补缺失值
下面分别对这四种方法进行详细讲解。
1. 使用常数来填充缺失值
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, np.nan, 3], 'B': [4, 5, np.nan], 'C': [7, 8, 9]})
df.fillna(0) # 将缺失值替换为0
在上面的代码中,我们使用fillna()方法将缺失值替换为0。
2. 使用一个字典来填充缺失值
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, np.nan, 3], 'B': [4, 5, np.nan], 'C': [7, 8, 9]})
df.fillna({'A': 0, 'B': 1, 'C': 2}) # 将A列缺失值替换为0,B列缺失值替换为1,C列缺失值替换为2
在上面的代码中,我们使用fillna()方法将字典中对应列的缺失值替换为字典中对应的值。
3. 使用缺失值前面的值来填充缺失值
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, np.nan, 3], 'B': [4, 5, np.nan], 'C': [7, 8, 9]})
df.fillna(method='ffill') # 使用缺失值前面的值来替换缺失值
在上面的代码中,我们使用fillna()方法将缺失值使用缺失值前面的值替换。
4. 使用插值法来填补缺失值
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, np.nan, 3], 'B': [4, 5, np.nan], 'C': [7, 8, 9]})
df.interpolate() # 使用线性插值法填充缺失值
在上面的代码中,我们使用fillna()方法将缺失值使用线性插值法进行填充。
示例
下面为示例代码:
import pandas as pd
import numpy as np
df = pd.DataFrame({'A': [1, np.nan, 3], 'B': [4, 5, np.nan], 'C': [7, 8, 9]})
df1 = df.dropna() # 删除有缺失值的行
df2 = df.interpolate() # 使用插值法来填补缺失值
df3 = df.fillna(method='ffill') # 使用缺失值前面的值来填补缺失值
print('删除缺失值的行:\n',df1)
print('插值法填充缺失值:\n',df2)
print('使用缺失值前面的值填充缺失值:\n',df3)
在上面的代码中,我们首先定义一个三列数据的DataFrame,包含一些缺失值。然后我们使用dropna()方法删除缺失值的行,并使用interpolate()函数使用插值法来填充缺失值,在使用fillna()方法使用缺失值前面的值进行填充。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Pandas填补空栏 - Python技术站