Python如何对CSV数据做清洗?数据预处理常用操作有哪些

来源:建站教程作者:上海SEO公司头衔:草根站长
导读:本期聚焦于小伙伴创作的《Python如何对CSV数据做清洗?数据预处理常用操作有哪些》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《Python如何对CSV数据做清洗?数据预处理常用操作有哪些》有用,将其分享出去将是对创作者最好的鼓励。

CSV数据清洗是数据处理流程中非常基础且重要的环节,很多原始CSV文件会因为采集、存储等原因存在各类问题,使用Python可以快速高效地完成相关预处理工作,核心依赖pandas库的能力即可实现大部分常见操作。

一、读取CSV文件

首先需要使用pandas的read_csv方法读取CSV文件,该方法支持指定编码、分隔符等参数,适配不同格式的CSV文件。

import pandas as pd

# 读取CSV文件,指定编码为utf-8,分隔符为逗号
df = pd.read_csv("test.csv", encoding="utf-8", sep=",")
# 查看前5行数据,确认读取是否正常
print(df.head())

二、处理缺失值

原始CSV中经常会出现空值或者占位符形式的缺失值,需要根据业务场景选择删除或者填充的处理方式。

1. 查看缺失值分布

可以通过isnull方法结合sum统计每一列的缺失值数量。

# 统计每列缺失值数量
missing_count = df.isnull().sum()
print(missing_count)

2. 删除缺失值

如果某行或某列的缺失值占比过高,可以直接删除对应数据。

# 删除包含任意缺失值的行
df_drop_row = df.dropna(axis=0, how="any")
# 删除缺失值占比超过50%的列
threshold = len(df) * 0.5
df_drop_col = df.dropna(axis=1, thresh=threshold)

3. 填充缺失值

对于缺失值占比较低且业务允许填充的场景,可以用均值、中位数或者固定值填充。

# 用该列均值填充数值型列的缺失值
df["age"].fillna(df["age"].mean(), inplace=True)
# 用固定值填充字符串列的缺失值
df["city"].fillna("未知", inplace=True)

三、去除重复数据

CSV中可能存在完全重复的行,或者部分关键字段重复的数据,需要按需去重。

# 去除完全重复的行,保留第一条
df_unique = df.drop_duplicates(keep="first")
# 基于指定列去重,比如根据id列去重
df_unique_id = df.drop_duplicates(subset=["id"], keep="first")

四、规范字段格式

很多CSV的字段格式不符合后续处理要求,比如日期格式错误、字符串有多余空格、数值型字段被存为字符串等,需要统一转换格式。

1. 处理日期字段

# 将字符串类型的日期转为datetime格式
df["create_time"] = pd.to_datetime(df["create_time"], format="%Y-%m-%d")

2. 清理字符串空格

# 去除字符串字段的前后空格
df["name"] = df["name"].str.strip()
# 去除字符串中的所有空格
df["phone"] = df["phone"].str.replace(" ", "", regex=False)

3. 转换数值类型

# 将字符串类型的数值转为int类型,错误值转为NaN
df["score"] = pd.to_numeric(df["score"], errors="coerce")

五、过滤异常数据

部分字段可能存在超出合理范围的异常值,比如年龄为负数、分数为负数等,需要根据规则过滤。

# 过滤年龄小于0或者大于120的异常数据
df_normal = df[(df["age"] >= 0) & (df["age"] <= 120)]
# 过滤分数为负数的异常数据
df_normal = df_normal[df_normal["score"] >= 0]

六、保存清洗后的数据

完成所有清洗操作之后,将处理后的DataFrame保存为新的CSV文件即可。

# 保存为新的CSV文件,不保留索引列
df_normal.to_csv("cleaned_test.csv", index=False, encoding="utf-8")

PythonCSV数据清洗数据预处理pandas修改时间:2026-06-30 23:54:34

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