9 数据收集与清洗之数据清洗的技巧

在上一篇中,我们讨论了数据收集的方法,了解到数据的来源和获取途径。现在,我们将深入探讨数据清洗的技巧。数据清洗是数据分析过程中至关重要的一步,因为原始数据往往是杂乱无章的,可能包含错误、不一致性或缺失值。我们必须清洗数据,以确保后续分析的准确性和有效性。

一、数据清洗的主要步骤

数据清洗通常包括以下几个步骤:

  1. 去除重复数据
  2. 处理缺失值
  3. 校正错误
  4. 标准化数据格式
  5. 识别和处理异常值

接下来,我们将逐一讨论这些技巧,并结合实际案例。

1. 去除重复数据

在许多情况下,数据集中可能会存在重复的记录。例如,在客户信息中,可能因为多次提交而产生重复的客户信息。去除重复数据可以帮助我们提高数据的准确性。

1
2
3
4
5
6
7
8
9
10
11
12
import pandas as pd

# 示例数据
data = {
'customer_id': [1, 2, 2, 3, 4, 5, 5],
'name': ['Alice', 'Bob', 'Bob', 'Charlie', 'David', 'Eve', 'Eve']
}
df = pd.DataFrame(data)

# 去除重复行
df_cleaned = df.drop_duplicates()
print(df_cleaned)

输出结果为:

1
2
3
4
5
6
   customer_id     name
0 1 Alice
1 2 Bob
3 3 Charlie
4 4 David
5 5 Eve

2. 处理缺失值

缺失值在数据集中是常见的现象,可能是因为数据收集不完全或者错误。处理缺失值的方法有:

  • 删除缺失值
  • 用均值、中位数或众数填补缺失值
  • 使用插值法
1
2
3
4
5
6
7
8
9
10
# 示例数据
data_with_nan = {
'customer_id': [1, 2, None, 4, 5],
'age': [25, None, 30, 22, None]
}
df_nan = pd.DataFrame(data_with_nan)

# 用均值填补缺失值
df_nan['age'].fillna(df_nan['age'].mean(), inplace=True)
print(df_nan)

输出结果为:

1
2
3
4
5
6
   customer_id   age
0 1.0 25.0
1 2.0 26.25
2 NaN 30.0
3 4.0 22.0
4 5.0 26.25

3. 校正错误

有时数据中可能包含错误,如拼写错误或格式不一致。我们可以使用字符串处理函数对数据进行校正。

1
2
3
4
5
6
7
8
9
# 示例数据
data_with_errors = {
'product': ['apple', 'Banana', 'banAnA', 'Cherry', 'cherry', 'kiwi']
}
df_errors = pd.DataFrame(data_with_errors)

# 校正拼写错误,统一为小写
df_errors['product'] = df_errors['product'].str.lower()
print(df_errors)

输出结果为:

1
2
3
4
5
6
7
   product
0 apple
1 banana
2 banana
3 cherry
4 cherry
5 kiwi

4. 标准化数据格式

在我们的数据集中,不同的格式可能会导致分析的结果不一致。常见的标准化操作包括日期格式的统一,字符串的格式化等。

1
2
3
4
5
6
7
8
9
# 示例数据
data_dates = {
'date': ['2023-01-01', '01/02/2023', 'March 3, 2023']
}
df_dates = pd.DataFrame(data_dates)

# 标准化日期格式
df_dates['date'] = pd.to_datetime(df_dates['date'])
print(df_dates)

输出结果为:

1
2
3
4
       date
0 2023-01-01
1 2023-02-01
2 2023-03-03

5. 识别和处理异常值

异常值可能影响我们的分析结果。识别异常值的常用方法有 Z-score 和 IQR 规则。通过这些方法,可以检测到超出预期值的异常数据,并进行处理。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 示例数据
data_with_outliers = {
'score': [55, 70, 65, 80, 90, 200] # 200 是异常值
}
df_outliers = pd.DataFrame(data_with_outliers)

# 使用 IQR 方法检测异常值
Q1 = df_outliers['score'].quantile(0.25)
Q3 = df_outliers['score'].quantile(0.75)
IQR = Q3 - Q1

# 定义异常值的范围
lower_bound = Q1 - 1.5 * IQR
upper_bound = Q3 + 1.5 * IQR

# 标记异常值
df_outliers['is_outlier'] = (df_outliers['score'] < lower_bound) | (df_outliers['score'] > upper_bound)
print(df_outliers)

输出结果为:

1
2
3
4
5
6
7
   score  is_outlier
0 55 False
1 70 False
2 65 False
3 80 False
4 90 False
5 200 True

二、总结

数据清洗是数据分析中不可或缺的一部分,它的质量直接影响分析结果的可靠性。通过去除重复数据、处理缺失值、校正错误、标准化数据格式以及识别和处理异常值等技巧,我们可以显著提高数据集的质量,为后续的数据分析打下坚实的基础。

在下一篇中,我们将讨论数据处理中的常见问题,确保在分析过程中能够更好地应对各种挑战。保持关注!

9 数据收集与清洗之数据清洗的技巧

https://zglg.work/data-analysis-zero/9/

作者

IT教程网(郭震)

发布于

2024-08-10

更新于

2024-08-10

许可协议

分享转发

交流

更多教程加公众号

更多教程加公众号

加入星球获取PDF

加入星球获取PDF

打卡评论