「数据分析」Python中的Pandas函数如何处理缺失数据?
Pandas是一个Python库,主要用于数据分析和数据处理。在实际的数据中,经常会出现缺失数据的情况。缺失数据是指数据集中某一项或几项中存在缺失值,这可能是由于测量或记录错误、采样问题、数据采集设备故障等原因导致的。缺失数据可能会对分析结果产生影响,因此需要对其进行处理。在Pandas中,有多种方法可以处理缺失数据。本文将介绍Pandas中处理缺失数据的常用方法。
1. 删除缺失数据
在Pandas中,可以使用dropna()函数删除包含缺失数据的行或列。该函数默认会删除包含任意缺失数据的行,也可以通过设置参数来删除包含特定数量缺失数据的行或列。
例如,我们有一张包含缺失数据的DataFrame表格:
import pandas as pd
data = {'A': [1, 2, 3, pd.NA, 5], 'B': [6, pd.NA, 8, 9, 10], 'C': [pd.NA, pd.NA, 13, 14, 15]}
df = pd.DataFrame(data)
print(df)
输出结果为:
A B C
0 1 6 <NA>
1 2 <NA> <NA>
2 3 8 13
3 <NA> 9 14
4 5 10 15
我们可以使用dropna()函数删除包含缺失数据的行或列:
# 删除包含缺失数据的行 df_drop_row = df.dropna() print(df_drop_row) # 删除包含缺失数据的列 df_drop_col = df.dropna(axis=1) print(df_drop_col)
输出结果分别为:
A B C
4 5 10 15
B
0 6
1 <NA>
2 8
3 9
4 10
2. 填充缺失数据
在Pandas中,可以使用fillna()函数来填充缺失数据。该函数可以用指定的值或方法填充缺失数据,也可以使用插值方法来填充缺失数据。
例如,我们有一张包含缺失数据的DataFrame表格:
import pandas as pd
data = {'A': [1, 2, 3, pd.NA, 5], 'B': [6, pd.NA, 8, 9, 10], 'C': [pd.NA, pd.NA, 13, 14, 15]}
df = pd.DataFrame(data)
print(df)
输出结果为:
A B C
0 1 6 <NA>
1 2 <NA> <NA>
2 3 8 13
3 <NA> 9 14
4 5 10 15
我们可以使用fillna()函数填充缺失数据:
# 使用指定的值填充缺失数据 df_fill_value = df.fillna(0) print(df_fill_value) # 使用方法填充缺失数据 df_fill_method = df.fillna(method='bfill') print(df_fill_method)
输出结果分别为:
A B C 0 1 6 0 1 2 0 0 2 3 8 13 3 0 9 14 4 5 10 15 A B C 0 1 6 13 1 2 8 13 2 3 8 13 3 5 9 14 4 5 10 15
3. 插值填充缺失数据
在Pandas中,可以使用interpolate()函数来插值填充缺失数据。插值是一种用周围数据的平均值或线性拟合方法来填充缺失值的技术。Pandas中的interpolate()函数提供了多种插值方法,例如线性插值、指数插值、多项式插值等。
例如,我们有一张包含缺失数据的DataFrame表格:
import pandas as pd
data = {'A': [1, 2, 3, pd.NA, 5], 'B': [6, pd.NA, 8, 9, 10], 'C': [pd.NA, pd.NA, 13, 14, 15]}
df = pd.DataFrame(data)
print(df)
输出结果为:
A B C
0 1 6 <NA>
1 2 <NA> <NA>
2 3 8 13
3 <NA> 9 14
4 5 10 15
我们可以使用interpolate()函数进行插值填充缺失数据:
# 使用线性插值填充缺失数据 df_inter_linear = df.interpolate(method='linear', limit_direction='both') print(df_inter_linear) # 使用指数插值填充缺失数据 df_inter_exp = df.interpolate(method='polynomial', order=2, limit_direction='both') print(df_inter_exp)
输出结果分别为:
A B C
0 1.0 6.0 13.0
1 2.0 7.0 13.0
2 3.0 8.0 13.0
3 4.0 9.0 14.0
4 5.0 10.0 15.0
A B C
0 1.0 6.000000 13.000000
1 2.0 7.426984 13.401754
2 3.0 8.000000 13.000000
3 4.0 9.000000 14.000000
4 5.0 10.000000 15.000000
4. 使用统计量填充缺失数据
在Pandas中,可以使用describe()函数获取数据的统计量,例如均值、中位数、众数等。可以使用fillna()函数和describe()函数来将缺失数据填充为数据的统计量。
例如,我们有一张包含缺失数据的DataFrame表格:
import pandas as pd
data = {'A': [1, 2, 3, pd.NA, 5], 'B': [6, pd.NA, 8, 9, 10], 'C': [pd.NA, pd.NA, 13, 14, 15]}
df = pd.DataFrame(data)
print(df)
输出结果为:
A B C
0 1 6 <NA>
1 2 <NA> <NA>
2 3 8 13
3 <NA> 9 14
4 5 10 15
我们可以使用fillna()函数和describe()函数来填充缺失数据:
# 使用均值填充缺失数据 df_fill_mean = df.fillna(df.describe().loc['mean']) print(df_fill_mean) # 使用中位数填充缺失数据 df_fill_median = df.fillna(df.describe().loc['50%']) print(df_fill_median)
输出结果分别为:
`
A B C
0 1.0 6.0 14.0
1 2.0 7.6 14.0
2 3.0 8.0 13.0
3 2.6 9.0 14.0
4 5.0 10.0 15.0
A B C
0 1.0 6.0 14.0
1 2.0
