在数据分析中,数据清洗是极为关键的一步,能提升数据质量,为后续分析奠定良好基础。以下是Pandas进行数据清洗的通用流程:

1. 数据加载

在开始清洗前,需要把数据加载到 Pandas 的 DataFrameSeries 中。不同格式的数据有不同的加载方法。

import pandas as pd

# 加载 CSV 文件
csv_data = pd.read_csv('data.csv')

# 加载 Excel 文件
excel_data = pd.read_excel('data.xlsx')

2. 数据概览

对数据有整体的认识,查看数据的基本信息、行数、列数、数据类型以及缺失值情况等。

# 查看数据基本信息
print('数据基本信息:')
csv_data.info()

# 查看数据集行数和列数
rows, columns = csv_data.shape

if rows < 1000:
    # 短表数据(行数少于1000)查看全量数据信息
    print('数据全部内容信息:')
    print(csv_data.to_csv(sep='\t', na_rep='nan'))
else:
    # 长表数据查看数据前几行信息
    print('数据前几行内容信息:')
    print(csv_data.head().to_csv(sep='\t', na_rep='nan'))

3. 处理缺失值

数据中可能存在缺失值,需要根据具体情况选择合适的处理方法,如删除、填充等。

# 删除包含缺失值的行
data_without_nan = csv_data.dropna()

# 使用均值填充数值列的缺失值
numeric_columns = csv_data.select_dtypes(include='number').columns
csv_data[numeric_columns] = csv_data[numeric_columns].fillna(csv_data[numeric_columns].mean())

# 使用众数填充非数值列的缺失值
categorical_columns = csv_data.select_dtypes(include='object').columns
csv_data[categorical_columns] = csv_data[categorical_columns].fillna(csv_data[categorical_columns].mode().iloc[0])

4. 处理重复值

重复数据会对分析结果产生影响,需要找出并删除重复数据。

# 查找重复行
duplicated_rows = csv_data[csv_data.duplicated()]

# 删除重复行
csv_data = csv_data.drop_duplicates()

5. 处理异常值

异常值可能是数据录入错误或特殊情况导致的,需要根据业务逻辑和统计方法进行处理。

# 基于 Z-score 方法检测数值列的异常值
from scipy import stats
import numpy as np

z_scores = np.abs(stats.zscore(csv_data[numeric_columns]))
filtered_entries = (z_scores < 3).all(axis=1)
csv_data = csv_data[filtered_entries]

6. 数据类型转换

确保数据列的数据类型符合分析需求,必要时进行数据类型转换。

# 将日期列转换为日期类型
csv_data['date_column'] = pd.to_datetime(csv_data['date_column'])

# 将数值列转换为整数类型
csv_data['numeric_column'] = csv_data['numeric_column'].astype(int)

7. 处理文本数据

如果数据中包含文本列,可能需要进行文本清洗,如去除空格、转换大小写等。

# 去除字符串列的前后空格
csv_data['text_column'] = csv_data['text_column'].str.strip()

# 将字符串列转换为小写
csv_data['text_column'] = csv_data['text_column'].str.lower()

8. 数据验证与保存

在完成数据清洗后,再次验证数据的质量,确保数据清洗达到预期效果,然后将清洗后的数据保存到文件中。

# 再次查看数据基本信息
print('清洗后数据基本信息:')
csv_data.info()

# 保存清洗后的数据
csv_data.to_csv('cleaned_data.csv', index=False)

这些步骤构成了使用 Pandas 进行数据清洗的通用流程,可根据实际数据情况和分析需求进行调整。

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐