Python打卡训练营第四日实战指南

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

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

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

完成后在py文件中独立完成一遍,并且利用debugger工具来查看属性(不借助函数显式查看)—-养成利用debugger工具的习惯

引入pandas库,读取csv文件

将数据存储到dataframe对象df中

import pandas as pd
df = pd.read_csv('train.csv')

打印数据行数,列数

print(df.shape)

输出格式:(1460, 81)

显示数据前几行

自行填入,默认为5

print(df.head(8))

输出列名

print("列名:", df.columns.tolist())

列名: ['Id', 'MSSubClass', 'MSZoning', 'LotFrontage', 'LotArea', 'Street', 'Alley', 'LotShape', 'LandContour',……

df.info()

使用df.info()可以快速获取数据“元信息”,包括数据的行数,列数,每列的非空数值数量,以及每列的数据类型

print(df.info())

输出格式如下

<class 'pandas.core.frame.DataFrame'>

RangeIndex: 1460 entries, 0 to 1459

Data columns (total 81 columns):

# Column Non-Null Count Dtype

— —— ————– —–

0         Id                         1460 non-null         int64

1         MSSubClass       1460 non-null         int64

2         MSZoning           1460 non-null         object

3         LotFrontage         1201 non-null         float64

4         LotArea               1460 non-null         int64

dtypes: float64(3), int64(35), object(43)

memory usage: 924.0+ KB

None

df.isnull.sum()

使用df.isnull.sum()统计每列的缺失值数量

print("缺失值统计:")
print(df.isnull().sum())

输出如下:

缺失值统计:

Id                         0

MSSubClass       0

MSZoning           0

LotFrontage        259

LotArea               0

MoSold                0

YrSold                 0

SaleType             0

SaleCondition     0

SalePrice            0

Length: 81, dtype: int64

填补缺失值

        数值型列(如年龄、收入):适合用中位数/均值填补(对异常值稳健)。

        类别型列(如职业、性别):只能用众数填补(高频出现的类别)。

        使用 df[列名].dtype 查看数据类型:

        int / float → 数值型

        object / category → 类别型

df.colums是列名的“列表”

对df.colums进行遍历,数值类型用.median计算中位数填补,类别类型用.mode计算众数填补

for column in df.columns:
    if df[column].isnull().any():  # 如果该列有缺失值
        if df[column].dtype in ['int64', 'float64']:  # 数值型,使用中位数填补
            fill_value = df[column].median()
        else:                                          
            fill_value = df[column].mode()[0]         # 类别型,使用众数填补
        df[column].fillna(fill_value, inplace=True)

填补缺失值后,再次运行df.isnull.sum(),帮助判断是否完成填补

作者:sak77

物联沃分享整理
物联沃-IOTWORD物联网 » Python打卡训练营第四日实战指南

发表回复