在Python中,清洗数据是数据分析和机器学习过程中非常重要的一步,清洗数据的目的是去除数据集中的噪声、缺失值、异常值等,以提高数据质量,为后续的数据分析和建模打下良好的基础,本文将详细介绍如何使用Python进行数据清洗。
(图片来源网络,侵删)
导入所需库
在进行数据清洗之前,我们需要导入一些常用的Python库,如pandas、numpy、matplotlib等。
import pandas as pd import numpy as np import matplotlib.pyplot as plt
读取数据
我们需要读取待清洗的数据,这里以CSV文件为例,使用pandas库的read_csv()函数读取数据。
data = pd.read_csv('data.csv')
查看数据基本信息
在开始清洗数据之前,我们需要先查看数据的基本信息,如列名、数据类型、空值数量等,这有助于我们了解数据的基本情况,为后续的数据清洗提供指导。
print(data.info()) print(data.describe())
处理缺失值
1、判断缺失值:使用isnull()函数判断数据集中的缺失值。
print(data.isnull().sum())
2、删除缺失值:使用dropna()函数删除包含缺失值的行或列。
删除包含缺失值的行 data_no_missing_rows = data.dropna() 删除包含缺失值的列 data_no_missing_columns = data.dropna(axis=1)
3、填充缺失值:根据具体情况选择合适的填充方法,如使用均值、中位数、众数等填充。
使用均值填充缺失值 data_mean_filled = data.fillna(data.mean()) 使用中位数填充缺失值 data_median_filled = data.fillna(data.median()) 使用众数填充缺失值(仅适用于分类变量) data_mode_filled = data.fillna(data.mode().iloc[0])
处理重复值
1、判断重复值:使用duplicated()函数判断数据集中的重复行。
print(data[data.duplicated()].count())
2、删除重复值:使用drop_duplicates()函数删除重复行。
data_no_duplicates = data.drop_duplicates()
处理异常值
1、箱线图:使用boxplot()函数绘制箱线图,观察数据的分布情况,找出异常值。
plt.boxplot(data) plt.show()
2、基于规则:根据业务知识,设定异常值的判断规则,如某列数值超过平均值的3倍标准差等,然后使用条件筛选法筛选出异常值。
假设我们要筛选出age列中大于60的异常值 outliers = data[data['age'] > 60]
3、替换异常值:根据实际情况,选择合适的方法替换异常值,如使用均值、中位数等替换。
使用均值替换异常值(仅适用于数值变量) data_mean_replaced = data[data['age'] > 60].replace(data['age'], data['age'].mean())
处理不一致的数据格式和数据类型
1、转换数据类型:使用astype()函数将数据转换为合适的数据类型,将字符串类型的日期转换为datetime类型。
data['date'] = pd.to_datetime(data['date']).astype(int) # 将字符串类型的日期转换为整数类型的日期戳表示形式(仅适用于pandas中的Datetime类型)
2、重命名列名:使用rename()函数重命名列名,使其更符合业务逻辑,将“old_column”重命名为“new_column”。
data = data.rename(columns={'old_column': 'new_column'}) # 将“old_column”重命名为“new_column”
保存清洗后的数据
清洗完成后,我们可以将清洗后的数据保存到新的文件中,这里以CSV文件为例,使用to_csv()函数保存数据。
评论(0)