You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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á

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.16 06:31:21