📅  最后修改于: 2023-12-03 15:08:44.010000             🧑  作者: Mango
在数据分析中,处理缺失值是一个很重要的任务。当数据集中有缺失值时,需要进行填充以保证后续的分析和建模的准确性。
在 pandas 中,可以使用 fillna()
方法来填充缺失值。下面是几种常见的填充方式。
一种简单的方法是使用常数来填充缺失值。可以使用 fillna()
方法,传入要填充的常数。例如,下面的代码将缺失值填充为 0:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, None, 4],
'B': [5, None, 7, 8]})
df.fillna(0, inplace=True)
print(df)
输出:
A B
0 1.0 5.0
1 2.0 0.0
2 0.0 7.0
3 4.0 8.0
在时间序列数据中,可以使用前一个或后一个有效值来填充缺失值。可以使用 fillna()
方法,传入参数 method='ffill'
或 method='bfill'
来实现。例如,下面的代码将缺失值使用后一个有效值填充:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, None, 4],
'B': [5, None, 7, 8]})
df.fillna(method='bfill', inplace=True)
print(df)
输出:
A B
0 1.0 5.0
1 2.0 7.0
2 4.0 7.0
3 4.0 8.0
另一种常见的方法是使用非缺失值的平均值或中位数来填充缺失值。可以使用 fillna()
方法,传入要填充的值。
下面的代码将缺失值用每列的平均值填充:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, None, 4],
'B': [5, None, 7, 8]})
df.fillna(df.mean(), inplace=True)
print(df)
输出:
A B
0 1.0 5.0
1 2.0 6.0
2 2.3333 7.0
3 4.0 8.0
如果要使用中位数来填充,可以将 df.mean()
改为 df.median()
。
可以使用插值方法来填充缺失值,例如线性插值或多项式插值。可以使用 interpolate()
方法来实现。下面的代码用线性插值法填充缺失值:
import pandas as pd
df = pd.DataFrame({'A': [1, 2, None, 4],
'B': [5, None, 7, 8]})
df.interpolate(method='linear', axis=0, inplace=True)
print(df)
输出:
A B
0 1.0 5.0
1 2.0 6.0
2 3.0 7.0
3 4.0 8.0
其他插值方法包括 method='polynomial'
(多项式插值)和 method='spline'
(样条插值)等。
上述是 pandas 中填充缺失值的几种常见方法:
选择合适的填充方法需要根据数据的具体情况来决定。