计算Pandas DataFrame中一个或多个列的NaN值的完整攻略需要分为以下几步:
- 选择要计算NaN值的列;
- 使用isna()函数选择该列中所有的NaN值;
- 对isna()函数返回的结果使用sum()函数求和;
- 将求和结果除以总行数,即可得到该列中NaN值的占比。
以下是详细过程和代码实例:
首先,创建一个包含NaN值的DataFrame。
import pandas as pd
import numpy as np
df = pd.DataFrame({
'A': [1, np.nan, 3, 4],
'B': [5, 6, np.nan, np.nan],
'C': [np.nan, np.nan, np.nan, np.nan],
'D': ['a', 'b', 'c', 'd']
})
print(df)
输出结果为:
A B C D
0 1.0 5.0 NaN a
1 NaN 6.0 NaN b
2 3.0 NaN NaN c
3 4.0 NaN NaN d
接下来,计算列A中的NaN值占比。
nan_percentage = df['A'].isna().sum() / df['A'].shape[0]
print(nan_percentage)
输出结果为:
0.5
代码解释:通过isna()函数选出A列中的所有NaN值,使用sum()函数求和,然后再除以总行数即可得到该列中NaN值的占比。
同样的方法可以计算其他列中的NaN值占比,只需要更改列名即可。
# 列B中NaN值的占比
nan_percentage = df['B'].isna().sum() / df['B'].shape[0]
print(nan_percentage)
# 列C中NaN值的占比
nan_percentage = df['C'].isna().sum() / df['C'].shape[0]
print(nan_percentage)
输出结果为:
0.5
1.0
代码解释:B列中有2个NaN值,总共有4行数据,所以占比为0.5。C列中有4个NaN值,总共有4行数据,所以占比为1.0。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:计算Pandas DataFrame中一个或多个列的NaN值 - Python技术站