Appearance
1. 导入库
python
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt- pandas用于数据处理和分析,简写为
pd - numpy用于数值计算,简写为
np - matplotlib.pyplot用于数据可视化,简写为
plt(虽然代码中未实际使用绘图功能)
2. 读取数据
python
data = pd.read_csv('credit_data.csv')- 使用pandas的
read_csv函数读取名为credit_data.csv的信用数据文件 - 将数据存储在名为
data的DataFrame中
3. 数据完整性审核
python
missing_values = data.isnull().sum()data.isnull()检测DataFrame中的缺失值(NaN),返回布尔值DataFrame.sum()计算每列的缺失值数量- 结果存储在
missing_values变量中
python
duplicate_values = data.duplicated().sum()data.duplicated()检测重复行,返回布尔值Series.sum()计算重复行的总数- 结果存储在
duplicate_values变量中
python
print("缺失值统计:")
print(missing_values)
print("重复值统计:")
print(duplicate_values)- 打印缺失值统计结果
- 打印重复值统计结果
4. 数据合理性审核
python
data['is_age_valid'] = data['Age'].between(18, 70)- 创建新列
is_age_valid标记年龄是否合理 between(18, 70)检查年龄是否在18-70岁之间(合理范围)- 合理返回True,否则返回False
python
data['is_income_valid'] = data['Income'] > 2000- 创建新列
is_income_valid标记收入是否合理 - 检查收入是否大于2000(最低合理收入)
python
data['is_loan_amount_valid'] = data['LoanAmount'] < data['Income'] * 5- 创建新列
is_loan_amount_valid标记贷款金额是否合理 - 检查贷款金额是否小于收入的5倍(合理负债比例)
python
data['is_credit_score_valid'] = data['CreditScore'].between(300, 850)- 创建新列
is_credit_score_valid标记信用评分是否合理 - 检查信用评分是否在300-850之间(FICO信用评分标准范围)
5. 合理性检查结果
python
validity_checks = data[['is_age_valid', 'is_income_valid', 'is_loan_amount_valid', 'is_credit_score_valid']].all(axis=1)- 从DataFrame中选取四个合理性检查列
.all(axis=1)检查每行是否所有条件都为True(即所有字段都合理)- 结果存储在
validity_checks变量中(布尔值Series)
python
data['is_valid'] = validity_checks- 创建新列
is_valid标记整行数据是否完全合理
python
print("数据合理性检查:")
print(data[['is_age_valid', 'is_income_valid', 'is_loan_amount_valid', 'is_credit_score_valid', 'is_valid']].describe())- 打印合理性检查结果的统计摘要
describe()提供计数、唯一值、频率等统计信息
6. 数据清洗和异常值处理
python
invalid_rows = data[~data['is_valid']]- 筛选出不合理的数据行(is_valid为False的行)
~表示逻辑取反- 结果存储在
invalid_rows变量中
python
cleaned_data = data[data['is_valid']]- 筛选出合理的数据行(is_valid为True的行)
- 结果存储在
cleaned_data变量中
python
cleaned_data = cleaned_data.drop(columns=['is_age_valid', 'is_income_valid', 'is_loan_amount_valid', 'is_credit_score_valid', 'is_valid'])- 从清洗后的数据中删除所有用于标记的临时列
drop(columns=[...])删除指定列
python
cleaned_data.to_csv('cleaned_credit_data.csv', index=False)- 将清洗后的数据保存到新的CSV文件
cleaned_credit_data.csv index=False表示不保存行索引
python
print("数据清洗完成,已保存为'cleaned_credit_data.csv'")- 打印完成信息