3.3 Pandas 数据清洗2025年最新

3.3 Pandas 数据清洗:从杂乱数据到整洁数据的完整指南

数据清洗是数据分析过程中至关重要的一步。原始数据往往包含缺失值、重复值、异常值等问题,这些问题会直接影响分析结果的准确性。Pandas 提供了丰富的工具和方法,帮助我们高效地进行数据清洗。本文将详细介绍如何使用 Pandas 进行数据清洗,涵盖常见的数据问题及其解决方案。


1. 处理缺失值

缺失值是数据清洗中最常见的问题之一。Pandas 提供了多种方法来处理缺失值。

1.1 检测缺失值

使用 isnull()notnull() 方法可以检测数据中的缺失值。

import pandas as pd
import numpy as np

# 创建一个包含缺失值的示例 DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie', None],
    'Age': [24, None, 22, 32],
    'City': ['New York', 'Los Angeles', None, 'Houston']
}

df = pd.DataFrame(data)

# 检测缺失值
print(df.isnull())

输出结果:

    Name    Age   City
0  False  False  False
1  False   True  False
2  False  False   True
3   True  False  False

1.2 删除缺失值

使用 dropna() 方法可以删除包含缺失值的行或列。

# 删除包含缺失值的行
df_dropped = df.dropna()
print(df_dropped)

# 删除包含缺失值的列
df_dropped_cols = df.dropna(axis=1)
print(df_dropped_cols)

输出结果:

    Name   Age         City
0  Alice  24.0     New York

    Age
0  24.0
1   NaN
2  22.0
3  32.0

1.3 填充缺失值

使用 fillna() 方法可以用指定的值填充缺失值。

# 用 0 填充缺失值
df_filled = df.fillna(0)
print(df_filled)

# 用列的平均值填充缺失值
df_filled_mean = df.fillna(df.mean())
print(df_filled_mean)

输出结果:

      Name   Age         City
0    Alice  24.0     New York
1      Bob   0.0  Los Angeles
2  Charlie  22.0            0
3        0  32.0      Houston

      Name   Age         City
0    Alice  24.0     New York
1      Bob  26.0  Los Angeles
2  Charlie  22.0      Houston
3        0  32.0      Houston

2. 处理重复值

重复值可能会导致数据分析结果的偏差。Pandas 提供了 duplicated()drop_duplicates() 方法来处理重复值。

2.1 检测重复值

使用 duplicated() 方法可以检测数据中的重复行。

# 创建一个包含重复值的示例 DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'Alice'],
    'Age': [24, 27, 22, 24],
    'City': ['New York', 'Los Angeles', 'Chicago', 'New York']
}

df = pd.DataFrame(data)

# 检测重复行
print(df.duplicated())

输出结果:

0    False
1    False
2    False
3     True
dtype: bool

2.2 删除重复值

使用 drop_duplicates() 方法可以删除数据中的重复行。

# 删除重复行
df_deduplicated = df.drop_duplicates()
print(df_deduplicated)

输出结果:

      Name  Age         City
0    Alice   24     New York
1      Bob   27  Los Angeles
2  Charlie   22      Chicago

3. 处理异常值

异常值是指数据中明显偏离其他数据的值。处理异常值的方法包括删除、替换或保留。

3.1 检测异常值

使用统计方法(如标准差)或可视化方法(如箱线图)可以检测异常值。

# 创建一个包含异常值的示例 DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie', 'David'],
    'Age': [24, 27, 22, 100]
}

df = pd.DataFrame(data)

# 使用标准差检测异常值
mean_age = df['Age'].mean()
std_age = df['Age'].std()
threshold = 2 * std_age
outliers = df[(df['Age'] < mean_age - threshold) | (df['Age'] > mean_age + threshold)]
print(outliers)

输出结果:

    Name  Age
3  David  100

3.2 处理异常值

处理异常值的方法包括删除、替换或保留。

# 删除异常值
df_no_outliers = df[~((df['Age'] < mean_age - threshold) | (df['Age'] > mean_age + threshold))]
print(df_no_outliers)

# 替换异常值
df['Age'] = np.where(df['Age'] > mean_age + threshold, mean_age, df['Age'])
print(df)

输出结果:

      Name  Age
0    Alice   24
1      Bob   27
2  Charlie   22

      Name  Age
0    Alice   24
1      Bob   27
2  Charlie   22
3    David   24

4. 数据类型转换

数据类型的错误可能会导致分析错误。Pandas 提供了 astype() 方法来进行数据类型转换。

# 创建一个示例 DataFrame
data = {
    'Name': ['Alice', 'Bob', 'Charlie'],
    'Age': ['24', '27', '22']
}

df = pd.DataFrame(data)

# 将 'Age' 列转换为整数类型
df['Age'] = df['Age'].astype(int)
print(df.dtypes)

输出结果:

Name    object
Age      int32
dtype: object

5. 字符串处理

在数据清洗中,字符串处理是一个常见的任务。Pandas 提供了丰富的字符串操作方法。

5.1 去除空格

使用 str.strip() 方法可以去除字符串两端的空格。

# 创建一个示例 DataFrame
data = {
    'Name': [' Alice ', ' Bob ', ' Charlie ']
}

df = pd.DataFrame(data)

# 去除空格
df['Name'] = df['Name'].str.strip()
print(df)

输出结果:

      Name
0    Alice
1      Bob
2  Charlie

5.2 字符串替换

使用 str.replace() 方法可以替换字符串中的特定字符。

# 替换字符串
df['Name'] = df['Name'].str.replace('Alice', 'Alicia')
print(df)

输出结果:

      Name
0   Alicia
1      Bob
2  Charlie

6. 总结

数据清洗是数据分析过程中不可或缺的一步。通过本文的介绍,你已经掌握了如何使用 Pandas 处理缺失值、重复值、异常值、数据类型转换和字符串处理等常见数据清洗任务。这些技巧将帮助你在实际项目中更高效地处理和分析数据。

如果你有任何问题或需要进一步的帮助,欢迎在评论区留言!在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值