首先,需要明确一下什么是数据清洗。数据清洗是一种处理数据异常值、缺失值、重复值等不合法数据的过程,它是数据处理中不可缺少的一环。Pandas是一种Python的数据处理工具,它提供了很多数据清洗函数来方便数据处理。
Pandas数据清洗函数总结
1. 数据信息观测
在进行数据清洗之前,需要对数据进行观测,了解数据的基本情况。Pandas提供了以下几个函数来实现数据观测:
- head():查看数据集的前几行数据,默认是前5行。
- tail():查看数据集的后几行数据,默认是后5行。
- info():查看数据集的基本信息,包括每列数据的数据类型、数据条数等。
- describe():查看数据集的统计信息,包括每列数据的数量、均值、标准差等。
举个例子,假设我们有以下数据集:
import pandas as pd
data = {'name': ['Tom', 'Jerry', 'Mike', 'Jack', 'Lucy'],
'age': [24, 23, 25, 26, 27],
'score': [87.5, 91.2, 85.3, 94.1, 90.8],
'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen', 'Chengdu']}
df = pd.DataFrame(data)
执行以下代码:
print(df.head())
print(df.tail())
print(df.info())
print(df.describe())
输出如下结果:
name age score city
0 Tom 24 87.5 Beijing
1 Jerry 23 91.2 Shanghai
2 Mike 25 85.3 Guangzhou
3 Jack 26 94.1 Shenzhen
4 Lucy 27 90.8 Chengdu
name age score city
0 Tom 24 87.5 Beijing
1 Jerry 23 91.2 Shanghai
2 Mike 25 85.3 Guangzhou
3 Jack 26 94.1 Shenzhen
4 Lucy 27 90.8 Chengdu
<class 'pandas.core.frame.DataFrame'>
RangeIndex: 5 entries, 0 to 4
Data columns (total 4 columns):
# Column Non-Null Count Dtype
--- ------ -------------- -----
0 name 5 non-null object
1 age 5 non-null int64
2 score 5 non-null float64
3 city 5 non-null object
dtypes: float64(1), int64(1), object(2)
memory usage: 288.0+ bytes
None
age score
count 5.000000 5.000000
mean 25.000000 89.780000
std 1.581139 3.553255
min 23.000000 85.300000
25% 24.000000 87.500000
50% 25.000000 90.800000
75% 26.000000 91.200000
max 27.000000 94.100000
2. 数据去重
在数据中,经常会出现重复记录的情况,需要将重复的记录去除。Pandas提供了以下函数来实现数据去重:
- drop_duplicates():去除完全重复的记录。
- duplicated():查看哪些记录是重复的。
举个例子,假设我们有以下数据集:
import pandas as pd
data = {'name': ['Tom', 'Jerry', 'Mike', 'Jack', 'Lucy', 'Lucy'],
'age': [24, 23, 25, 26, 27, 27],
'score': [87.5, 91.2, 85.3, 94.1, 90.8, 90.8],
'city': ['Beijing', 'Shanghai', 'Guangzhou', 'Shenzhen', 'Chengdu', 'Chengdu']}
df = pd.DataFrame(data)
执行以下代码:
print(df.drop_duplicates())
print(df.duplicated())
输出如下结果:
name age score city
0 Tom 24 87.5 Beijing
1 Jerry 23 91.2 Shanghai
2 Mike 25 85.3 Guangzhou
3 Jack 26 94.1 Shenzhen
4 Lucy 27 90.8 Chengdu
name age score city
0 False False False False
1 False False False False
2 False False False False
3 False False False False
4 False False False False
5 True True True True
从结果中可以看出,使用drop_duplicates()函数去掉了重复记录,并返回新的数据集。而使用duplicated()函数,则返回了各个记录是否重复的布尔值。