Python训练营第四天学习打卡纪实

day4 初识pandas库与缺失数据的补全

   按照示例代码的要求,去尝试补全信贷数据集中的数值型缺失值

  1. 打开数据(csv文件、excel文件)
  2. 查看数据(尺寸信息、查看列名等方法)
  3. 查看空值
  4. 众数、中位数填补空值
  5. 利用循环补全所有列的空值
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

物联沃分享整理
物联沃-IOTWORD物联网 » Python训练营第四天学习打卡纪实

发表回复