在Python中,清洗数据是数据分析和机器学习过程中非常重要的一步,清洗数据的目的是去除数据集中的噪声、缺失值、异常值等,以提高数据质量,为后续的数据分析和建模打下良好的基础,本文将详细介绍如何使用Python进行数据清洗。

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()函数保存数据。

声明:本站所有文章,如无特殊说明或标注,均为本站原创发布。任何个人或组织,在未征得本站同意时,禁止复制、盗用、采集、发布本站内容到任何网站、书籍等各类媒体平台。如若本站内容侵犯了原著者的合法权益,可联系我们进行处理。