Python训练营第四天学习打卡纪实
day4 初识pandas库与缺失数据的补全
按照示例代码的要求,去尝试补全信贷数据集中的数值型缺失值
- 打开数据(csv文件、excel文件)
- 查看数据(尺寸信息、查看列名等方法)
- 查看空值
- 众数、中位数填补空值
- 利用循环补全所有列的空值
import pandas as pd
data = pd.read_csv('data.csv')
data.isnull()
data.head()
data2 = pd.read_excel('data.xlsx')
data2
data2.head(10)
data.info()
data.shape
data.describe()
data.columns
data.dtypes
data.isnull().sum()
# 循环遍历每一列
for col in data.columns:
try:
# 尝试计算中位数
median_val = data[col].median()
data[col].fillna(median_val, inplace=True)
print(f"列 '{col}' 使用中位数 {median_val} 填补空值")
except (TypeError, ValueError):
# 如果计算中位数失败,则使用众数
mode_val = data[col].mode()[0]
data[col].fillna(mode_val, inplace=True)
print(f"列 '{col}' 使用众数 {mode_val} 填补空值")
# 检查数据中的空值
data.isnull().sum()
data.head()
列 'Id' 使用中位数 3749.5 填补空值
列 'Home Ownership' 使用众数 Home Mortgage 填补空值
列 'Annual Income' 使用中位数 1168386.0 填补空值
列 'Years in current job' 使用众数 10+ years 填补空值
列 'Tax Liens' 使用中位数 0.0 填补空值
列 'Number of Open Accounts' 使用中位数 10.0 填补空值
列 'Years of Credit History' 使用中位数 17.0 填补空值
列 'Maximum Open Credit' 使用中位数 478159.0 填补空值
列 'Number of Credit Problems' 使用中位数 0.0 填补空值
列 'Months since last delinquent' 使用中位数 32.0 填补空值
列 'Bankruptcies' 使用中位数 0.0 填补空值
列 'Purpose' 使用众数 debt consolidation 填补空值
列 'Term' 使用众数 Short Term 填补空值
列 'Current Loan Amount' 使用中位数 309573.0 填补空值
列 'Current Credit Balance' 使用中位数 209323.0 填补空值
列 'Monthly Debt' 使用中位数 16076.5 填补空值
列 'Credit Score' 使用中位数 731.0 填补空值
列 'Credit Default' 使用中位数 0.0 填补空值
Id 0
Home Ownership 0
Annual Income 0
Years in current job 0
Tax Liens 0
Number of Open Accounts 0
Years of Credit History 0
Maximum Open Credit 0
Number of Credit Problems 0
Months since last delinquent 0
Bankruptcies 0
Purpose 0
Term 0
Current Loan Amount 0
Current Credit Balance 0
Monthly Debt 0
Credit Score 0
Credit Default 0
dtype: int64
今天的练习实践性就上来了,看csv/excel文件需要一些库得提前在环境中下载;数据查看get;利用for循环进行空值补全卡了有一会,之前一直在循环外计算中位数和众数总是出问题,后来用try语句理顺逻辑;.fillna(median_val, inplace=True)
: 核心部分,它执行缺失值中位数填充操作。
@浙大疏锦行
作者:我想睡觉261