如何处理包含非数值数据的CSV文件中的数值列

来源:建站作者:深圳网站建设头衔:草根站长
导读:本期聚焦于小伙伴创作的《如何处理包含非数值数据的CSV文件中的数值列》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《如何处理包含非数值数据的CSV文件中的数值列》有用,将其分享出去将是对创作者最好的鼓励。

在实际的数据处理场景中,CSV文件是非常常见的数据存储格式,但很多时候我们拿到的CSV文件中,本该是数值类型的列里会混入各种非数值数据,比如空字符串、字母、特殊符号甚至是格式错误的日期内容,这些非数值数据会导致后续做数值计算、统计分析时出现报错或者结果偏差,因此需要针对性地对数值列做清洗处理。

如何处理包含非数值数据的CSV文件中的数值列

常见的非数值数据类型

在CSV的数值列中,常见的非数值数据可以分为以下几类:

  • 空值类:包括空字符串、NaNNone等缺失值标识
  • 文本类:列中混入的字母、汉字、无意义文本字符串
  • 符号类:比如千分位逗号、货币符号、百分号等干扰符号
  • 格式错误类:比如日期被错误存到数值列、数值带单位等

使用pandas识别数值列中的非数值数据

我们可以借助pandas库读取CSV文件后,先定位数值列,再识别其中的非数值内容,示例代码如下:

import pandas as pd

# 读取CSV文件
df = pd.read_csv("test_data.csv")
# 假设要处理的数值列名为score
target_col = "score"
# 先将列尝试转换为数值类型,无法转换的会变为NaN
df[target_col] = pd.to_numeric(df[target_col], errors="coerce")
# 筛选出非数值所在的行
invalid_rows = df[df[target_col].isna()]
print("非数值数据所在行:")
print(invalid_rows)

非数值数据的处理方案

1. 替换异常值为默认值

如果非数值数据占比很小,且业务允许用默认值填充,可以直接替换:

# 将非数值替换为0,也可以替换为列的平均值等
default_value = 0
df[target_col] = df[target_col].fillna(default_value)
print("替换后的列数据:")
print(df[target_col].head())

2. 删除包含非数值的行

如果非数值数据属于无效样本,可以直接删除对应行:

# 删除数值列中为NaN的行
df_clean = df.dropna(subset=[target_col])
print("删除无效行后的数据量:", len(df_clean))

3. 清洗后再转换

如果非数值是带符号的数值,比如1,00099%,可以先做清洗再转换:

import pandas as pd

df = pd.read_csv("test_data.csv")
target_col = "score"

# 定义清洗函数,去除千分位逗号和百分号
def clean_value(val):
    if isinstance(val, str):
        # 去除逗号和百分号
        val = val.replace(",", "").replace("%", "")
    return val

# 先清洗列内容
df[target_col] = df[target_col].apply(clean_value)
# 再转换为数值类型
df[target_col] = pd.to_numeric(df[target_col], errors="coerce")
print("清洗转换后的列数据:")
print(df[target_col].head())

注意事项

处理数值列的非数值数据时,需要先和业务方确认非数值的产生原因,避免盲目删除或替换导致数据失真。另外如果CSV文件编码不是默认的utf-8,读取时需要指定正确的编码参数,避免出现乱码导致识别非数值错误。

CSV处理数值列清洗非数值数据处理pandas修改时间:2026-07-02 11:03:37

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。