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仅保留“张伟”和“赵敏”两行完整数据。若输出与此一致,则验证通过。