pandas 是 Python 数据处理与分析的得力工具,功能强大,是数据从业者进行数据清洗的首选。本教程将系统介绍用 pandas 进行数据清洗,涵盖数据读取、缺失值与重复值处理、异常值修正、数据类型转换等要点。无论你是新手还是专业人士,都能从中获得清晰指导,为数据分析筑牢基础。
在数据分析流程里,数据清洗是关键且基础的环节,它能够提升数据质量,为后续分析工作打下良好基础。pandas 提供了丰富且强大的功能来完成数据清洗任务,以下将详细介绍使用 pandas 进行数据清洗的常见方法和示例。
访问 Python 官方网站,根据你的操作系统(Windows、Mac OS、Linux)选择合适的 Python 版本进行下载。建议下载 Python 3.x 版本,因为 Python 2 已经停止维护。
还可以从小编准备地址下载。
Python 3.7下载地址:https://pan.quark.cn/s/8268bf81f31f
Python 3.9下载地址:https://pan.quark.cn/s/9711a93276ad
Python 3.11下载地址:https://pan.quark.cn/s/9c44793cb24c
访问 Python 官方网站(https://www.python.org/),根据自己的操作系统(Windows、MacOS、Linux)下载并安装 Python 3.x 版本。安装过程中注意勾选 “Add Python to PATH”,以便在命令行中能直接使用 Python。
Python 3.7安装教程:https://blog.csdn.net/u014164303/article/details/145620847
Python 3.9安装教程:https://blog.csdn.net/u014164303/article/details/145570561
Python 3.11安装教程:https://blog.csdn.net/u014164303/article/details/145549489
在命令提示符中输入以下命令并回车,以安装 Pandas:
pip install pandas
在进行数据清洗之前,首先需要读取数据。pandas 支持多种文件格式的读取,例如 CSV、Excel 等。
mport pandas as pd
# 读取 CSV 文件
data = pd.read_csv('your_file.csv')
# 读取 Excel 文件
# data = pd.read_excel('your_file.xlsx')
数据中常常会存在缺失值,pandas 提供了多种处理缺失值的方法。
data = pd.read_csv(
'https://labfile.oss.aliyuncs.com/courses/1283/adult.data.csv')
print(data.head())
# 删除包含缺失值的行
data_without_missing_rows = data.dropna(axis=0)
# 删除包含缺失值的列
data_without_missing_columns = data.dropna(axis=1)
# 使用固定值填充缺失值
data_filled_with_constant = data.fillna(0)
# 使用前一个有效值填充缺失值(向前填充)
data_filled_forward = data.fillna(method='ffill')
# 使用后一个有效值填充缺失值(向后填充)
data_filled_backward = data.fillna(method='bfill')
# 使用均值填充数值列的缺失值
numeric_columns = data.select_dtypes(include=['number']).columns
data[numeric_columns] = data[numeric_columns].fillna(data[numeric_columns].mean())
数据中可能存在重复的记录,需要进行处理。
# 检测重复行
duplicate_rows = data.duplicated()
# 统计重复行的数量
duplicate_count = duplicate_rows.sum()
# 删除重复行
data_without_duplicates = data.drop_duplicates()
异常值可能会影响数据分析的结果,需要进行处理。
import numpy as np
# 计算数值列的 Z-Score
numeric_columns = data.select_dtypes(include=['number']).columns
z_scores = np.abs((data[numeric_columns] - data[numeric_columns].mean()) / data[numeric_columns].std())
# 找出 Z-Score 大于 3 的异常值
outliers = data[(z_scores > 3).any(axis=1)]
# 删除异常值
data_without_outliers = data[(z_scores <= 3).all(axis=1)]
# 修正异常值,例如将异常值替换为均值
data[numeric_columns] = np.where(z_scores > 3, data[numeric_columns].mean(), data[numeric_columns])
确保数据类型正确有助于后续的分析工作。
# 将某列转换为数值类型
data['column_name'] = pd.to_numeric(data['column_name'], errors='coerce')
# 将某列转换为日期类型
data['date_column'] = pd.to_datetime(data['date_column'])
数据中可能存在大小写不一致、拼写错误等问题,需要进行处理。
# 将某列的字符串转换为小写
data['string_column'] = data['string_column'].str.lower()
# 修正拼写错误
data['string_column'] = data['string_column'].replace('old_value', 'new_value')
通过以上步骤,你可以使用 pandas 对数据进行全面的清洗,提高数据的质量和可用性,为后续的数据分析工作做好准备。