Scania气压系统故障数据集:如何用均值替换数据框中的零值?
用均值替换Scania气压系统故障数据集中的零值
以下是基于Python(Pandas)和R两种常用工具的实现方法,替换前需确认零值代表缺失/无效数据(而非业务上的合理值):
Python(Pandas)实现
import pandas as pd # 加载数据集(替换为你的文件路径) df = pd.read_csv("scania_air_pressure_failures.csv") # 方法1:遍历数值列逐一替换 for col in df.select_dtypes(include=['int64', 'float64']).columns: # 计算该列非零值的均值(避免零值干扰均值计算) non_zero_mean = df[df[col] != 0][col].mean() # 将列中的0替换为对应均值 df[col] = df[col].replace(0, non_zero_mean) # 方法2:更简洁的apply写法 df = df.apply( lambda x: x.replace(0, x[x != 0].mean()) if x.dtype in ['int64', 'float64'] else x )
R语言实现
# 加载数据集(替换为你的文件路径) df <- read.csv("scania_air_pressure_failures.csv") # 定义替换函数:将列内零值替换为非零值的均值 replace_zero_with_mean <- function(column) { col_mean <- mean(column[column != 0], na.rm = TRUE) column[column == 0] <- col_mean return(column) } # 应用函数到所有数值型列 df[, sapply(df, is.numeric)] <- lapply(df[, sapply(df, is.numeric)], replace_zero_with_mean)
关键注意事项
- 先通过
df[df == 0].count()(Python)或colSums(df == 0)(R)查看各列零值数量,确认是否需要替换 - 如果部分列的零值是业务合理值(比如表示"无故障"),需单独排除这些列,不要盲目全局替换
内容的提问来源于stack exchange,提问作者Dama Vargová
相关产品推荐
相关产品推荐

