我正在处理信用风险分析项目的缺失数据。 Dataframe 的许多列中都缺少值。 数据框loan_data如下:
[IN]: loan_data
[OUT]:
Emp_ID Emp_Name City_Name Salary Designation Emp_years Age
1 A Delhi 30,00,000 GM 15 45
2 B Mumbai NAN Clerk 2 22
3 c NAN NAN Peon 4 18
4 D Chennai 7,000 NAN 5 20
5 E NAN NAN NAN 4 50
等等....
现在我想要显示的唯一列应该是那些我有 NAN 值的列,我想要它们的总和(有多少行有 NAN 值
例如,
[IN]:
def return_loan_data_missing(x):
if (x.isnull().sum()>0):
return x.isnull().sum()
return_loan_data_missing(loan_data)
[OUT]:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(),
a.item(), a.any() or a.all().
所需的输出:
[OUT]:
City_Name 2
Salary 3
Designation 2
现在我得到的输出:
[IN]:
loan_data.isnull().sum()
[OUT]:
Emp_ID 0
Emp_Name 0
City_Name 2
Salary 3
Designation 2
Emp_years 0
Age 0
请帮忙
请您参考如下方法:
您可以过滤 Series 以获得更大的 0:
s = loan_data.isnull().sum()
s = s[s > 0]
或者使用callable用于过滤:
s = loan_data.isnull().sum().loc[lambda x: x > 0]
print (s)
City_Name 2
Salary 3
Designation 2
dtype: int64
你的函数应该被更改为 test if at least one True in mask by Series.any :
def return_loan_data_missing(x):
s = x.isnull().sum()
m = s > 0
if m.any():
return s[m]
else:
return 'No missing value in data.'
print (return_loan_data_missing(loan_data))
City_Name 2
Salary 3
Designation 2
dtype: int64
