2. 从字典创建DataFrame并处理缺失值

任务说明

本案例要求使用Pandas从Python字典创建DataFrame,并处理其中的缺失值。具体目标为:构造一个包含员工信息的字典数据,将其转换为DataFrame,识别缺失值位置,并通过填充与删除两种方式完成缺失值处理,最终输出处理后的数据形态。

实现代码

import pandas as pd
import numpy as np

# 1. 从字典创建DataFrame(包含缺失值)
data = {
    '姓名': ['张伟', '李娜', '王强', '赵敏'],
    '部门': ['研发', '市场', np.nan, '财务'],
    '薪资': [15000, np.nan, 12000, 18000],
    '入职年份': [2018, 2020, 2019, np.nan]
}

df = pd.DataFrame(data)
print("原始DataFrame:")
print(df)
print("\n缺失值统计:")
print(df.isnull().sum())

# 2. 处理缺失值——方式一:填充
df_filled = df.copy()
# 数值列用均值填充,文本列用"未知"填充
df_filled['薪资'] = df_filled['薪资'].fillna(df_filled['薪资'].mean())
df_filled['部门'] = df_filled['部门'].fillna('未知')
df_filled['入职年份'] = df_filled['入职年份'].fillna(df_filled['入职年份'].mean()).astype(int)
print("\n填充后的DataFrame:")
print(df_filled)

# 3. 处理缺失值——方式二:删除含缺失值的行
df_dropped = df.dropna()
print("\n删除含缺失值行后的DataFrame:")
print(df_dropped)

代码说明

代码首先导入Pandas和NumPy库,构造包含4行4列的字典数据,其中“部门”“薪资”“入职年份”三列各含一个np.nan缺失值。通过pd.DataFrame()将字典转为DataFrame,并用isnull().sum()统计各列缺失数量。随后采用两种策略处理缺失值:填充法对数值列“薪资”和“入职年份”使用均值填充(年份填充后转为整数),对文本列“部门”使用“未知”填充;删除法直接调用dropna()移除任何含缺失值的行。

运行与验证

在已安装Pandas和NumPy的Python环境中运行上述代码。预期输出依次为:原始DataFrame完整显示4行数据;缺失值统计显示“部门”“薪资”“入职年份”各为1;填充后的DataFrame中所有缺失位置被均值或“未知”替代,且无NaN;删除后的DataFrame仅保留“张伟”和“赵敏”两行完整数据。若输出与此一致,则验证通过。

缺失值处理流程 字典数据 含3个NaN pd.DataFrame() 创建DataFrame isnull().sum() 检测缺失位置 策略一:填充 策略二:删除 fillna() 数值列→均值填充 文本列→"未知"填充 年份均值后转int dropna() 删除含NaN的行 保留完整数据行 df_filled 无缺失值,4行保留 df_dropped 仅2行完整数据