Python打卡训练营第四日实战指南
初识pandas库与缺失数据的补全
按照示例代码的要求,去尝试补全信贷数据集中的数值型缺失值
- 打开数据(csv文件、excel文件)
- 查看数据(尺寸信息、查看列名等方法)
- 查看空值
- 众数、中位数填补空值
- 利用循环补全所有列的空值
完成后在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